matlab简介(解常微分方程绘制函数图像)
MATLAB第十三讲常微分方程初值问题数值解法 ppt课件

1.483240
0.8 1.649783
1.612452
1.0 1.784770
1.732051
误差
0.008602 0.016572 0.025726 0.037331 0.052719
与准确解 y 12x相比,可看出欧拉公式的计算结
果精度很差.
上页 下页
欧拉公式具有明显的几何意义, 就是用折线近似代
或表示为下列平均化形式
yp yc
yn yn
hf hf
( x n , y n ), ( x n1 , y p ),
f(x ,y 1 ) f(x ,y 2 ) L y 1 y 2 .
它表明f满足利普希茨条件,且L的大小反映了右端函 数f关于y变化的快慢,刻画了初值问(1.1)式和(1.2)式 是否为好条件. 这在数值求解中也是很重要的.
上页 下页
虽然求解常微分方程有各种各样的解析方法,但 解析方法只能用来求解一些特殊类型的方程,实际问 题中归结出来的微分方程主要靠数值解法.
利普希茨常数(简称Lips.常数).
上页 下页
定理1 设f在区域D={(x, y)|axb,yR}上连续, 关 于y满足利普希茨条件,则对任意x0[a, b], y0R,常 微分方程初值问题(1.1)式和(1.2)式当x[a, b]时存在 唯一的连续可微解y(x) .
解的存在唯一性定理是常微分方程理论的基本内 容,也是数值方法的出发点,此外还要考虑方程的解 对扰动的敏感性,它有以下结论.
可得欧拉法(2.1)的公式误差为
y (x n 1 ) y n 1 h 2 2y (n ) h 2 2y (x n ), (2 .3 )
称为此方法的局部截断误差.
上页 下页
用matlab求解常微分方程-(最新版)

实验六用matlab 求解常微分方程1.微分方程的概念未知的函数以及它的某些阶的导数连同自变量都由一已知方程联系在一起的方程称为微分方程。
如果未知函数是一元函数,称为常微分方程。
常微分方程的一般形式为),,",',,()(n yy y y t F 如果未知函数是多元函数,成为偏微分方程。
联系一些未知函数的一组微分方程组称为微分方程组。
微分方程中出现的未知函数的导数的最高阶解数称为微分方程的阶。
若方程中未知函数及其各阶导数都是一次的,称为线性常微分方程,一般表示为)()(')()(1)1(1)(t b yt a y t a y t a yn n n n 若上式中的系数n it a i ,,2,1),(均与t 无关,称之为常系数。
2.常微分方程的解析解有些微分方程可直接通过积分求解.例如,一解常系数常微分方程1y dtdy可化为dtydy 1,两边积分可得通解为1tcey .其中c 为任意常数.有些常微分方程可用一些技巧,如分离变量法,积分因子法,常数变异法,降阶法等可化为可积分的方程而求得解析解.线性常微分方程的解满足叠加原理,从而他们的求解可归结为求一个特解和相应齐次微分方程的通解.一阶变系数线性微分方程总可用这一思路求得显式解。
高阶线性常系数微分方程可用特征根法求得相应齐次微分方程的基本解,再用常数变异法求特解。
一阶常微分方程与高阶微分方程可以互化,已给一个n 阶方程),,",',()1()(n n yy y t f y设)1(21,,',n n yy y y y y ,可将上式化为一阶方程组),,,,(''''2113221n n nn y y y t f y y y y y y y 反过来,在许多情况下,一阶微分方程组也可化为高阶方程。
所以一阶微分方程组与高阶常微分方程的理论与方法在许多方面是相通的,一阶常系数线性微分方程组也可用特征根法求解。
matlab欧拉法解常微分方程

