作业帮 > 综合 > 作业

matlab里的ode45求解二阶微分方程问题!

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/04/30 23:04:58
matlab里的ode45求解二阶微分方程问题!
function xp=order2(t,x)
global H h z o lamda M R m r l omega N B n g k1 k2 k delta T
psi=atan(-k*H*0.5*sin(k*o-delta*t));
w=-pi*H*delta*sinh(k*(z+h))*cos(k*o-delta*t)/(T*sin(k*h))+g;
u=pi*H*delta*cosh(k*(z+h))*sin(k*o-delta*t)/(T*sinh(k*h));
f=((w+g)*sin(psi)+u*cos(psi))/R;
xp=zeros(2,1);
xp(1)=x(2);
xp(2)=-x(2)*k1/k2+f*sin(x(1));
end
主要就是xp(2)=-x(2)*k1/k2+f*sin(x(1));这一句,k1和k2都是主程序里算出的常数,是不是global定义一下就行啦?还有f是上面算出来的,为什么带不进方程里 提示错误是
In an assignment A(I) = B,the number of elements in B and I must be the same.
Error in order2 (line 10)
xp(2)=-x(2)*k1+f*sin(x(1));
matlab里的ode45求解二阶微分方程问题!
新的matlab版本好像不鼓励采用global了.你的全局变量有点多了,哈哈.
简单例子:
m=2;
[t,y]=ode45(@(t,x)f1(t,x,m),[0,10],[2])
function dy=f1(t,x,m)
y=m-x;
再问: 那我下面写的对吗,就是方程里有一个f(t)太复杂了我就单独写出来了
再答: 没问题