matlab中常微分方法,MATLAB解常微分方程组的解法(好东西要共享)-程序员宅基地

技术标签: matlab中常微分方法  

1:问题

常微分方程的初值问题的标准数学表述为:y'=f(t,y),a<=t<=b,y(a)=y(0)

;我们要求解的任何高阶常微分方程都可以用替换法化为上式所示的一阶形式,其中y为向量,yo为初始值。

2:Matlab中解决以上问题的步骤

(1):化方程组为标准形式。

例如:y'''-3y''-y’y=0,y(0)=0,y'(0)=1,y''(0)=-1.

把微分方程的高阶导数写为低阶导数的算式,即:

y'''=3y''+y'y,设:y1=y,y2=y',y3=y'',则原方程化为下列等价的方程组:

满足初值条件: 已把该方程化成了标准形式。

其中:y'->(y1’,y2’,y3’),a->(0,0,0),y0->(0,1,-1),f(t,y)->(y2,y3,3y3+y2y1).

(2):把微分方程组编成m函数文件。

如:function

dy=F(t,y)

dy=[y(2);y(3);3*y(3)+y(2)*y(1)];

注意:A:在函数文件里,虽然写微分方程时并不同时包含参数t和y,但第一行必须包含这两个输入变量。B:向量dy必须为列向量。

(3):调用一个微分方程的求解函数求解。

[T,Y]=solver(‘F’,tspan,y0);

其中:solver:求解函数名;

F:包含微分方程的m文件;

tspan为积分的数据范围,其格式为:[t0,tfinal];

y0为t0时刻的初值列向量。

输出参数T和Y为列向量

T为时刻向量。

Y表是不同时刻的函数值。

3:一个求解常微分方程初值问题的完整过程。

问题:求解方程y’’-3(1-y^2)y’+y=0在初值y’(0)=3,y(0)=2的解。

1化成标准形式:

设y1=y,y2=y’,则: 初值为:

2编写函数文件ode.m,类容为:

function dy=ode(t,y)

dy=[y(2);3*(1-y(1)^2)*y(2)-y(1)];

3调用函数ode45求解,时间区间为[0,20]:

[T,Y]=ode45(‘ode’,[0,20],[2;3]);

输出结果[T,Y]中T为时间点组成的向量。Y为对应于T中时间点的y(1)和y(2)的值。

4绘制解的曲线,结果如图。

plot(T,Y(:,1),’-’,T,Y(:,2),’--’)

title(‘Solution of ODE Equation’);

xlabel(‘time T’)

ylabel(‘solution Y’);

legend(‘Y1’,’Y2’)

Matlab利用数值方法来求解常微分方程的解,其思路如下:把求解的时间区间划分成有限步,对应于每一步将计算出一个解,如果求得的解不满足误差限制,则减少步长,再求解。如此重复,直到满足误差限为止。

a刚性问题(stiff):方程组的解不同分量的数量级差别较大,对于数值求解是一大困难。Matlab既能解决非刚性问题,也能解决刚性问题。

b三个解决非刚性问题的函数:ode45,ode23,ode113

c两个解刚性问题的函数:ode15s和ode23s

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_31025595/article/details/115814960

智能推荐

目标 linux 服务器提权,史上最全Linux提权后获取敏感信息方法 (zhuan)-程序员宅基地

文章浏览阅读364次。(Linux)的提权是怎么一回事:收集 – 枚举,枚举和一些更多的枚举。过程 – 通过数据排序,分析和确定优先次序。搜索 – 知道搜索什么和在哪里可以找到漏洞代码。适应 – 自定义的漏洞,所以它适合。每个系统的工作并不是每一个漏洞“都固定不变”。尝试 – 做好准备,试验和错误。系统类型系统是什么版本?cat /etc/issuecat /etc主机上有哪些工作计划?crontab -lls -al..._linux服务器被提权如何解决

Device token 什么时候会发生变化_苹果手机恢复出厂设置token会不会变-程序员宅基地

文章浏览阅读5.8k次。stackoverflow 针对Device token 什么时候会发生变化有个很棒的解答。在一台设备中, device token 是系统级别的,不同 App 获得的 device token 是相同的。假如我的手机安装了 Angry Bird 和 Evernote ,这两个应用获得 device token 一模一样。device token 并不会因为单个 app 的_苹果手机恢复出厂设置token会不会变

IO流——文件操作流之字符输入流FileReader-程序员宅基地

文章浏览阅读1.9k次。package com.io.ioDemo;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;//字符流读文件public class FileReaderDemo { public static void mai_字符输入流filereader

