inlineeval matlab,關於MATLAB中的inlineeval的錯誤

博主在MATLAB中尝试使用中点法来绘制非线性微分方程组S(t)和I(t)的图形,遇到了关于`inlineeval`错误,错误信息涉及`matrix`函数。代码中定义了两个微分方程并尝试用`inline`创建内联函数,然后进行数值求解。在循环过程中计算微分方程的解时出现问题。评论建议可能与符号变量使用有关,并提供了进一步调查的方向。
摘要由CSDN通过智能技术生成

作爲一個組項目的一部分,我們有一個2個非線性微分方程組,我們必須使用中點法繪製S = S(t),I = I(t)圖形。關於MATLAB中的inlineeval的錯誤

而我得到試圖插入與相應的微分方程的矩陣時以下錯誤:在內嵌表達式==>矩陣([[

「錯誤 - (I S)/ 1000], [(I S)/ 1000 - (3 * I)/ 10]。]),用於類型 '雙重' 的輸入參數在內嵌/的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

我是新來這個所以它很可能是錯誤的算法,但如果有人可以幫助我的錯誤我會apreciate它。謝謝!

+0

'F1'是一個內聯函數,它將調用函數'matrix'。函數'matrix'對Matlab來說是可見的,也就是說,它是在你的代碼的本地文件夾還是在路徑中? –

+0

使用「哪個矩陣」它說沒有找到,但我沒有創建任何矩陣函數 –

+0

嗯,經過一些更多的研究,我認爲我以前的評論有點誤導。我對「sym」不是很瞭解,但是你得到的錯誤應該與[this]相關。(http://www.mathworks.com/matlabcentral/answers/25281-error-in-inline-expression-matrix )。我認爲你應該嘗試從那裏出發。祝你好運! –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值