|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
求解二阶微分方程v=1.33*0.5*(dv/dx)^2./[k-1.01*d(dv/dx)/dx],其中k是时变项,是一系列数据集,我用的ode45,代码如下:clear;clc
" v1 G3 h( K9 u) o: U+ \E=xlsread('jisuan.xlsx');
$ [& _, E, i+ q' Q' w, Qx=E(:,1); %位移,间隔为0.01+ Y) ~' w2 s3 a
y=E(:,2); %作用力
3 g0 }" w4 L) z( uk=E(:,3); %刚度
% z" T+ G4 D' l8 e, Tm=length(k);( y! h* u ?2 r7 x; l- h0 y5 ~3 n, m
for i=1:length(k) G b/ o0 R. y. w6 y
K=k(i);
) J o; u5 k1 f* G' C+ r# ptspan=x;
% V* }9 @0 U& ^8 D7 eodefun=@(x,v)[v(2);(k(i)/1.01-(1.33*0.5*(v(2)^2)/(v(1)*0.5)))];
9 I, t4 H* f( D G0 k[x,v]=ode45(odefun,tspan,[0.0096 0.042]);
+ ~2 q5 l" A) h2 O7 A* B. _' I. PA=[x,v]. P7 Z9 R7 S; g6 R% f) s5 N
end1 _1 N$ k0 a0 X z/ v
但是结果是多个k对应的一系列v(1)v(2),我希望得到的是已知初值后各个k对应的v(1)v(2),看help也没有弄明白,还试过interp1调用和定义函数也报错了,请教各位这种有时变项的二阶微分方程要怎么求?是for循环吗还是有其他方法?7 {" |0 c4 e3 K% x( l
1 p+ n; i; q( D! c0 m/ L4 S% {; L
|
|