|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
求解二阶微分方程v=1.33*0.5*(dv/dx)^2./[k-1.01*d(dv/dx)/dx],其中k是时变项,是一系列数据集,我用的ode45,代码如下:clear;clc
- S( c$ y7 s6 f2 LE=xlsread('jisuan.xlsx');
, v' G+ q' h+ i0 J7 Y2 o, `! a4 ex=E(:,1); %位移,间隔为0.01
- K6 g8 S: B4 F. o- w) y, cy=E(:,2); %作用力
9 g! i9 f& z( z' c: I2 U0 wk=E(:,3); %刚度) [% z( Z4 V3 D) n0 I% k4 S
m=length(k);
4 w6 f: V5 a8 v) Y! F2 c- |for i=1:length(k)9 t0 [* k+ Z) C% R( r
K=k(i);; o5 f5 f, `* Y4 P9 `* d8 G
tspan=x;5 A% u0 \/ O2 A! Q8 w5 D
odefun=@(x,v)[v(2);(k(i)/1.01-(1.33*0.5*(v(2)^2)/(v(1)*0.5)))];
, L6 ^0 V/ U$ f+ l1 F[x,v]=ode45(odefun,tspan,[0.0096 0.042]);5 M u' B0 i# S) c; P
A=[x,v]+ \" I8 Z( }: m3 I* h
end) i; Z2 r4 H8 a# e
但是结果是多个k对应的一系列v(1)v(2),我希望得到的是已知初值后各个k对应的v(1)v(2),看help也没有弄明白,还试过interp1调用和定义函数也报错了,请教各位这种有时变项的二阶微分方程要怎么求?是for循环吗还是有其他方法?; _ \; @9 n* l
/ @2 x J6 l1 e4 N- ?! [0 i6 u* E |
|