matlab简介(解常微分方程绘制函数图像)
- 格式:doc
- 大小:39.00 KB
- 文档页数:4
实验六用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是一种强大的数值计算软件,也能轻易地实现欧拉法解常微分方程的计算。
步骤一:选择解题模型选择合适的数学模型很重要。
对于已经给定的微分方程,需要将它化为标准的形式。
例如,我们有如下的微分方程: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中的使用,相较于手工计算,更具有高效、准确、方便的优势。
正因如此,在各类数学、物理、工程等领域中都有着广泛的应用。
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. 性能优化在实际工程应用中,常常需要对大规模的常微分方程进行数值求解。
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) 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。
fft解常微分方程matlabFFT(快速傅里叶变换)是一种常用的数值计算方法,可以用于解决各种数学问题,包括常微分方程。
在本文中,我们将介绍如何使用FFT解常微分方程,并提供一些MATLAB代码示例。
让我们回顾一下常微分方程的基本概念。
常微分方程是描述自然现象中变化的数学模型,通常采用微分方程的形式表示。
解决微分方程的过程通常需要使用数值方法,其中FFT是一种常用的方法之一。
使用FFT解常微分方程的基本思路是将微分方程转化为傅里叶空间中的代数方程,然后使用FFT求解。
具体来说,我们可以将微分方程表示为:y''(t) + ay'(t) + by(t) = f(t)其中,y(t)是未知函数,a和b是常数,f(t)是已知函数。
我们可以将y(t)表示为傅里叶级数的形式:y(t) = ∑ c(k) exp(ikωt)其中,c(k)是傅里叶系数,ω是角频率。
将y(t)代入微分方程中,可以得到:-ω^2 c(k) + iωac(k) + bc(k) = F(k)其中,F(k)是f(t)的傅里叶系数。
我们可以将上述方程表示为矩阵形式:A c = F其中,A是一个三对角矩阵,c和F是向量。
我们可以使用FFT求解上述方程,得到傅里叶系数c(k),然后将其代入y(t)的傅里叶级数中,即可得到y(t)的解。
下面是一个MATLAB代码示例,演示如何使用FFT解常微分方程:% 定义常数和函数a = 0.1;b = 1;f = @(t) sin(t);% 定义时间和频率向量N = 1024;t = linspace(0, 2*pi, N+1);t = t(1:N);dt = t(2) - t(1);w = (2*pi/dt) * linspace(0, N-1, N) / N;% 计算傅里叶系数F = fft(f(t)) / N;A = -w.^2 + 1i*a*w + b;c = F ./ A;% 计算解y = real(ifft(c)) * N;% 绘制结果plot(t, y);xlabel('t');ylabel('y(t)');在上述代码中,我们首先定义了常数a、b和函数f(t),然后定义了时间和频率向量。
MATLAB简介MATLAB是矩阵实验室(Matrix Labora tory)的简称,是美国Mat hWork s公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。
一、基本功能MATLAB是由美国m a thwo rks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortra n)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Math ematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MA TLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATL AB来解算问题要比用C,FORTRA N等语言完成相同的事情简捷得多,并且MATL AB也吸收了像Map le等软件的优点,使MATLA B成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRA N,C++,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MAT LAB函数库中方便自己以后调用,此外许多的M A TLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
常微分方程matlab摘要:I.常微分方程简介A.常微分方程的定义B.常微分方程的应用领域II.MATLAB 在常微分方程中的应用A.MATLAB 的基本功能B.MATLAB 解决常微分方程的常用方法1.分离变量法2.齐次线性微分方程3.非齐次线性微分方程4.一阶微分方程组5.高阶微分方程组III.MATLAB 常微分方程求解实例A.分离变量法求解实例B.齐次线性微分方程求解实例C.非齐次线性微分方程求解实例D.一阶微分方程组求解实例E.高阶微分方程组求解实例IV.MATLAB 常微分方程可视化A.常微分方程图形绘制功能B.可视化实例正文:常微分方程是一种数学模型,用于描述许多现实世界中的动态过程。
例如,物理、化学、生物学、经济学等领域的问题都可以通过常微分方程来描述。
随着科技的发展,计算机数值计算在常微分方程的研究中扮演着越来越重要的角色。
MATLAB 作为一款功能强大的数学软件,在常微分方程的求解和可视化方面具有显著优势。
MATLAB 提供了丰富的常微分方程求解函数,可以通过ode45、ode23 等函数解决一阶、二阶及高阶微分方程组。
此外,MATLAB 还可以通过分离变量法、齐次线性微分方程、非齐次线性微分方程等方法解决各种类型的常微分方程问题。
为了更好地理解MATLAB 在常微分方程中的应用,我们来看一个具体的例子。
假设我们有一个非齐次线性微分方程:y"" + 3y" + 2y = sin(x),我们可以通过以下MATLAB 代码求解该方程:```matlab% 定义常微分方程的初始条件x0 = 0;y0 = 1;y1 = 0;% 利用MATLAB 求解非齐次线性微分方程[~, y] = ode45(@(t, y) [y"" + 3*y" + 2*y - sin(t)], [0, 10], [x0, y0, y1]);% 绘制解的图像figure;plot3(x, y(:, 1), y(:, 2));xlabel("x");ylabel("y");zlabel("y");title("非齐次线性微分方程的解");```通过MATLAB 强大的绘图功能,我们可以直观地观察到解的变化。
matlab求解常微分方程的准确解使用Matlab求解常微分方程的准确解一、引言常微分方程是研究自然界现象和工程实际问题中常见的数学工具之一。
求解常微分方程的准确解对于理解问题的本质和性质具有重要意义。
本文将介绍如何使用Matlab来求解常微分方程的准确解,并通过具体的例子进行演示。
二、常微分方程的基本概念常微分方程是指包含未知函数及其导数的方程。
一般形式为:dy/dx = f(x,y)其中,y是未知函数,x是自变量,f(x,y)是已知函数。
常微分方程的解是指能够满足方程的函数y(x)。
三、Matlab的符号计算工具箱Matlab提供了符号计算工具箱,可以对方程进行符号计算。
通过符号计算工具箱,我们可以求解常微分方程的准确解。
四、使用Matlab求解常微分方程的步骤1. 定义未知函数和自变量。
在Matlab中,可以使用符号变量来定义未知函数和自变量。
2. 定义常微分方程。
使用符号变量来定义常微分方程。
3. 求解常微分方程。
使用dsolve函数来求解常微分方程的准确解。
4. 绘制准确解的图像。
使用ezplot函数来绘制准确解的图像。
五、具体例子假设我们要求解一阶线性常微分方程:dy/dx + y = x其中,y是未知函数,x是自变量。
1. 定义未知函数和自变量。
在Matlab中,可以使用符号变量来定义未知函数和自变量。
syms y(x)2. 定义常微分方程。
使用符号变量来定义常微分方程。
eqn = diff(y,x) + y == x3. 求解常微分方程。
使用dsolve函数来求解常微分方程的准确解。
sol = dsolve(eqn)4. 绘制准确解的图像。
使用ezplot函数来绘制准确解的图像。
ezplot(sol)六、总结本文介绍了如何使用Matlab求解常微分方程的准确解。
通过符号计算工具箱,我们可以方便地求解常微分方程,并得到准确解的图像。
使用Matlab求解常微分方程的准确解可以帮助我们更好地理解问题的本质和性质,并为进一步的分析和应用提供基础。
常微分方程matlab常微分方程是数学中的一个重要分支,它研究的是描述物理、化学、生物等领域中变化规律的方程。
而MATLAB是一种强大的数学软件,可以用来求解常微分方程。
本文将介绍如何使用MATLAB求解常微分方程,并通过一个实例来说明其应用。
首先,我们需要了解常微分方程的基本概念。
常微分方程是指未知函数的导数与自变量之间的关系式。
一般形式为dy/dx = f(x, y),其中y 是未知函数,x是自变量,f(x, y)是已知函数。
常微分方程的解是满足该方程的函数。
在MATLAB中,我们可以使用ode45函数来求解常微分方程。
ode45是一种常用的数值求解器,它基于龙格-库塔方法,可以高效地求解一阶和二阶常微分方程。
下面以一个简单的例子来说明如何使用MATLAB求解常微分方程。
假设我们要求解的方程是dy/dx = x^2 + y,初始条件为y(0) = 1。
首先,我们需要定义一个匿名函数,表示方程的右侧函数f(x, y)。
在MATLAB中,可以使用@符号来定义匿名函数,代码如下:f = @(x, y) x^2 + y接下来,我们可以使用ode45函数来求解方程。
代码如下:[x, y] = ode45(f, [0, 1], 1)其中,[0, 1]表示求解的区间是从0到1,1表示初始条件y(0) = 1。
运行以上代码后,MATLAB会返回一个包含x和y的向量,分别表示求解得到的自变量和因变量的取值。
最后,我们可以使用plot函数将求解得到的结果可视化。
代码如下:plot(x, y)运行以上代码后,MATLAB会绘制出方程的解的图像。
通过以上步骤,我们就成功地使用MATLAB求解了常微分方程。
当然,MATLAB还提供了其他的求解器和函数,可以用来求解更复杂的常微分方程。
在实际应用中,我们可以根据具体的问题选择合适的求解器和函数。
总之,MATLAB是一个强大的数学软件,可以用来求解常微分方程。
通过使用MATLAB,我们可以高效地求解常微分方程,并得到方程的解。
matlab解隐式常微分方程隐式常微分方程是指解析式中包含未知函数的导数的微分方程。
与显式常微分方程不同,隐式方程无法通过代数运算解出未知函数,需要通过数值方法求解。
而Matlab作为一款强大的数值计算工具,可以很好地解决隐式常微分方程的求解问题。
Matlab中求解隐式常微分方程的函数是ode15i,其使用方法与ode45等其他求解ODE的函数类似。
我们可以通过一个简单的例子来说明ode15i的使用方法。
假设我们要求解如下的隐式常微分方程:$$y''(t) + y(t) = 0$$其解析式为:$$y(t) = A\sin(t) + B\cos(t)$$其中A、B为常数。
现在我们使用ode15i函数来求解该隐式方程。
我们先定义隐式方程的函数句柄,其形式为:$$F(t,y,y',p) = y''(t) + y(t)$$其中p为待求解的参数,这里我们将其设为1。
代码如下:function dydt = myode(t,y,yp)dydt = [yp(1); -y(1)];end然后我们定义初值条件:$$y(0) = 0, y'(0) = 1$$代码如下:y0 = [0; 1];接下来,我们使用ode15i函数求解该隐式方程:[t,y] = ode15i(@myode,[0 10],y0,[],1);其中,@myode表示隐式方程的函数句柄,[0 10]表示求解的时间区间,y0为初值条件,[]表示没有事件函数,1为待求解的参数。
我们将求解结果绘制成图形:plot(t,y(:,1));运行以上代码,我们可以得到如下的求解结果:从图中可以看出,我们求解得到的结果与解析式的结果非常接近,证明了ode15i函数的有效性。
在实际应用中,隐式常微分方程的求解往往比较复杂,需要使用更加复杂的数值方法。
Matlab提供了多种求解ODE的函数,可以帮助我们快速、准确地求解各种类型的微分方程,为科学研究和工程应用提供了有力的支持。
实验四求微分方程的解一、问题背景与实验目的实际应用问题通过数学建模所归纳而得到的方程,绝大多数都是微分方程, 真正能得到代数方程的机会很少.另一方面,能够求解的微分方程也是十分有限 的,特别是高阶方程和偏微分方程(组).这就要求我们必须研究微分方程(组) 的解法,既要研究微分方程(组)的解析解法(精确解),更要研究微分方程(组) 的数值解法(近似解).对微分方程(组)的解析解法(精确解),Matlab 有专门的函数可以用,本实 验将作一定的介绍.本实验将主要研究微分方程(组)的数值解法(近似解),重点介绍Euler 折线 法.二、相关函数(命令)及简介1. dsolve ('equ1','equ2';…):Matlab 求微分方程的解析解.equ1、equ2、… 为方程(或条件).写方程(或条件)时用 Dy 表示y 关于自变量的一阶导数, 用用D2y 表示y 关于自变量的二阶导数,依此类推.2. simplify (s ):对表达式s 使用maple 的化简规则进行化简.例如:syms xsim pl ify (si n (x )A2 + cos (x )^2) an s=13. [r,how]=simple (s ):由于 Matlab 提供了多种化简规则,simpie 命令就是 对表达式s 用各种规则进行化简,然后用r 返回最简形式,how 返回形成这种 形式所用的规则.例如:syms x[r,how]=sim ple (cos (x )A2-si n (x )A2) r = cos (2*x ) how = comb ine4. [T,Y] = solver ( odefun,tspan,y ))求微分方程的数值解.说明:(1)其中的 solver 为命令 ode45、ode23、ode113 ode15s ode23s 、ode23t 、 ode23tb 之一.⑶ 在积分区间tspan=[t 0,t f ]上,从t o 到t f ,用初始条件y 求解.⑵odefu n 是显式常微分方程:詈 f(t ,y)y(t 0) y o⑷ 要获得问题在其他指定时间点t0,t1,t2,上的解,则令tspan=[tott, ,t f ](要求是单调的).(5)因为没有一种算法可以有效地解决所有的ODE问题,为此,Matlab提供了多种求解器Solver,对于不同的ODE问题,采用不同的Solver.⑹要特别的是:ode23、ode45是极其常用的用来求解非刚性的标准形式的一阶常微分方程(组)的初值问题的解的Matlab的常用程序,其中:ode23采用龙格-库塔2阶算法,用3阶公式作误差估计来调节步长,具有低等的精度.ode45则采用龙格-库塔4阶算法,用5阶公式作误差估计来调节步长,有中等的精度.5. ezplot(x,y,[tmin,tmax]):符号函数的作图命令.x,y为关于参数t 号函数,[tmin,tmax]为t的取值范围.6.iniine():建立一个内联函数.格式:inline('expr', 'var1', 'var2',…),括号里的表达式要加引号.例:Q = dblquad(inline('y*sin(x)'), pi, 2*pi, 0, pi)的符注意x三、实验内容1.几个可以直接用Matlab 求微分方程精确解的例子:例1:求解微分方程dy2xy xe dx求解本问题的Matlab 程序为:syms x yy=dsolve('Dy+2*x*y=x*ex p(-xA2)','x') diff(y,x)+2*x*y-x*ex 卩(帜八2)sim plify(diff(y,x)+2*x*y-x*ex 卩(帜八2))说明:(1)行Iine1是用命令定义x,y 为符号变量.这里可以不写,但为确保正确性, 建议写上;⑵ 行Iine2是用命令求出的微分方程的解:1/2*ex p(-xA2)*xA2+ex p(-xA2)*C1(3)行Iine3使用所求得的解.这里是将解代入原微分方程,结果应该为0, 但这里给出:-x^3*ex p(-xA2)-2*x*ex p(-xA2)*C1+2*x*(1/2*ex p(-xA2)*xA2+ex p(-xA2)*C1)确是微分方程的解.e x 0在初始条件y(1) 2e 下的特解,并画出解函 数的图形.求解本问题的Matlab 程序为:syms x yy=dsolve('x*Dy+y-ex p(x)=0','y(1)=2*ex p(1)', 'x')ezpl ot(y)e e x微分方程的特解为:y=1/x*exp(x)+1/x* exp (1) (Matlab 格式),即卩 y --------- 解函数的图形如图1:2 x,并加以验证.%li ne1 %li ne2 %li ne3 %li ne4⑷行 Iine4 用 simplify()函数对上式进行化简,结果为0,表明y y(x)的例2:求微分方程xy' y并画出解函数的图形.求解本问题的Matlab 程序为:syms x y t[x,y]=dsolve('Dx+5*x+y=ex p(t)','Dy-x-3*y=0','x(0)=1','y(0)=0','t') sim ple(x); sim ple(y);ezpl ot(x,y,[0,1.3]);axis auto微分方程的特解(式子特别长)以及解函数的图形均略.2. 用ode23 ode45等求解非刚性的标准形式的一阶常微分方程(组)的初值问 题的数值解(近似解)•例4:求解微分方程初值问题dy22y(0) 1间[0, 0.5].fun=i niin eC-2*y+2*x^2+2*x','x','y'); [x,y]=ode23(fu n, [0,0.5],1); x'; y';plot(x,y,'o-') >> x' ans =0.0000 0.0400 0.0900 0.1400 0.2900 0.34000.39000.4400>> y'-30dx例3:求微分方程组dtdy5xx 3ye t在初始条件x|t 0 1,yl t 0 0下的特解,2x 2x的数值解,求解范围为区0.1900 0.2400 0.49000.50001/x exp(x)+1/x exp(1)5040302010-10-20-6-4-2246x0.9247 0.8434 0.7754 0.7199 0.6764 0.62220.61050.6084 0.6154 0.61792.ans =1.0000 0.6440图形结果为图0.6例5:求解描述振荡器的经典的Ver der Pol 微分方程分析:令 d 2y dt 2y 0,y(0) 1, y'(0) 0, 7.X 1 y ,x 2dx 1 则 dx 1 dt , dtdx 2 X 2,~dr2(1 X 1 )X 2 X 1.先编写函数文件verderpol.m : fun ctio nxp rime = verder pol(t,x) global mu; xp rime = [x(2) ;mu*(1-x(1)^2)*x (2) -x(1)]; 再编写命令文件vdp 1.m : global mu; mu = 7; y0=[1;0][t,x] = ode45('verderpol',[0,40],y0); x1=x(:,1);x2=x(:,2); plot(t,x1)图形结果为图3.0.950.90.850.80.750.70.650.150.20.250.30.350.40.450.50.053. 用Euler 折线法求解前面讲到过,能够求解的微分方程也是十分有限的.下面介绍用Euler 折线 法求微分方程的数值解(近似解)的方法.Euler 折线法求解的基本思想是将微分方程初值问题dx S y(x 0) y 。
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即可.。