[Matlab][隐式常微分方程组]ODE15i中odefun中的y'应该如何输入

dsolve中我知道可以直接使用Dy,D2y。
ODE45等解显式常微分方程只要输入odefun=y'=f(t,y),不涉及微分算符。
但是ODE15i解隐式方程的时候,要求输入odefun=f(t,y,y'),我尝试了字符串输,比如't+y+Dy',但是系统不接受,定义syms变量再inline也不行,,请问这个应该怎么输入呢,十分感谢

根据ode15i文档中所说,odefun的格式必须为

  作为参数odefun的应该是Function Handles ,即函数句柄。例子如下:

>> fhandle = @(t,y,Dy)(t*y^2*(Dy)^3-y^3*(Dy)^2+t*(t^2+1)*Dy-t^2*y)

fhandle = 

    @(t,y,Dy)(t*y^2*(Dy)^3-y^3*(Dy)^2+t*(t^2+1)*Dy-t^2*y)

>> [t,y] = ode15i(fhandle,[1 10],sqrt(3/2),0);

>> ytrue = sqrt(t.^2 + 0.5);

>> plot(t,y,t,ytrue,'o');


主要问题在于fhandle,在这个例子中fhandle是以@符号作为标示符的匿名函数的句柄。匿名函数的写法普通函数类似,不过函数主体放在@后第二个小括号中,@后第一个小括号中列出用到的变量。


总之,按照示例中的格式来就可以了。

运行结果:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-08
指数函数采用函数:
exp(x)
自然对数函数:log(x),默认底数为e
常用对数函数:log10(x)
在结果中常见的10e-4,不是有效表达式,不能使用,实际表示的是10^-4