mAtlAB解常微分方程组

你的常微分方程组的自定义函数表述有问题.问题一:像下列三个中,不能在等式的右边出现di(1),di(2),di(3)变量.di(1)=(u1-r1*i(1)-m12*di(2)-m13*di(3))/l1;di(2)=(0-r2*i(2)-m12*di(1)-m23*di(3))/l2;di(3)=(0-r3*i(3)-m13*di(1)-m23*di(2))/l3;问题二:如用ode()求方程的数值解,u1、r1、m12、m13、l1、r2、m23、l2、r3、m13、l3必须是具体的数值,还需要有微分方程组的初始条件.问题三:如用dsolve()求方程的解析解,也存在变量过多的问题.

先在一个空白的M文件里创建一个M函数,文件名要与函数名相同,例如:文件名:differential.m 函数内容:function [dxdt] = differential(t,x)% x: 二维列向量,x(1)代表f(t)的值,x(2)代表g(t)的值% dxdt: 与x对应的对时间导数项% 这里假设a=b=1

必须先转换成一阶微分方程组,才可以解.

建立一个文件test.mfunction dx=test(t,x)dx=zeros(2,1);dx(1)=k*x(2);dx(2)=g*x(2)(m*x(1)-x(2));保存,在matlab里输入:[t,x]=ode45('test',[0 15],[25 2]);

大概这样写:首先先建立2个editor第一个用来描述方程,建立M文件;第二个用来算方程第一个editor:%%%%设y(1)=y,y(2)=dyfunction dy=fun(t,y)global M B C fdy=zeros(2,1);dy(1)=y(2);dy(2)=(f-B.*y(2)-C.*y(1)).*(in

[x,y]=dsolve('Dx=y','Dy=x','t');%应该这样写%结果如下x = -C1*exp(-t)+C2*exp(t)y = C1*exp(-t)+C2*exp(t)

这个好像是常微分方程组把,先建立一个调用式子的函数:function f=hanshu(y,x) f=[a(x(3)-x(2)); b(x(1)-0.5*sqrt(x(2)-c)); d(2.5-x(3))];然后:[x,y]=ode45('hanshu',[t_start,t_final],x0);plot(t,x);把初值和区间写上.感觉你的x1应该是x(1)把.我也正好做长微分方程,有空加我qq724918113

dsolve('D3y+D2y/x-Dy/(x^2)=x','y(500)=0,Dy(500)=0','x'),用这个能够得到y的一个含参数的解,然后根据x=0时,y为有限值来确定参数的值,之后就能解出相应的y'' 和y' ,后面那个貌似用MATLAB不太好实现,最好是自己来分析.

dslove('D2y2+0.01-2y/5/(1+(1-x)^2)=0','x','y(0)=0','Dy(1)=0')就一个式子啊

这个方程要解出来还要初始条件吧不妨设(x(0),y(0))=(A,B);还有用ode45只能得到数值解,不能给出解析式表达那么先建立一个函数文件test_fun.mfunction dx=tsst_fun(x,t)dx(1)= c-b*x(1)-w*x(1)*x(2);dx(2)=w*x(1)*x(2)-(b+m)*x(2);那么调用ode45x0=(0,0);t0=0:0.01:10;;%根据你所想要的求得值设定t0,间隔是任意的,与求解所用的步长无关,[x,t]=ode45(@test_fun,t0,x0);得到了

相关文档

matlab微分方程数值解
simulink仿真微分方程
matlab常微分方程绘图
matlab求微分方程
matlab线性常微分方程组
matlab解方程组
matlab欧拉法解常微分方程
matlab解微分方程
lhxq.net
xcxd.net
sgdd.net
zdhh.net
alloyfurniture.com
电脑版