声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3609|回复: 4

[近似分析] [求助]需要用MATLAB求解微分方程Duffing

[复制链接]
发表于 2006-6-12 23:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
毕业设计需要用MATLAB求解典型非线性微分方程Duffing
希望哪位高手能帮帮忙,将MATLAB程序赐教
应该是用四阶龙格库塔法,偶是新手,不会
回复
分享到:

使用道具 举报

发表于 2006-6-13 19:45 | 显示全部楼层
对于方程:
d2x+c*dx+k*x+a*x^3=p*cos(w*t)
matlab中定义函数的语句是,保存为Duffing.m:
  1. function
  2. dx=f(t,x)
  3. c=0.2;
  4. a=1;
  5. k=1;
  6. w=1;<
  7. br>p=2.5;
  8. dx(1)=x(2);
  9. dx(2)=-c*x(2)-k*x(1)-a*x(1)^3+p*cos(w*t);
  10. dx=[dx(1);dx(2)]
复制代码


然后应用ode45求解,重新定义一个文件为DuffSolu.m:
  1. tspan=[0:0.001:100];<
  2. br>x0=[1,1];
  3. [t,z]=ode45('Duffing',tspan,x0);
  4. plot(t,z(:,1))%时程图
  5. plot(z(:,1),z(:,2))%相图
复制代码

发表于 2011-7-10 11:25 | 显示全部楼层
啥程序么,根本不对,谁给个正确的
发表于 2012-12-15 21:48 | 显示全部楼层
function duffing
tspan=0:0.001:100;
x0=[0.1,0];
[t,z]=ode45(@f,tspan,x0);
figure
plot(t,z(:,1))%时程图
figure
plot(z(:,1),z(:,2))%相图
end
function dx=f(t,x)
%d2x+c*dx+k*x+a*x^3=p*cos(w*t)
c=0.4;
k=1;
a=-4;
w=2;
p=0.115;
dx(1)=x(2);
dx(2)=-c*x(2)-k*x(1)-a*x(1)^3+p*cos(w*t);
dx=[dx(1);dx(2)];
end

评分

1

查看全部评分

发表于 2014-12-7 13:15 | 显示全部楼层
玉林 发表于 2012-12-15 21:48
function duffing
tspan=0:0.001:100;
x0=[0.1,0];

如果x是两个自由度怎么办?刚度矩阵、质量矩阵中存在耦合项怎么办?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-6 03:49 , Processed in 0.057875 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表