
matlab里的ode45求解二阶微分方程问题!!求大神!!在线等!
functionxp=order2(t,x)globalHhzolamdaMRmrlomegaNBngk1k2kdeltaTpsi=atan(-k*H*0.5*sin(k...
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));
求大神!!! 展开
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));
求大神!!! 展开
1个回答
展开全部
新的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;
简单例子:
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)太复杂了我就单独写出来了
追答
没问题
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询