|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
求解二阶微分方程v=1.33*0.5*(dv/dx)^2./[k-1.01*d(dv/dx)/dx],其中k是时变项,是一系列数据集,我用的ode45,代码如下:clear;clc% l* }6 w @) e- \' F
E=xlsread('jisuan.xlsx');; |/ ?3 m; m- P! W1 N
x=E(:,1); %位移,间隔为0.01
6 _. Y" _: k1 Y5 j* ?; C; N; j8 gy=E(:,2); %作用力* } W# ^6 Y4 N' n+ n
k=E(:,3); %刚度) g5 j' t: B/ n0 x8 g
m=length(k);
! P0 I3 Y6 j3 Y& R) Z( ~* q4 Xfor i=1:length(k)$ k6 m# H: u+ E
K=k(i);
/ m: v( ]" \, ^$ v- ztspan=x;
4 X$ r0 }/ ^7 C9 [, m2 ^) |% Zodefun=@(x,v)[v(2);(k(i)/1.01-(1.33*0.5*(v(2)^2)/(v(1)*0.5)))];$ ^4 K* ~, H5 F! Y% |$ x
[x,v]=ode45(odefun,tspan,[0.0096 0.042]);) `" `6 j: k5 m( s4 r) ~: L
A=[x,v]* r! a! g) ?0 h( q) w
end) i6 F7 T7 Q; x
但是结果是多个k对应的一系列v(1)v(2),我希望得到的是已知初值后各个k对应的v(1)v(2),看help也没有弄明白,还试过interp1调用和定义函数也报错了,请教各位这种有时变项的二阶微分方程要怎么求?是for循环吗还是有其他方法?
# V6 N' ]1 a1 U+ F1 ~6 ?6 Y2 p: Y- W4 g* b: S- }
|
|