Linux深入理解_深入理解linux系统-程序员宅基地

文章浏览阅读1.8w次,点赞14次,收藏12次。一、背景: 翻看着差不多去年这时候写的《痴迷Linux(一)—初识篇》不禁感慨时光飞逝,转眼间已一年闪过。。。回想这一年与Linux交往之路,发现与她也仅仅是停留在表面上的!回想原因:自己现在还没到和她深交的阶段(正所谓距离产生美嘛)同时由于一些原因(比如:这次实训、装服务器等)自己也并一直和她有来往。 这次实训是学校为大三计算机专业安排历时三天;主要讲课内容: ①..._深入理解linux系统

【二分】烦恼的高考志愿_烦恼的高考志愿二分法-程序员宅基地

文章浏览阅读455次。烦恼的高考志愿题目计算机竞赛小组的神牛V神终于结束了万恶的高考,然而作为班长的他还不能闲下来,班主任老t给了他一个艰巨的任务:帮同学找出最合理的大学填报方案。可是v神太忙了,身后还有一群小姑娘等着和他约会,于是他想到了同为计算机竞赛小组的你,请你帮他完成这个艰巨的任务。现有m(m≤100000) 所学校,每所学校预计分数线是 ai(ai ≤ 10^6 )。有n(n≤100000..._烦恼的高考志愿二分法

随便推点

XamarinAndroid组件教程设置自定义子元素动画(一)_xamarin imageview 动画-程序员宅基地

文章浏览阅读202次。XamarinAndroid组件教程设置自定义子元素动画(一)如果在RecyclerViewAnimators.Animators中没有所需要的动画效果,就可以自定义一个。此时,需要让自定义的动画继承BaseItemAnimator抽象类。【示例1-2】下面以RecylerViewAnimatorsItemAnimator项目为基础,在RecylerView子元素进行添加/删除操作时,实现透明动画..._xamarin imageview 动画

【BZOJ】【P2395】【Balkan 2011】【Timeismoney】【题解】【最小乘积生成树】_最小乘积生成树 注释-程序员宅基地

文章浏览阅读1.3k次。传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2395其实还不太会写……Code:#include#include#includeusing namespace std;typedef long long LL;struct edge{ int u,v,w,c,t; bool operator<(const edg_最小乘积生成树 注释

《Linux杂记》查看Linux内核版本的命令_uname -a 读的哪的内容-程序员宅基地

文章浏览阅读2.1k次。方法一: 命令: uname -a 作用: 查看系统内核版本号及系统名称。方法二: 命令: cat /proc/version 作用: 查看目录”/proc”下version的信息,也可以得到当前系统的内核版本号及系统名称 补充说明:   /proc文件系统,它不是普通的文件系统,而是系统内核的映像,也就是说,该目录中的文件是存放在系统内存之中的,它以文件系统的方式为访..._uname -a 读的哪的内容

Python 读取大文件(GB) & yield 的使用_dataframe yield 读取 python-程序员宅基地

文章浏览阅读5.2k次,点赞2次,收藏10次。原文地址https://blog.csdn.net/shudaqi2010/article/details/54017766https://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/  最近处理文本文档时(文件约2GB大小),出现memoryError错误和文件读取太慢的问题,后来找到了两种比较快Large ..._dataframe yield 读取 python

Windows API SHGetSpecialFolderPath的用法 ,获取特殊文件夹_shgetspecialfolderpath 可否用户xp系统-程序员宅基地

文章浏览阅读3.8k次。BOOL SHGetSpecialFolderPath ( HWND hwndOwner, LPTSTR lpszPath, int nFolder, BOOL fCreate);示例: 获得自启动文件夹的路径 TCHAR filePath[MAX_PATH]; ::SHGetSp_shgetspecialfolderpath 可否用户xp系统

Tomcat 5.5-Manager App HOW-TO(翻译了部份,努力中...)-程序员宅基地

文章浏览阅读59次。偶也是学习,不过,觉得每次都是读英文,麻烦,就希望把它翻译成中文,为自己,也为其它想学习的朋友,呵呵.不过,由于内容比较多,可能翻译的时间要多一点,如果有兴趣合作的朋友,可以回复BLOG,留言您想翻译那一段.让我们一起完成该内容.不过,为了增加文档的可阅读性,把阅读当成一种享受,请在翻译的时候遵守以下几点:1).翻译的字体一律用绿色.保证阅读不那么伤眼睛.2).重点标题用红色标明,重点内容用蓝色标..._invalid context path yy was specified

推荐文章

热门文章

相关标签