|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
求解二阶微分方程v=1.33*0.5*(dv/dx)^2./[k-1.01*d(dv/dx)/dx],其中k是时变项,是一系列数据集,我用的ode45,代码如下:clear;clc2 ]. m. d. I0 A. Y4 O
E=xlsread('jisuan.xlsx');
( E& \& B7 a8 bx=E(:,1); %位移,间隔为0.01
) B6 V3 p1 u* R3 X) sy=E(:,2); %作用力# m* t6 d" ?/ \! m: J+ [
k=E(:,3); %刚度
* \/ x; T3 X; @1 Vm=length(k);
3 O4 y- P t# [- u K8 l# X0 afor i=1:length(k), [2 J: {7 P. S& ^: K* A* k
K=k(i);; t: d& s# ^" c1 _- l, C
tspan=x;
3 @; T, J4 J) godefun=@(x,v)[v(2);(k(i)/1.01-(1.33*0.5*(v(2)^2)/(v(1)*0.5)))];, B+ P# X8 X* I# ^
[x,v]=ode45(odefun,tspan,[0.0096 0.042]);
2 ?0 ?' `- E! a3 CA=[x,v]
$ w0 P8 `( {) I7 d6 Y. `end
* R' }8 c }, a. y. L/ j5 }但是结果是多个k对应的一系列v(1)v(2),我希望得到的是已知初值后各个k对应的v(1)v(2),看help也没有弄明白,还试过interp1调用和定义函数也报错了,请教各位这种有时变项的二阶微分方程要怎么求?是for循环吗还是有其他方法?3 t& O+ g5 J/ }& [9 ^
' Q2 D% c- s7 H; l3 }/ C- W% U |
|