matlab欧拉法解常微分方程matlab欧拉法解常微分方程欧拉法是解决微分方程数值计算的一种基本方法,是通过估算函数图像的变化来得到函数的近似值。
而matlab是一种强大的数值计算软件,也能轻易地实现欧拉法解常微分方程的计算。
步骤一:选择解题模型选择合适的数学模型很重要。
对于已经给定的微分方程,需要将它化为标准的形式。
例如,我们有如下的微分方程:y’ = 2y - 3,y(0) = 1将其化为标准的形式:dy/dx = 2y -3 将初始值y(0) = 1带入。
步骤二:确定计算步长确定计算步长h。
步长的大小与计算精度有直接关系,步长太小,计算量将很大,而精度较高;步长太大,精度较低。
步长的计算公式为:h = (b-a)/n其中,a和b是区间限制,n是初始步数。
步骤三:使用欧拉法求解微分方程根据欧拉法的公式,假设在t时刻函数y的值是y(t),求在下一个时刻t+h如何估算y值,公式为:y(t+h) = y(t)+ h * y'(t)将y'(t)=2y-3代入上式,得:y(t+h) = y(t)+ h* (2y(t)-3)接下来,根据初始值y(0) = 1,带入计算步长可得出一系列的近似值。
步骤四:绘制函数图像对于计算结果,应绘制出函数的近似图像。
通过matlab绘制y(x)的图像,也可以通过计算的数据进行近似曲线的绘制。
步骤五:测试计算结果通过计算结果与初始值进行比较,看算法是否正确和有效。
也可以将步长不同的计算结果进行比较,判断精度和计算效率的高低。
欧拉法解常微分方程在matlab中的使用,相较于手工计算,更具有高效、准确、方便的优势。
正因如此,在各类数学、物理、工程等领域中都有着广泛的应用。
第14章常微分方程的MATLAB求解

因此,方程 ,设其通解为
就成为 ,又
,这是一个关于变量 的一阶微分方程 因此又得到一个一阶微分方程
对它进行积分,便得到方程 的通解为 型的微分方程:方程中不显含自变量x ,为了求出它的解,我们令 ,并利用复合函数求导法则把 化为对 的导数,即 这样,方程 ,设它的通解为 就成为 这是一个关于变量 分离变量并积分,便得方程 的一阶微分方程 的通解为
14.6 边值问题的数值解
1.打靶法
打靶法也称为试射法,其基本思想是把边值问题作初值问题来求解,从满足 左端边界条件的解曲线中寻找也满足右端边界条件的解。
线性方程边值问题的打靶法:
考虑如下给出的二阶线性边值问题 该边值问题的打靶法求解过程可以由如下步骤完成:(1)计算下面齐次微分方程在区间 上的数值解 , ,初值条件: ;(2)计算下面齐 次微分方程在区间 上的数值解 , ,初值条件: ;(3)计算下面初值问题在区间 ,初值条件 : 计算 题的数值解 上的数值解 , ;(4)若
微分方程:一般的,凡表示未知函数、未知函数的导数与自变量之间的关系的方程,叫做微 分方程,有时也简称方程。 微分方程的阶:微分方程中所出现的未知函数的最高阶导数的阶数,叫做微分方程的阶 微分方程的解:找出这样的函数,把这函数代入微分方程能使该方程成为恒等式。这个函数 就叫做微分方程的解。 微分方程的通解:如果微分方程的解中含有任意常数,且任意常数的个数与微分方程的阶数 相同,这样的解叫做微分方程的通解。 初始条件:设微分方程中的未知函数为 ,如果微分方程是一阶的,通常用来确定任 意常数的条件是 时, 或写成 其中 都是给定的值;如果微分方程是二阶的,通常用来确定任意常数的条件是
其中 和 都是给定的值,上述这种条件叫做初始条件。 确定了通解中的任意常数以后,就得到微分方程的特解。求微分方程 件 的特解是这样一个问题,叫做一阶微分方程的初值问题,记作
matlab常微分方程数值解法精品PPT课件

