用matlab 求解带符号的微分方程组微分方程组为:dx/dt=k1*x*y+k2*x*zdy/dt=k1*x*y+k3*y*fdz/dt=k1*x*y-k2*z*x+k3*y*fdf/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

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/26 13:52:37
用matlab 求解带符号的微分方程组微分方程组为:dx/dt=k1*x*y+k2*x*zdy/dt=k1*x*y+k3*y*fdz/dt=k1*x*y-k2*z*x+k3*y*fdf/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

用matlab 求解带符号的微分方程组微分方程组为:dx/dt=k1*x*y+k2*x*zdy/dt=k1*x*y+k3*y*fdz/dt=k1*x*y-k2*z*x+k3*y*fdf/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
用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.

用matlab 求解带符号的微分方程组微分方程组为:dx/dt=k1*x*y+k2*x*zdy/dt=k1*x*y+k3*y*fdz/dt=k1*x*y-k2*z*x+k3*y*fdf/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
该方程为非线性微分方程,不存在解析解,只能通过数值方法求解;
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)
不过结果有点问题,只能帮到这兄弟,剩下的看你的了!

警告:函数调用函数,调用不精确匹配D组: \ MATLAB7 \工具箱\ MATLAB的\浪\ function.m 。
? ? ?尝试执行脚本功能作为一个功能。
syms x0 y0
dsolve('Dx=k1*x*y+k2*x*z,Dy=k1*x*y+k3*y*f,Dz=k1*x*y-k2*z*x+k3*y*f,Df=k2*z*x-k3*y*f','x(0)=x0,y(0)=y0,z(0)=0,f(0)=0 ')

又不是矩阵的数值运算,加什么点啊

乘号前面加个点试试.