声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3070|回复: 8

[编程技巧] 用matlab怎样求分段二阶线性微分方程,并画出相图

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

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

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

x
请问各位高手,用matlab怎样求分段 二阶线性微分方程,并画出相图

分段积分求相图
回复
分享到:

使用道具 举报

 楼主| 发表于 2006-2-27 16:33 | 显示全部楼层
公式dx(dx/dt)/dt + f(x)=0.1cos0.5t.其中f(x)分段线性
 楼主| 发表于 2006-2-27 16:35 | 显示全部楼层
x>=1时.f(x)=x-1
-1<x<1.f(x)=0
x<=-1.f(x)=x+1
 楼主| 发表于 2006-2-27 16:42 | 显示全部楼层
请问各位高手,用matlab怎样求分段 二阶线性微分方程,并画出相图
分段积分求相图公式
dx(dx/dt)/dt + f(x)=0.1cos0.5t.其中f(x)分段线性
x>=1时.f(x)=x-1
-1<x<1.f(x)=0
x<=-1.f(x)=x+1
发表于 2006-2-27 19:33 | 显示全部楼层
ode系列就能求解
画相图之用输出求解结果dx/dt 和 x,然后plot
 楼主| 发表于 2006-2-27 21:07 | 显示全部楼层
但是每段x的初值不一样.x的取值也不同呀.
你的意思是不是对每个方程用一次ode
发表于 2006-2-28 09:07 | 显示全部楼层
这个函数不是可以直接表示出来吗?
 楼主| 发表于 2006-2-28 18:53 | 显示全部楼层
高手,能不能把你的程序给我侃看看,参考
发表于 2006-3-2 08:52 | 显示全部楼层
  1. function dy = fun1(t,y)
  2. dy=zeros(2,1);
  3. dy(1)=y(2);
  4. dyy(y(1)>=1)=0.1*cos(0.5*t)-y(1)+1;
  5. dyy(y(1)<1&y(1)>-1)=0.1*cos(0.5*t);
  6. dyy(y(1)<=-1)=0.1*cos(0.5*t)-y(1)-1;
  7. dy(2)=dyy;

  8. [T,Y] = ode45(@fun1,[0 500],[2 0]);
  9. plot(Y(:,1),Y(:,2))
复制代码


大概是这样,不一定对,没有仔细检查,你自己好好检查一下吧
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-10 18:03 , Processed in 0.080269 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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