Matlab中Runge-Kutta延拓法求解运动方程 运动方程由下式给出:

Matlab中Runge-Kutta延拓法求解运动方程 运动方程由下式给出:,matlab,equation,motion,runge-kutta,Matlab,Equation,Motion,Runge Kutta,,其中m,b是质量和阻尼的固定值。时变项f(t)是激励功率,q(t)是广义位移 我解决了这个问题: 我应该通过[t,x]=ode23('rightside',tspan,x0)在MatLab中求解 f(t)和k(t)I通过类似于Matlab中的傅里叶级数以复数形式求解: f(t)的%复傅里叶级数 k(t)的%复傅里叶级数 我们知道: 多谢各位 应该是类似的原理: 和: 但我不知道如何到达f(t)和k(t)。 你的问题是什么?我应该在MatLab中通过[t,x

,其中m,b是质量和阻尼的固定值。时变项f(t)是激励功率,q(t)是广义位移

  • 我解决了这个问题:


  • 我应该通过[t,x]=ode23('rightside',tspan,x0)在MatLab中求解
  • f(t)和k(t)I通过类似于Matlab中的傅里叶级数以复数形式求解:
f(t)的%复傅里叶级数

k(t)的%复傅里叶级数

  • 我们知道:

多谢各位

  • 应该是类似的原理:

  • 和:

  • 但我不知道如何到达f(t)和k(t)。

你的问题是什么?我应该在MatLab中通过[t,x]=ode23('rightside',tspan,x0)thisy'(1)=1/m*[f(t)-b*y(1)-k(t)*y(2)]y'(2)=y(1)和f(t)和k(t)进行求解,我不知道如何键入此代码和编写“rightside”
ft=zeros(size(t)); 
for j=1:2*N+1
n= j-(N+1);    
if n==0
   f(j)=f0/2;
else
   f(j)=f0*( (exp(-i*n*2*pi)*(i*2*pi*n+1)-1)/(4*pi^2*n^2));   
   end
ft=ft+f(j)*exp(i*n*om*t);
end
kt=k0*ones(size(t)); 
for s=1:2*N+1
    n= s-(N+1);    
    if n==0
       c(s)=k0;
    else
       c(s)=i*(k0+ktyl)/n/pi*(1-cos(n*pi));     
    end
    kt=kt+c(s)*exp(i*n*om*t);
end
T=30;
dt=0.01;
t=0:0.01:5*T;
k0=1e6;
om=2*pi/T;
ktyl=0.5e6;
N=10;
m=1;
ks=1e4;
D=0.01;
OMG=sqrt(ks/m);
b=2*D*OMG*m;
f0=100;
function v=prst1(t,y)
global m b k Om D F omeg
v(1)=....;
v(2)=y(1);
v=v(:);
global m b k Om D F omeg
m=1;
b=10;
k=1000;
F=10;
Om=sqrt(k/m);
omeg=1*Om;
D=b/(2*Om*m);
x0=[0;0];
[t,x]=ode23('prst1',0:0.01:10,x0);
plot(t,x)