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是以@符号作为标示符的匿名函数的句柄。匿名函数的写法普通函数类似,不过函数主体放在@后第二个小括号中,@后第一个小括号中列出用到的变量。
总之,按照示例中的格式来就可以了。
运行结果: