【整理】MATLAB之常微分方程
来源:互联网 发布:网络视听年度人物 编辑:程序博客网 时间:2024/04/27 16:59
0.微分方程的概念(虽然大家都懂,但既然是整理,所以还是写写吧)
对于常微分方程的定义我就不多说了吧,简单说就是未知函数是一元函数。如果是多元,那就是偏微分方程了。
微分方程中出现的未知函数的导数的最高阶数称为微分方程的阶。
若方程中未知函数及其各阶导数都是一次,则称为线性常微分方程。
1.初等积分法
对于一阶常系数线性常微分方程 y' = ay + b (a~=0) 我们可以通过移项,化为 dy / ( ay + b ) = dt再两边积分可得通解y(t)
所以有些常微分方程可用一些技巧(如变量分离法、积分因子法、常数变易法、降阶法等)化为可积分的方程而求得显式解。
2.常系数线性微分方程
对于它的求解可归结为:求一个特解和相应齐次微分方程的解。
一阶变系数线性常微分方程可用这一思路求得显式解;
高阶线性常系数微分方程可用特征根法求得相应齐次微分方程的基本解,再用常数变易法求特解。
举个栗子:
求x'' + 0.2x' +3.92x = 0的通解
解: 特征方程为:v^2 + 0.2v + 3.92 = 0
>> roots( [ 1 0.2 3.92 ] )求得共轭复根 -0.1000 ± 1.9774i
那么通解就很容易求了,这里就不解下去了。(打字太烦啦。。
一、初值问题求解(好吧,看到这里,下面开始正式进入用MATLAB指令解常微分方程,别打我。。。
我们最常用的是指令是 ode45
常用格式 [ t , y ] = ode45( odefun , tspan , y0 )
参数说明
odefun用以表示f(t,y)的函数句柄或inline函数i,t是标量,y是标量或向量tspan若是二维向量[t0,tf],表示自变量初值t0和终值tf;若是高维向量[t0,t1,...,tn],则表示输出结点列向量y0初值向量y0t表示结点列向量(t0,t1,...,tn)^Ty数值解矩阵,每一列对应y的一个分量ode是最常用的求解微分方程的指令,它采用变步长四、五阶Runge-Kutta-Felhberg法适合高精度问题,ode23与ode45类似,只是精度低一些。
说了那么多,上栗题!
解:
先写M函数fun.m
function f = fun( t , x )f( 1 ) = -x( 1 ) ^ 3 - x( 2 );f( 2 ) = -x( 2 ) ^ 3 + x( 1 );f = f( : ); %保证f为列向量end之后码
clear;[ t , x ] = ode45( @fun , [ 0 30 ] , [ 1 ; 0.5 ] );subplot( 1 , 2 , 1 );plot( t , x( : , 1 ) , t , x( : , 2 ) , ' : ' );subplot( 1 , 2 , 2 );plot( x( : , 1 ) , x( : , 2 ) )运行后,作出了函数图和相平面图
0 0
- 【整理】MATLAB之常微分方程
- Matlab解常微分方程
- 常微分方程之差分法
- matlab 龙格-库塔 法求解常微分方程
- MATLAB数学建模(8)-常微分方程求解
- matlab求解常微分方程数值解
- 常微分方程
- 常微分方程
- Matlab基础学习-----------Matlab求解常微分方程边值问题的方法
- 求解常微分方程初值问题之Runge_Kutta法
- 求解常微分方程初值问题之Runge_Kutta_Fehlberg法
- 求解常微分方程边值问题之试射法
- 四阶龙格-库塔法求解常微分方程的初值问题-matlab通用程序
- MATLAB求解常微分方程:ode45函数与dsolve函数
- 计算方法之改进的欧拉法计算常微分方程
- 求解常微分方程初值问题之Milne预报-校正法
- 线性常系数微分方程
- 常微分方程数值解法
- HDU--1114 Piggy-Bank(完全背包)
- hibernate Criteria Query
- 1、hadoop配置伪分布式
- Objective-C 【类对象及SEL存储方式】
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(下)
- 【整理】MATLAB之常微分方程
- mfc 2048
- hdu 5406 CRB and Apple, 2015多校联合训练赛,费用流
- JAXB2完成java bean到xml的相互转换
- Android ActionBar应用实战,高仿微信主界面的设计
- Ubuntu 引导文件配置
- 黑马学习笔记_javaIO(一)
- 关于指针类型转换的一个有趣实验
- ios线程-NSoperatiion