Index in position 1 is invalid. Array indices must be positive integers or logical values.
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Johannes Pommerening
el 2 de Jul. de 2018
Respondida: Abhinav chhabra
el 25 de Oct. de 2021
I got the problem that W is full of NaN's. Error is:
"Index in position 1 is invalid. Array indices must be positive integers or logical values.
Error in Seperationsansatz_2_lin_z (line 16) w(r,t) = W.*T;"
approach A*diff(w,r) + A*r*diff(w,r,r) -B*diff(w,t,t)
rspan = linspace(0,1);
W0 = [0; 1];
[r,W] = ode45(@odefct1,rspan, W0);
tspan = linspace(0,1);
T0 = [0;1];
[t,T] = ode45(@odefct2,tspan,T0);
w(r,t) = W.*T;
% plot(r,W(:,1),'-o',r,W(:,2),'-o')
% title('Solution');
% xlabel('Radius r');
% ylabel('Solution W');
% legend('W_1','W_2')
function dWdr = odefct1(r,W)
E = 70e7;
rho = 2.6989e-4;
ny = 0.34;
K = 1;
A = (0.5-ny);
B = rho*(1-2*ny)*(1+ny)/E;
dWdr = [ W(2); W(1)*(B*K)/A - W(2)/r];
end
function dTdt = odefct2(t,T)
K = 1;
dTdt = [T(2); K*T(1)];
end
0 comentarios
Respuesta aceptada
KSSV
el 2 de Jul. de 2018
This line:
w(r,t) = W.*T;
Replace with:
w = W.*T;
2 comentarios
Dinglie Pang
el 18 de Dic. de 2020
Thanks! It works for my error like this! Btw, what's the theory behind it? I just unitentionally type it like "w(r,t)" and didn't see the difference was made, compared with "w"
KSSV
el 18 de Dic. de 2020
When you use w(r,t).. it means w is an array an you are trying to extract indices r,t. To do this your r, t should be positive integers or logical indices. But this is not the case in present. r, t are not indices, so error. You are not supposed to use w(r,t) here.
Más respuestas (1)
Abhinav chhabra
el 25 de Oct. de 2021
Close matlab and start again. Its weird but worked for me!
all the best
0 comentarios
Ver también
Categorías
Más información sobre Ordinary Differential Equations en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!