用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-k...
微分方程组为: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.
我不知道是为什么,请高手指点,谢谢!在线等。 展开
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.
我不知道是为什么,请高手指点,谢谢!在线等。 展开
4个回答
展开全部
该方程为非线性微分方程,不存在解析解,只能通过数值方法求解;
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)
不过结果有点问题,只能帮到这兄弟,剩下的看你的了!
展开全部
警告:函数调用函数,调用不精确匹配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 ')
? ? ?尝试执行脚本功能作为一个功能。
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 ')
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
乘号前面加个点试试.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询