|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
求解二阶微分方程v=1.33*0.5*(dv/dx)^2./[k-1.01*d(dv/dx)/dx],其中k是时变项,是一系列数据集,我用的ode45,代码如下:clear;clc! H; P. U! a6 I7 q: B9 K0 @
E=xlsread('jisuan.xlsx');0 g0 _; P+ i6 G* m: {2 H( T1 z
x=E(:,1); %位移,间隔为0.01) G& C6 e" ?+ J4 Z S
y=E(:,2); %作用力& U. J3 L M; C! _1 R! K' ~
k=E(:,3); %刚度
$ s- f+ y7 W) U, c5 x nm=length(k);/ p/ _' e5 E! C* ~; P
for i=1:length(k)
: w& M" [' G( N, ^K=k(i);
# {( ]: _- m U7 Q: C9 Btspan=x;* f3 i! G0 J; M! R4 D7 I1 H
odefun=@(x,v)[v(2);(k(i)/1.01-(1.33*0.5*(v(2)^2)/(v(1)*0.5)))];
- ]; Z) B) B3 F: R7 s' o5 h9 H[x,v]=ode45(odefun,tspan,[0.0096 0.042]);8 j; Q$ \. O/ }9 W8 t
A=[x,v]
2 r2 U2 c+ c/ I9 l1 E+ M4 F* I1 uend( j8 h0 V9 z% G; Q- }7 k" B- U" z
但是结果是多个k对应的一系列v(1)v(2),我希望得到的是已知初值后各个k对应的v(1)v(2),看help也没有弄明白,还试过interp1调用和定义函数也报错了,请教各位这种有时变项的二阶微分方程要怎么求?是for循环吗还是有其他方法?
! V4 h+ b8 y$ O$ I0 W k c4 m g+ U6 \
|
|