用matlab 求解带符号的微分方程组
来源:学生作业帮 编辑:神马作文网作业帮 分类:数学作业 时间:2024/11/23 23:05:33
用matlab 求解带符号的微分方程组
微分方程组为:dx/dt=k1*x*y+k2*x*z
dy/dt=k1*x*y+k3*y*f
dz/dt=k1*x*y-k2*z*x+k3*y*f
df/dt=k2*z*x-k3*y*f
初始条件为:x(0)=x0,y(0)=y0,z(0)=0,f(0)=0
式中k1,k2,k3,k4是常数,我想用matlab求出x,y,z,f关于t的表达式.我用了dsolve()和ode45()都没弄出来,程序运行不是半天没出不来结果就是显示Warning:Function call Function invokes inexact match D:\MATLAB7\toolbox\matlab\lang\function.m.
Attempt to execute SCRIPT function as a function.
微分方程组为:dx/dt=k1*x*y+k2*x*z
dy/dt=k1*x*y+k3*y*f
dz/dt=k1*x*y-k2*z*x+k3*y*f
df/dt=k2*z*x-k3*y*f
初始条件为:x(0)=x0,y(0)=y0,z(0)=0,f(0)=0
式中k1,k2,k3,k4是常数,我想用matlab求出x,y,z,f关于t的表达式.我用了dsolve()和ode45()都没弄出来,程序运行不是半天没出不来结果就是显示Warning:Function call Function invokes inexact match D:\MATLAB7\toolbox\matlab\lang\function.m.
Attempt to execute SCRIPT function as a function.
该方程为非线性微分方程,不存在解析解,只能通过数值方法求解;
function x_dot=volt(t,x)
syms k1 k2 k3
x_dot=[1*x(1)*x(2)+2*x(1)*x(3);1*x(1)*x(2)+3*x(2)*x(4);1*x(1)*x(2)-2*x(3)*x(1)+3*x(2)*x(4);2*x(3)*x(1)-3*x(2)*x(4)];
之后在命令窗口中输入:
t_final=100;x0=[0,0,0,0]%初始值,这里k1换成了1,必须为数值
[t,x]=ode45('volt',[0,t_final],x0);
plot(t,x)
不过结果有点问题,只能帮到这兄弟,剩下的看你的了!
function x_dot=volt(t,x)
syms k1 k2 k3
x_dot=[1*x(1)*x(2)+2*x(1)*x(3);1*x(1)*x(2)+3*x(2)*x(4);1*x(1)*x(2)-2*x(3)*x(1)+3*x(2)*x(4);2*x(3)*x(1)-3*x(2)*x(4)];
之后在命令窗口中输入:
t_final=100;x0=[0,0,0,0]%初始值,这里k1换成了1,必须为数值
[t,x]=ode45('volt',[0,t_final],x0);
plot(t,x)
不过结果有点问题,只能帮到这兄弟,剩下的看你的了!