【发布时间】:2015-01-05 18:39:03
【问题描述】:
作为小组项目的一部分,我们有一个由 2 个非线性微分方程组成的系统,我们必须使用中点法绘制 S=S(t) , I=I(t) 图形。
我在尝试使用相应的微分方程插入矩阵时遇到以下错误:
"内联表达式错误 ==> 矩阵([[-(IS)/1000], [(IS)/1000 - (3*I)/10]]) “double”类型的输入参数的未定义函数“matrix”。
inline/subsref 错误(第 23 行) INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);"
我做的代码如下:
syms I S
u=[S;I];
F=[-0.001*S*I;0.001*S*I-0.3*I];
F1=inline(char(F),'I','S');
h=100; %Valores aleatórios
T=100000;
ni=(T/h);
u0=[799;1];
f=zeros(1,2);
k=zeros(1,2);
i=1;
while i<=ni
f(1)=F1(u0(1));
f(2)=F1(u0(2));
dx=h*f;
k(1)=F1((u0(1)+h*(1/2)),(u0(2)+h*(1/2)));
k(2)=F1((u0(1)+h*(1/2)),(u0(2)+h*(1/2)));
u1=u0+h*k;
disp('i:'),disp(i)
disp('u= '),disp(u1)
u0=u1;
i=i+1;
end
我是新手,所以算法很可能是错误的,但如果有人可以帮助我解决这个错误,我会很感激。谢谢!
【问题讨论】:
-
F1是一个内联函数,它将调用函数matrix。函数matrix对Matlab可见吗,即是在你代码的本地文件夹中还是在路径中? -
使用“哪个矩阵”表示未找到,但我没有创建任何矩阵函数
-
嗯,经过更多研究,我认为我之前的评论有点误导。我对
sym不太了解,但您遇到的错误应该与this 有关。我认为你应该尝试从那里开始。祝你好运!
标签: matlab methods matrix inline