|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
求解二阶微分方程v=1.33*0.5*(dv/dx)^2./[k-1.01*d(dv/dx)/dx],其中k是时变项,是一系列数据集,我用的ode45,代码如下:clear;clc; c; _& w% x" c
E=xlsread('jisuan.xlsx');8 N) C1 X; o4 D
x=E(:,1); %位移,间隔为0.01
, ]! r: \; u+ \, R1 E2 `y=E(:,2); %作用力
8 O: O* F4 i7 F& P: t' L/ @+ Ak=E(:,3); %刚度
4 |$ ?- a1 Q: m) Um=length(k);
; @ Z( I B' cfor i=1:length(k)
" z6 C) o9 s4 x8 M G0 @0 {' ?) CK=k(i);
8 Y% m* @# E6 p' x1 X2 L& Rtspan=x;) |& [; [# _' @$ T& E
odefun=@(x,v)[v(2);(k(i)/1.01-(1.33*0.5*(v(2)^2)/(v(1)*0.5)))];
2 I2 i W! V3 | G s[x,v]=ode45(odefun,tspan,[0.0096 0.042]);* @. n0 |) h1 P2 n& H( s; i7 A b
A=[x,v]1 f5 I& [+ R! O% H
end
/ F( I ]* T0 a' F! I9 k2 w但是结果是多个k对应的一系列v(1)v(2),我希望得到的是已知初值后各个k对应的v(1)v(2),看help也没有弄明白,还试过interp1调用和定义函数也报错了,请教各位这种有时变项的二阶微分方程要怎么求?是for循环吗还是有其他方法?
0 v, I' p9 E: i" n5 e( B3 e% B& r
|
|