我有一个由2个方程和已知初始条件组成的问题。这些方程式是:
dx/dt = (-a1*sin(y) + a2 + a3*sin(y-x)) / ((dy/dt)*a4*cos(y-x))
dy/dt = (a1*sin(x) -a5 + a6*x + a7*sin(y-x)) / ((dx/dt)*a8*cos(y-x))
其中a1到a8是变量。
我试图在MATLAB上绘制x与t和y与t的关系图,但我不确定如何用数值或解析的方法来解决这个问题。任何帮助都将不胜感激!!
发布于 2018-04-04 03:30:19
问题的ODE不能写成dy/dt=f(t,y)或M(t,y)dy/dt=f(t,y).这意味着它是一个微分代数方程,必须以以下形式进行数值求解:
y,dy__/dt)=0 f(t,
)
在matlab中,这可以通过命令ode15i来完成。
因此,第一步是以适当的方式编写函数,在这种情况下,一个选项是:
function f = cp_ode(t,y,yp,a)
f1 = (-a(1)*sin(y(2))+a(2)+a(3)*sin(y(2)-y(1)))/yp(2)*a(4)*cos(y(2)-y(1)) - yp(1);
f2 = (a(1)*sin(y(1))-a(5)+a(6)*y(1)+a(7)*sin(y(2)-y(1)))/yp(1)*a(8)*cos(y(2)-y(1)) - yp(2);
f = [f1 ; f2] ;
end然后,可以设置初始条件和积分时间跨度,以便调用ode15i
tspan = [0 10];
y0 = [1; 1] ;
yp0 = fsolve(@(yp)cp_ode(0,y0,yp,a),<yp0_guess>);
a = ones(1,8) ;
[t,y] = ode15i(@(t,y,yp)cp_ode(t,y,yp,a), tspan, y0, yp0);必须注意,初始条件t,y__,yp应满足方程f(t,y__,yp__)=0。这里使用fsolve来满足这个条件。
匿名函数的用途是使用参数作为输入来定义函数,然后执行在主代码中定义了参数的ODE求解器。
https://stackoverflow.com/questions/49618221
复制相似问题