Borrar filtros
Borrar filtros

Index in position 1 is invalid. Array indices must be positive integers or logical values.

8 visualizaciones (últimos 30 días)
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

Respuesta aceptada

KSSV
KSSV el 2 de Jul. de 2018
This line:
w(r,t) = W.*T;
Replace with:
w = W.*T;
  2 comentarios
Dinglie Pang
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
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.

Iniciar sesión para comentar.

Más respuestas (1)

Abhinav chhabra
Abhinav chhabra el 25 de Oct. de 2021
Close matlab and start again. Its weird but worked for me!
all the best

Categorías

Más información sobre Ordinary Differential Equations en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by