|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
求解二阶微分方程v=1.33*0.5*(dv/dx)^2./[k-1.01*d(dv/dx)/dx],其中k是时变项,是一系列数据集,我用的ode45,代码如下:clear;clc$ i8 @0 C! f8 {
E=xlsread('jisuan.xlsx');
/ _+ c9 G2 a* N3 y" _* Lx=E(:,1); %位移,间隔为0.01: I4 t _1 b- s9 b
y=E(:,2); %作用力7 G4 b, J: X3 y9 c( ?3 r
k=E(:,3); %刚度* W) O) }0 f/ _
m=length(k);
. A4 c* [. x, Q# y" x+ k! Ifor i=1:length(k)
8 g! L; J# N `0 a6 X( }" VK=k(i);
& ]- y3 U% L+ G$ k7 ftspan=x;
6 c+ [; q$ l5 O& t- qodefun=@(x,v)[v(2);(k(i)/1.01-(1.33*0.5*(v(2)^2)/(v(1)*0.5)))];% t" Q4 D1 M- ~* D: ]; i& Q+ g/ Z" p
[x,v]=ode45(odefun,tspan,[0.0096 0.042]);
% b2 [+ F, e' u" H& C- I+ KA=[x,v]
2 z5 ]$ [9 } M# pend
1 C6 f; ~+ Z& s: |但是结果是多个k对应的一系列v(1)v(2),我希望得到的是已知初值后各个k对应的v(1)v(2),看help也没有弄明白,还试过interp1调用和定义函数也报错了,请教各位这种有时变项的二阶微分方程要怎么求?是for循环吗还是有其他方法?
. l3 w% c) M8 r; M7 `/ I- j3 Y1 A9 W+ M! T
|
|