2012
第七讲 常微分方程数值解法
内容提要
引言 欧拉近似方法 龙格-库塔(R-K)方法 MATLAB的常微分方程函数 小结
1、引言
物理学所研究的各种物质运动中,有许多物质运动的 过程是用常微分方程来描述的。
例如,质点的加速运动,简谐振动等。
F m dv dt
d2x 2x2 0
f xn1
x0
y(x), x dx
y(xn ) f y(xn ), xn h
作如下近似
yn y(xn )
得:
yn1 yn f yn , xn h
2.1.4 欧拉法误差
利用泰勒级数得:
y xn1 y(xn h)
y(xn )
hy(xn )
1 2
h2
y(xn )
y(xn )
x2 …. xn ….
y(x0) y(x1) y(x2) …. y(xn) ….
y0
y1 y2 …. yn ….
在xn节点上,微分方程可以写为
y(xn1) y(xn ) f y(xn ) , xn h
作如下近似:
yn y(tn )
则得到欧拉解法递推公式的一般形式:
yn1 yn f ( yn , xn ) h
hf
y(xn ),
xn
1 2
h2 y(xn )
作如下近似
yn y(xn )
yn1 yn f yn , xn h
局部截断误差
y
y0
dy dx
x0 x x0
y0 f ( y0 , x0 ) x x0
此切线与x=x1交点纵坐标为:
y1 y0 f ( y0 , x0 ) x1 x0
matlab常微分方程 ppt课件

odeplot 随计算过程,显示解向
量
属性名 OutputSel
Refine
2020/4/10
参数设置
取值
含义
若不使用缺省设置,则
有效值: 正整数向 量 缺省值:[]
OutputFcn所表现的是那 些正整数指定的解向量 中的分量的曲线或数据 。若为缺省值时,则缺 省地按上面情形进行操
作
有效值: 正整数k>1 缺省值:k
y1 (0 ) y 0
y0
y
2
(
0
)
y1
yn
(
0
)
yn
• (3)根据(1)与(2)的结果,编写能计 算
• 导数的M-函数文件odefile。
• (4)将文件odefile与初始条件传递给求解
• 器Solver中的一个,运行后就可得到ODE
• 的、在指定时间区间上的解列向量y(其中包 2含020/4y/10及不同阶的导数)。
参数设置
属性名 NormControl Events
取值
含义
有效值: on、off 缺省值:
off
为‘on’时,控制解向量 范数的相对误差,使每 步计算中,满足: norm(e)<=max(RelTol*n orm(y),AbsTol)
有效值: 为‘on’时,返回相应的 on、off 事件记录
2020/4/10
例3
x' x 2
x(0)
1
创建函数function2, 保存在function2.m中
function f=function2(t,x)
f=-x.^2;
在命令窗口中执行 >> [t,x]=ode45('function2',[0,1],1); >> plot(t,x,'-',t,x,'o'); >> xlabel('time t0=0,tt=1'); >> ylabel('x values x(0)=1');
如何使用MATLAB求解微分方程(组)ppt课件

差,输出参数,事件等,可缺省。 9
使用ODE?时如何编 写微分方程 ?
方式一:带额外参数,使用时需对参数进行赋值
function odefun(t,x,flag,R,L,C) %用flag说明R、L、C为变 量
xdot=zeros(2,1);
%表明其为列向量
xdot(1)=-R/L*x(1)-1/L*x(2)+1/L*f(t);
2
Where ?
工程控制
ODE
医学生理
航空航天
金融分析
3
Where ?
算法开发 数据分析
数值计算 MAT LAB
数据可视化
4
When ?
当对问题进行建模后,有常微分方程 需要求解时。
在生物建模中,经常需要求解常微分 方程。如药物动力学的房室模型的建模 仿真。
5
方法 ode23
ode45
数 ode113
当无法藉由微积分技巧求 得解析解时,这时便只能利 用数值分析的方式来求得其 数值解了。实际情况下,常 微分方程往往只能求解出其
数值解。
在数学中,刚性方程是指一 个微分方程,其数值分析的解 只有在时间间隔很小时才会稳 定,只要时间间隔略大,其解 就会不稳定。
目前很难去精确地去定义哪 些微分方程是刚性方程,但是 大体的想法是:这个方程的解
y(1)=x(2);
y1
y2
y(2)= -t*x(1)+exp(t)*x(2)+3*sin(2*t);
end
1000
求解程序ห้องสมุดไป่ตู้键步骤
[t,y]=ode45('odefun',[3.9 4.0],[2 8])
y
matlab数值求解常微分方程快速方法

