使用ODE45 Matlab软件包时出错

普兰加尔

我是matlab的新手,正在尝试实现RungaKutta方法来使用ODE45求解三阶联立微分方程。编写以下代码是通过在线提供的文章和论文来寻求帮助。我收到以下错误。有人可以看看吗?

我要解决的方程组是: 方程组

档案:freeconvect.m

function Y=freeconvect(eta,X,Pr,Le)
% X=(F0; F1; F2; Theta0; Theta1; Phi0; Phi1)
Nb=0;
Nt=0;
dF0deta=X(2);
df1deta=X(3);
dF2deta=((X(2))^2)-(X(1)*X(3));%-3*X(1)*X(3)+2*(X(2))^2-X(4);
dTheta0deta=X(5);
%dTheta1deta=((-1)*Pr)*((X(1)*X(5))+(Nb*X(7)*X(5))+(Nt*(X(7))^2));%-3*Pr*X(1)*X(5);
dPhi0deta=X(7);
dPhi1deta=(-1)*((Le*X(1)*X(5))+((Nt/Nb)*((-1)*Pr)*((X(1)*X(5))+(Nb*X(7)*X(5))+(Nt*        (X(7))^2))));%-3*Pr*X(1)*X(5);
Y=[dF0deta; dF1deta; dF2deta; dTheta0deta; dPhi0deta; dPhi1deta];

文件:Untitled3.m

% ODE45 Solver for freeconvect.m
Pr=10;
Le=10;
etaspan=[0 10] ;
Xinit=[0;1;1;1;1;1;1];
[Eta,X]=ode45(@freeconvect,etaspan,Xinit,Pr,Le);
plot(Eta,X);

错误 - - - - - - - - - - - - - - - - - - - - - - - - - ------

>> Untitled3
Attempted to access X(7); index out of bounds because numel(X)=6.

Error in freeconvect (line 10)
dPhi0deta=X(7);

Error in odearguments (line 88)
f0 = feval(ode,t0,y0,args{:});   % ODE15I sets args{1} to yp0.

Error in ode45 (line 114)
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...

Error in Untitled3 (line 10)
[Eta,X]=ode45(@freeconvect,etaspan,Xinit,Pr,Le);
霍希勒

我认为这不是ode45解决此问题的正确工具。ode45用于解决初始价值问题根据您的“边界条件”,您会遇到一个边值问题就Matlab而言,请从此处开始

您收到的错误是由于freeconvect函数中的以下行引起的

dPhi0deta=X(7);

根据顶部的注释,X(7)Phi1,但您仅指定Xinit了六个值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章