|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
求解二阶微分方程v=1.33*0.5*(dv/dx)^2./[k-1.01*d(dv/dx)/dx],其中k是时变项,是一系列数据集,我用的ode45,代码如下:clear;clc
5 a3 R; o, D$ s5 }! M, rE=xlsread('jisuan.xlsx');6 i& e+ u- |3 N/ T# h% B
x=E(:,1); %位移,间隔为0.01
. A6 Y' E: c" cy=E(:,2); %作用力
3 r( A4 s+ B$ `6 l% ?4 Ak=E(:,3); %刚度
+ G/ r) y! K! s4 fm=length(k);2 p! e, L5 Q1 E" e" l
for i=1:length(k)2 U! M+ q' K. D2 V S6 {3 n; }4 e# P
K=k(i);- y- {3 O }# X0 P0 ^
tspan=x;" w+ a! |- c/ Q5 T
odefun=@(x,v)[v(2);(k(i)/1.01-(1.33*0.5*(v(2)^2)/(v(1)*0.5)))];
9 s1 K" ^) u( C3 h3 @2 [[x,v]=ode45(odefun,tspan,[0.0096 0.042]);" ]$ Y5 {5 u- S+ k1 J* M- u
A=[x,v]: x. c, o' V: j" i
end+ W3 c2 X% l. v2 p3 y- J
但是结果是多个k对应的一系列v(1)v(2),我希望得到的是已知初值后各个k对应的v(1)v(2),看help也没有弄明白,还试过interp1调用和定义函数也报错了,请教各位这种有时变项的二阶微分方程要怎么求?是for循环吗还是有其他方法?1 \+ ?! n% s5 F6 G
* X u0 \# F1 @2 p
|
|