MATLAB是一种用于科学计算和工程应用的高级编程语言和交互式环境。
它在数学建模、模拟和分析等方面有着广泛的应用。
在MATLAB 中,常微分方程的数值求解是一个常见的应用场景。
在实际工程问题中,通常需要对常微分方程进行数值求解来模拟系统的动态行为。
本文将介绍MATLAB中对常微分方程进行数值求解的快速方法。
1. 基本概念在MATLAB中,可以使用ode45函数来对常微分方程进行数值求解。
ode45是一种常用的Runge-Kutta法,它可以自适应地选取步长,并且具有较高的数值精度。
使用ode45函数可以方便地对各种类型的常微分方程进行求解,包括一阶、高阶、常系数和变系数的微分方程。
2. 函数调用要使用ode45函数进行常微分方程的数值求解,需要按照以下格式进行函数调用:[t, y] = ode45(odefun, tspan, y0)其中,odefun表示用于描述微分方程的函数,tspan表示求解的时间跨度,y0表示初值条件,t和y分别表示求解得到的时间序列和对应的解向量。
3. 示例演示为了更好地理解如何使用ode45函数进行常微分方程的数值求解,下面我们以一个具体的例子来进行演示。
考虑如下的一阶常微分方程:dy/dt = -2*y其中,y(0) = 1。
我们可以编写一个描述微分方程的函数odefun:function dydt = odefun(t, y)dydt = -2*y;按照上述的函数调用格式,使用ode45函数进行求解:tspan = [0 10];y0 = 1;[t, y] = ode45(odefun, tspan, y0);绘制出解曲线:plot(t, y);4. 高级用法除了基本的函数调用方式外,MATLAB中还提供了更多高级的方法来对常微分方程进行数值求解。
可以通过设定选项参数来控制数值求解的精度和稳定性,并且还可以对刚性微分方程进行求解。
5. 性能优化在实际工程应用中,常常需要对大规模的常微分方程进行数值求解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB简介
MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。
一、基本功能
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
二、特点
1) 高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;
2) 具有完备的图形处理功能,实现计算结果和编程的可视化;
3) 友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;
4) 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。
三、优势
1.友好的工作平台编程环境
MATLAB由一系列工具组成。
这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。
包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。
随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。
2.强大的科学计算机数据处理能力
MATLAB是一个包含大量计算算法的集合。
其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能,可以用它来代替底层编程语言,如C和C++ 。
在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。
3.出色的图形处理功能
MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。
MATLAB同样表现了出色的处理能力。
同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。
另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。
4.应用广泛的模块集合工具箱
MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。
一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。
5.实用的程序接口和发布平台
新版本的MATLAB可以利用MATLAB编译器和C/C++数学库和图形库,将自己的MATLAB程序自动转换为独立于MA TLAB运行的C和C++代码。
允许用户编写可以和MATLAB进行交互的C或C++语言程序。
另外,MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。
6.应用软件开发(包括用户界面)
在开发环境中,使用户更方便地控制多个文件和图形窗口;在编程方面支持了函数嵌套,有条件中断等;在图形化方面,有了更强大的图形标注和处理功能,包括对性对起连接注释等;在输入输出方面,可以直接向Excel和HDF5进行连接。
四、matlab求解微分方程
微分方程的概念:未知的函数以及它的某些阶的导数连同自变量都由一已知方程联系在一起的方程称为微分方程。
如果未知函数是一元函数,称为常微分方程。
微分方程是数学科学联系实际问题的主要桥梁之一,它是含有未知数及其导数的方程。
常微分方程的求解是现代科学研究和工程技术中经常遇到的问题,然而,从实际问题中建立起来的微分方程往往具有非常复杂的形式,有写解析式难以计算,有的则根本不能用解析式来表达。
在实际上对初值问题,一般是要求得到解在若干个点上满足规定精确度的近似值,或者得到一个满足精确度要求的便于计算的表达式,所以利用数值解法求解实际问题显得非常重要。
MATLAB使用函数dsolve来求解常微分方程,其一般格式为:
dsolve(’eq1,eq2,…’,’cond1,cond2,…’,’v’)
其中eq1,eq2,…代表常微分方程式;cond1,cond2,…为初始条件,如果初始条件没有给出,则给出通解形式。
V为自变量,在默认情况下所有自变量都是对自变量t求导。
在函数dsolve所包含的表达式中,用字母D来表示求微分,其后的数字表示几重微分,后面的变量为因变量。
如以Dy代表一阶微分项y’,D2y代表二阶微分项y’’等。
例1:求解常微分方程
1
dy
dx x y
=
+的MATLAB程序为:
dsolve('Dy=1/(x+y)','x'),
例2:求解常微分方程2'''0yy y -=的MATLAB 程序为:Y2=dsolve('y*D2y-
Dy^2=0’,’x’)
例3:求常微分方程组253t t
dx x y e dt dy x y e dt ⎧++=⎪⎪⎨
⎪--=⎪⎩通解的MATLAB 程序为:
[X,Y]=dsolve('Dx+5*x+y=exp(t),Dy-x-3*y=exp(2*t)','t')
例4:求常微分方程组020210cos ,224,0t t t dx dy x t x dt dt dx dy y e y dt dt =-=⎧+-==⎪⎪⎨
⎪++==⎪⎩通解的MATLAB 程序
为:
[X,Y]=dsolve('Dx+2*x-Dy=10*cos(t),Dx+Dy+2*y=4*exp(-2*t)','x(0)=2','y(0)=0')
五、绘制函数图像
MATLAB 受到控制界广泛接受的一个重要原因是因为它提供了方便的绘图功能。
以下主要介绍2维图形对象的生成函数及图形控制函数的使用方法,还将简单地介绍一些图形的修饰与标注函数及操作和控MATLAB 各种图形对象的方法。
一. plot 函数
plot 函数是最基本的绘图函数,其基本的调用格式为:
plot(y)------绘制向量y 对应于其元素序数的二维曲线图,如果y 为复数向量,则绘制虚部对于实部的二维曲线图.
2.plot(x,y)------绘制由x,y 所确定的曲线.
x,y 是两组向量,且它们的长度相等,则plot(x,y)可以直观地绘出以x 为横坐标,y 为纵坐标的图形.
注:在MATLAB 中,如画图前已有打开的图形窗口,则再画图系统将自动擦掉坐标系中已有的图形对象,但设置了hold on 后,可以保持坐标系中已绘出的图形.
4.双Y 轴绘图:plotyy()函数.
其调用格式为:
plotyy(x1,y1,x2,y2)------绘制由x1,y1和x2,y2确定的两组曲线,其中x1,y1的坐标轴在图形窗口的左侧,x2,y2的坐标轴在图形窗口的右侧.
绘图结果:两条图线自动用不同的颜色区分,两个坐标的颜色与图线的颜色相对应,左边的Y轴坐标对应的是plot形式的曲线,右边的Y坐标对应的是stem形式的曲线.
图形的修饰与标注
MATLAB提供了一些特殊的函数修饰画出的图形,这些函数如下:
1)坐标轴的标题:title函数
其调用格式为:title('字符串')------字符串可以写中文
2)坐标轴的说明:xlabel和ylabel函数
格式:xlabel('字符串')
ylabel('字符串')
3)图形说明文字:text和gtext函数
A.text函数:按指定位置在坐标系中写出说明文字.
格式为:text(x1, y1, '字符串', '选项')
x1,y1为指定点的坐标;'字符串'为要标注的文字;'选项'决定x1,y1的坐标单位。
B.gtext函数:按照鼠标点按位置写出说明文字.
格式为:gtext('字符串')
当调用这个函数时,在图形窗口中出现一个随鼠标移动的大十字交叉线,移动鼠标将十字线的交叉点移动到适当的位置,点击鼠标左键,gtext参数中的字符串就标注在该位置上.
4)给图形加网格:grid函数
在调用时直接写grid即可.。