【整理】MATLAB之常微分方程
2015-08-23 18:59
239 查看
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
± 1.9774i
那么通解就很容易求了,这里就不解下去了。(打字太烦啦。。
一、初值问题求解(好吧,看到这里,下面开始正式进入用MATLAB指令解常微分方程,别打我。。。
我们最常用的是指令是 ode45
常用格式 [ t , y ] = ode45( odefun , tspan , y0 )
参数说明
ode是最常用的求解微分方程的指令,它采用变步长四、五阶Runge-Kutta-Felhberg法适合高精度问题,ode23与ode45类似,只是精度低一些。
说了那么多,上栗题!
解:
先写M函数fun.m
对于常微分方程的定义我就不多说了吧,简单说就是未知函数是一元函数。如果是多元,那就是偏微分方程了。
微分方程中出现的未知函数的导数的最高阶数称为微分方程的阶。
若方程中未知函数及其各阶导数都是一次,则称为线性常微分方程。
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 | 初值向量y0 |
t | 表示结点列向量(t0,t1,...,tn)^T |
y | 数值解矩阵,每一列对应y的一个分量 |
说了那么多,上栗题!
解:
先写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 ) )运行后,作出了函数图和相平面图
相关文章推荐
- matlab下使用sqlite数据库
- Matlab
- matlab 给定函数 拟合
- [转载]Windows下用g++ MATLAB里面用mex
- matlab 画二维折线图
- matlab练习程序(PCA<SVD>)
- Matlab中函数句柄@的作用及介绍
- Matlab之视角旋转函数
- 【整理】MATLAB之积分篇
- matlab 数据拟后绘图
- matlab 写txt文件
- Matlab将图像转换成GIF
- 随机森林实现 MATLAB
- 决策树算法实现(train+test,matlab) 转
- 主成分分析Matlab实现
- 算法导论—无向图的遍历(BFS+DFS,MATLAB)
- 五点三次平滑法滤波 C 和 matlab代码
- 五点三次平滑法滤波 C 和 matlab代码
- 【整理】Memorandum of MATLAB
- matlab2015和vs2013混合编程