二阶非线性常微分方程的打靶法matlab实现

合集下载

重要:MATLAB常微分方程(组)数值解法

重要:MATLAB常微分方程(组)数值解法

Matlab常微分方程求解问题分类
边值问题:
初值问题:
• 定解附加条件在自变量 的一端
• 一般形式为: y' f (x, y)
y(a)
y0
• 初值问题的数值解法一 般采用步进法,如 Runge-Kutta法
➢ 在自变量两端均给定附加 条件
y' f (x, y)
➢ 一般形式:y(a)y1, y(b)y2
1.根据常微分方程要求的求解精度与速度要求
求解初值问题:
y
'
y
2x y
y ( 0 ) 1
(0x1)
比较ode45和ode23的求解精度和速度
ode45和ode23的比较-1
function xODE clear all clc
format long
y0 = 1; [x1,y1] = ode45(@f,[0,1],y0); [x2,y2] = ode23(@f,[0,1],y0); plot(x1,y1,'k-',x2,y2,'b--') xlabel('x') ylabel('y')
rD = k(3)*C(2)-k(5)*C(4);
rE = k(4)*C(3)+k(5)*C(4);
% Mass balances dCdt = [rA; rB; rC; rD; rE];
三个串联的CSTR等温反应器(例4-3)
function IsothermCSTRs clear all clc CA0 = 1.8; % kmol/m^3 CA10 = 0.4; % kmol/m^3 CA20 = 0.2; % kmol/m^3 CA30 = 0.1; % kmol/m^3 k = 0.5; % 1/min tau = 2; stoptime = 2.9; % min [t,y] = ode45(@Equations,[0 stoptime],[CA10 CA20 CA30],[],k,CA0,tau); disp(' Results:') disp(' t CA1 CA2 CA3') disp([t,y]) plot(t,y(:,1),'k--',t,y(:,2),'b:',t,y(:,3),'r-') legend('CA_1','CA_2','CA_3') xlabel('Time (min)') ylabel('Concentration') % -----------------------------------------------------------------function dydt = Equations(t,y,k,CA0,tau) CA1 = y(1); CA2 = y(2); CA3 = y(3); dCA1dt = (CA0-CA1)/tau - k*CA1; dCA2dt = (CA1-CA2)/tau - k*CA2; dCA3dt = (CA2-CA3)/tau - k*CA3; dydt = [dCA1dt; dCA2dt; dCA3dt];

非线性微分方程边值问题打靶算法Matlab程序

非线性微分方程边值问题打靶算法Matlab程序

非线性微分方程边值问题打靶算法Matlab程序【非线性微分方程边值问题打靶算法】参见:// matlabsky /thread-828-1-1.html【线性微分方程边值问题打靶算法】参见 :// matlabsky /thread-827-1-1.html 【线性微分方程边值问题有限差分算法】参见:// matlabsky /thread-829-1-1.html下面我们讲解下【非线性微分方程边值问题打靶算法】对于边值问题线性边值问题时,p、q和r只是x的函数,但是非线性时它们是x,y和y'的函数我们将问题转换为如下初值问题现在我们需要做的就是找到那个m,使得y(b)=beta,换句话说y现在由两个变量最终控制,即m和x。

对于这个求m的问题,我们可以使用牛顿迭代法得到(1)先给出一个初值m=1(2)计算出对应的y(b)为yb,这个直接使用ode45计算,得到y(end,1)就是yb(3)根据beta和yb的差异更新m(4)将新的m带入(2)重新计算yb并更新m(5)如此迭代直到m稳定或者在允许误差范围内下面详细描述了Matlab代码的运行过程以下内容需要回复才能看到复制内容到剪贴板代码:function [t,x]=nlineshoot(funcn,funcv,tspan,bound,tol,varargin)%对微分方程y''=p*y'+q*y+r,a<t<b,u(a)=alpha,u(b)=beta,其中p,q和r为x,y和y'的函数%只要对应修改p,q,r并将y'用x(2)替换,y用x(1)替换,就可以了%funcn=@(t,x)[x(2);p*x(2)+q*x(1)+r];%funcv=@(t,x)[x(2);p*x(2)+q*x(1)+r;x(4);x(3)*dF/dy+x(4)*dF/y'];%%% Example%F=y''=2y*y',y(0)=-1,y(pi/2)=1%%由方程有p=2y=2*x(1),q=r=0%dF/dy=2*y'=2*x(2) %y'用x(2)替换,y用x(1)替换%dF/dy'=2*y=2*x(1)%%funcn=@(t,x)[x(2);2*x(1)*x(2)];%funcv=@(t,x)[x(2);2*x(1)*x(2);x(4);2*x(2)*x(3)+2*x(1)*x(4)]; %tspan=[0 pi/2];%bound=[-1 1];%tol=1e-8;%[t,y]=nlineshoot(funcn,funcv,tspan,bound,tol);%plot(t,y)%legend('x1','x2')%%by dynamic%see also :// matlabsky%2009.3.12%%lb=bound(1);ub=bound(2);m0=0;m=1;while norm(m-m0)>tolm0=m;[t,x]=ode45(funcv,tspan,[lb;m;0;1],varargin);m=m0-(x(end,1)-ub)/x(end,3);end[t,x]=ode45(funcn,tspan,[lb;m]);下面的图形是代码中附带实例的运行结果线性微分方程边值问题打靶算法Matlab程序【非线性微分方程边值问题打靶算法】参见:// matlabsky /thread-828-1-1.html 【线性微分方程边值问题打靶算法】参见:// matlabsky /thread-827-1-1.html【线性微分方程边值问题有限差分算法】参见:// matlabsky /thread-829-1-1.html注意该算法只能完成二阶常微分方程双边值问题求解,至于其他形式的边值问题必须先转换到二阶形式对于下面的二阶常微分方程利用上面方程的线性结果和两个特殊的初值问题,我们可以构造两个等效的常微分初值方程初值问题,对于初值问题我们就可以直接使用ode**计算器或者龙哥库塔算法求解了。

第14章常微分方程的MATLAB求解

第14章常微分方程的MATLAB求解

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

如何用matlab求解二阶微分方程以及程序实例

如何用matlab求解二阶微分方程以及程序实例

如何用matlab求解二阶微分方程,以及程序实例(2010-03-25 12:56:36)转载标签:matlab程序实例二阶微分方程dsolve文化微分方程的求解主要用到一个dsolve函数,如下面的“Uc1=dsolve('D2y+1000*Dy+10^6*y=0','y(0)=10','Dy(0)=0','t');”,可以看出,函数的第一部分是所要求解的微分方程,其次是初始条件,最后是对自变量的说明。

下面给出的程序实例是用于分析一个最简单零输入的二阶电路。

其中C=1uf,L=1H。

R是不确定的,他的值的选取将会直接影响到方程解的形式以及最后画出的曲线形状,在此我取R的值分别为1000,2000,3000欧姆。

R=1000;while (R<=3000)if R<2000Uc1=dsolve('D2y+1000*Dy+10^6*y=0','y(0)=10','Dy(0)=0','t');It1=-1*diff(Uc1)*(1e-6);Ul1=diff(It1);elseif R==2000Uc2=dsolve('D2y+2000*Dy+10^6*y=0','y(0)=10','Dy(0)=0','t');It2=-1*diff(Uc2)*(1e-6);Ul2=diff(It2);elseUc3=dsolve('D2y+3000*Dy+10^6*y=0','y(0)=10','Dy(0)=0','t'); It3=-1*diff(Uc3)*(1e-6);Ul3=diff(It3);endR=R+1000;end%while i<=3figure (1)xlabel('t')ylabel('Uc(t)')hold on;p1=ezplot(Uc1,[0,0.02]);p2=ezplot(Uc2,[0,0.02]);p3=ezplot(Uc3,[0,0.02]);title('电容电压Uc(t)变化曲线')set(p1,'LineStyle',':');set(p2,'LineStyle','--');legend('uc1','uc2','uc3');set(p1,'Color','r');set(p2,'Color','k');legend('uc1','uc2','uc3');hold off;axis auto;figure (2)xlabel('t')ylabel('I(t)')hold on;p4=ezplot(It1,[0,0.02]);p5=ezplot(It2,[0,0.02]);p6=ezplot(It3,[0,0.02]);title('电流I(t)变化曲线') set(p4,'LineStyle',':');set(p5,'LineStyle','--'); legend('uc1','uc2','uc3');set(p4,'Color','r');set(p5,'Color','k');legend('It1','It2','It3');hold off;axis auto;figure (3)xlabel('t')ylabel('Ul(t)')hold on;p7=ezplot(Ul1,[0,0.02]);p8=ezplot(Ul2,[0,0.02]);p9=ezplot(Ul3,[0,0.02]);title('电感电压Ul(t)变化曲线')set(p7,'LineStyle',':'); set(p8,'LineStyle','--'); legend('uc1','uc2','uc3'); set(p7,'Color','r');set(p8,'Color','k'); legend('Ul1','Ul2','Ul3'); hold off;axis auto;。

matlab求解二阶常微分方程

matlab求解二阶常微分方程

matlab求解二阶常微分方程一、引言常微分方程,即Ordinary Differential Equations(ODE),是一类重要的数学问题,它可以描述各种物理、化学等领域的问题。

特别是,对于二阶常微分方程,其本质上表示的是一种流体动力学的演变。

了解二阶常微分方程的解法是任何一个有关力学的仿真应用的基础,因此,选择合适的求解工具,以及详细的求解步骤,是获得完美求解结果的必要关键。

MATLAB(Matrix Laboratory)是一门强大的高级编程语言,既可以完成数值计算、程序设计、算法开发,科学可视化和数据分析实验,也可以解决复杂的数学问题,像是二阶常微分方程等。

遗憾的是,很多学习者由于缺乏计算机程序设计经验,目前并不能将MATLAB作为一种精确和强大的解决方案来处理二阶常微分方程问题。

考虑到二阶常微分方程在许多学习地方都有所应用,本文主要用于介绍用MATLAB求解二阶常微分方程的方法,帮助研究者更好地理解MATLAB,以及如何正确利用它来解决类似问题。

本文通过实例讨论,展示了利用MATLAB来求解二阶常微分方程的具体方法。

二、MATLAB的基础介绍MATLAB,即Matrix Laboratory,是一种高级编程语言,是由MathWorks Computer Company开发的一种独特的应用工具包。

它不仅可以用来完成数值计算,也可以作为一种编程语言来用于编写程序,而且它还拥有一些完善的工具,可以用来编译、执行和调试程序。

MATLAB是一个性能强大的计算和可视化软件,可以快速分析数据并创建显示效果非常好的图表。

它拥有一个丰富的函数库,具有很高的遍历和查找速度,可以很容易地实现复杂的数学操作和其他高级功能。

三、MATLAB求解二阶常微分方程在MATLAB面板中输入以下命令:syms x yD2y=diff(y,2);ode=D2y+9*y==x;dsolve(ode,y(0)==1,Dy(0)==2);此命令用来求出二阶常微分方程y”+9y=x的解(y(0)=1,y’(0)=2),其结果如下:-3*cos(3*x) + 5*sin(3*x) -3*exp(-3*x) + 2*x + 1以上计算过程中,syms 命令表示定义符号x,y,并通过diff 函数将其变成二阶常微分方程。

matlab如何求解矩阵二阶微分方程

matlab如何求解矩阵二阶微分方程

一、概述在工程和科学领域中,矩阵二阶微分方程是一个常见的数学问题。

在解决这类问题时,Matlab作为一种强大的数学计算工具,可以帮助我们高效地求解矩阵二阶微分方程。

本文将介绍如何使用Matlab来求解矩阵二阶微分方程。

二、矩阵二阶微分方程的一般形式矩阵二阶微分方程的一般形式可以表示为:d^2X/dt^2 = AX其中,X是一个n维向量函数,A是一个已知的n×n矩阵。

三、Matlab中的矩阵二阶微分方程求解函数在Matlab中,我们可以使用ode45或ode23等函数来求解矩阵二阶微分方程。

这些函数使用常见的数值积分方法来求解微分方程的数值解。

下面是一个基本的求解示例:function dydt = myODE(t,y)A = [1 2; 3 4];dydt = A*y;[t,y] = ode45(myODE, [0 10], [1 1]);在这个示例中,我们定义了一个名为myODE的函数,它计算了微分方程的右手边。

我们使用ode45函数来求解微分方程,并将结果存储在变量t和y中。

四、具体案例分析我们以一个具体的案例来说明如何使用Matlab求解矩阵二阶微分方程。

考虑以下的矩阵二阶微分方程:d^2X/dt^2 = [-2 -1; -1 -2]X其中,X是一个n维向量函数。

我们需要定义一个求解微分方程的函数myODE,这个函数的代码如下所示:function dydt = myODE(t,y)A = [-2 -1; -1 -2];dydt = A*y;我们使用ode45函数来求解微分方程,并将结果绘制成图表:[t,y] = ode45(myODE, [0 10], [1 1]);plot(t,y);通过运行以上代码,我们可以得到微分方程的数值解,并且将结果绘制成图表,从而更直观地理解微分方程的行为。

五、总结通过本文的介绍,我们了解了在Matlab中如何求解矩阵二阶微分方程。

Matlab提供了强大的数值计算工具,让我们能够高效地求解和分析复杂的微分方程,这对于工程和科学领域的研究和应用具有重要的意义。

实验2 利用matlab解(非)线性、微分方程(组)

实验2 利用matlab解(非)线性、微分方程(组)

实验2 利用matlab 解(非)线性、微分方程(组)一、实验目的1、线性方程组的解法:直接求解法和迭代法;2、非线性方程以及非线性方程组的求解;3、微分方程的数值解。

二、实验内容1、对于下列线性方程组:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡66136221143092x (1) 请用直接法求解;>> A=[2 9 0;3 4 11;2 2 6];>> b=[13 6 6]';>> x=A\bx =7.4000-0.2000-1.4000(2) 请用LU 分解方法求解;>> [L,U]=lu(A);>> x1=U\(L\b)x1 =7.4000-0.2000-1.4000>> [L,U,P]=lu(A);>> x2=U\(L\P*b)x2 =7.4000-0.2000-1.4000(3) 请用QR 分解方法求解;>> [Q,R]=qr(A);>> x1=R\(Q\b)x1 =7.4000-0.2000-1.4000>> [Q,R,E]=qr(A);>> x2=E*(R\(Q\b))x2 =7.4000-0.2000-1.4000(4) 请用Cholesky 分解方法求解。

>> R=chol(A)Error using cholMatrix must be positive definite.因此系数矩阵A 不是正定的,故不能用Cholesky 分解法2、设迭代精度为10-6,分别用Jacobi 迭代法、Gauss-Serdel 迭代法求解下列线性方程组,并比较此两种迭代法的收敛速度。

⎪⎩⎪⎨⎧=+-=-+-=-510272109103232121x x x x x x x 解,Ax=b,新建函数如下>> A=[10 -1 0;-1 10 -2;0 -2 10];>> b=[9 7 5]';>> eps=10e-6;>> [x,n]=jacobi(A,b,[0,0,0]',eps)x =0.99370.93680.6874n =9>> [x,n]=gauseidel(A,b,[0,0,0]',eps)x =0.99370.93680.6874n =6故本例中Gauss-Serdel 迭代法优于Jacobi 迭代法3、求解非线性方程010=-+x xe x 在2附近的根。

matlab解二阶微分方程

matlab解二阶微分方程

matlab解二阶微分方程使用MATLAB解二阶微分方程二阶微分方程是数学中常见的一类方程,求解二阶微分方程是许多科学和工程问题的关键步骤之一。

MATLAB作为一种强大的数值计算软件,提供了许多功能和工具来解决各种数学问题,包括求解二阶微分方程。

在MATLAB中,我们可以使用ode45函数来求解二阶微分方程。

ode45是一种常用的求解常微分方程的函数,它采用了四阶龙格-库塔法来进行数值求解。

下面我们将通过一个具体的例子来演示如何使用MATLAB解二阶微分方程。

假设我们要求解如下的二阶微分方程:d^2y/dt^2 + 2dy/dt + 2y = 0其中,y是关于t的未知函数。

为了使用ode45函数求解该方程,我们需要将其转化为一阶微分方程组的形式。

令v = dy/dt,则上述二阶微分方程可以变为:dv/dt + 2v + 2y = 0dy/dt = v现在,我们可以定义一个匿名函数,表示上述一阶微分方程组:f = @(t, y) [y(2); -2*y(2)-2*y(1)];其中,y(1)表示y,y(2)表示v。

接下来,我们可以使用ode45函数求解该方程组:[t, y] = ode45(f, [0, 10], [0, 1]);其中,[0, 10]表示求解的时间范围,[0, 1]表示初始条件,即y(0) = 0,v(0) = 1。

通过以上代码,我们可以得到在时间范围内的y和v的数值解。

我们可以通过绘制y和v随时间的变化曲线来观察解的行为。

在MATLAB中,我们可以使用plot函数来绘制曲线:figure;subplot(2, 1, 1);plot(t, y(:, 1));xlabel('Time');ylabel('y');title('Solution of dy^2/dt^2 + 2dy/dt + 2y = 0');subplot(2, 1, 2);plot(t, y(:, 2));xlabel('Time');ylabel('v');通过以上代码,我们可以得到y和v随时间的变化曲线。

matlab常微分方程和常微分方程组求解方法

matlab常微分方程和常微分方程组求解方法

并做出解函数的曲线图。 6.完成实验报告。
为:
[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 具有丰富的函数,我们将其统称为 solver,其一般格式为: [T,Y]=solver(odefun,tspan,y0) 该函数表示在区间 tspan=[t0,tf]上,用初始条件 y0 求解显式常微分方程
[X,Y]=dsolve('Dx+5*x+y=exp(t),Dy- x-3*y=exp(2*t)','t')
dy dx 2x 10 cos t , x t 0 2 dt dt dx dy 2 y 4e2t , y 0 t 0 dt dt 例 4: 求常微分方程组 通解的 MATLAB 程序
常微分方程和常微分方程组的求解
一、实验目的: 熟悉 Matlab 软件中关于求解常微分方程和常微分方程组的各种命令,掌握 利用 Matlab 软件进行常微分方程和常微分方程组的求解。 二、相关知识 在 MATLAB 中,由函数 dsolve()解决常微分方程(组)的求解问题,其具体 格式如下: X=dsolve(‘eqn1’,’eqn2’,…) 函数 dsolve 用来解符号常微分方程、方程组,如果没有初始条件,则求出通 解,如果有初始条件,则求出特解。

matlab求解二阶微分方程代码

matlab求解二阶微分方程代码

在MATLAB中求解二阶微分方程是一个常见且关键的问题,尤其是在工程和科学领域中。

MATLAB提供了强大的求解工具和函数,可以帮助我们高效地解决这类问题。

我们需要明确二阶微分方程的一般形式:\[ a\frac{{d^2y}}{{dt^2}} + b\frac{{dy}}{{dt}} + cy = f(t) \]其中,\( a \)、\( b \) 和 \( c \) 是常数,\( y \) 是未知函数,\( f(t) \) 是已知函数。

接下来,我们使用MATLAB中的符号计算工具箱来求解二阶微分方程。

我们需要定义未知函数 \( y \) 作为符号变量,然后使用符号计算工具箱中的 \texttt{dsolve} 函数来求解微分方程。

```matlabsyms y(t)eqn = a*diff(y, t, 2) + b*diff(y, t) + c*y == f(t);ySol(t) = dsolve(eqn);```在上面的代码中,我们首先定义了未知函数 \( y \) 作为符号变量。

我们将二阶微分方程表示为等式 \( eqn \),并使用 \texttt{dsolve} 函数来求解微分方程,得到了 \( y(t) \) 的解析解。

除了使用符号计算工具箱来求解微分方程外,我们还可以使用数值方法来求解。

MATLAB中提供了丰富的数值求解函数,如\texttt{ode45}、\texttt{ode23} 等,可以有效地求解微分方程的数值解。

```matlab[t, y] = ode45(@(t,y) myODE(t,y), tspan, y0);```在上面的代码中,我们使用了 \texttt{ode45} 函数来求解微分方程的数值解。

其中,\texttt{@(t,y) myODE(t,y)} 是对微分方程进行数值求解的函数句柄,\texttt{tspan} 是时间范围,\texttt{y0} 是初始条件。

matlab求解常微分方程

matlab求解常微分方程

2*t)','x(0)=2,y(0)=0','t')
以上这些都是常微分方程的精确解法,也称为常微分方程的符号解。但是,我们知 道,有大量的常微分方程虽然从理论上讲,其解是存在的,但我们却无法求出其解析 解,此时,我们需要寻求方程的数值解,在求常微分方程数值解方面,MATLAB 具有丰 富的函数,我们将其统称为 solver,其一般格式为:

4:求常微分方程组
⎧ ⎪⎪ ⎨ ⎪ ⎪⎩
dx dt dx dt
+ +
2x
dy dt
− +
dy dt
2y
= 10 cos = 4e−2t ,
t,
x =2 t=0
y =0
t=0 通解的MATLAB程序为:
[X,Y]=dsolve('Dx+2*x-Dy=10*cos(t),Dx+Dy+2*y=4*exp(-
用 matlab 求解常微分方程
在 MATLAB 中,由函数 dsolve()解决常微分方程(组)的求解问题,其具体格式如 下:
r = dsolve('eq1,eq2,...', 'cond1,cond2,...', 'v') 'eq1,eq2,...'为微分方程或微分方程组,'cond1,cond2,...',是初始条件或边界条件,'v'是 独立变量,默认的独立变量是't'。 函数 dsolve 用来解符号常微分方程、方程组,如果没有初始条件,则求出通解,如 果有初始条件,则求出特解。
[T,Y]=solver(odefun,tspan,y0)

(完整版)实验七用matlab求解常微分方程

(完整版)实验七用matlab求解常微分方程

实验七 用matlab 求解常微分方程一、实验目的:1、熟悉常微分方程的求解方法,了解状态方程的概念;2、能熟练使用dsolve 函数求常微分方程(组)的解析解;3、能熟练应用ode45\ode15s 函数分别求常微分方程的非刚性、刚性的数值解;4、掌握绘制相图的方法 二、预备知识: 1.微分方程的概念未知的函数以及它的某些阶的导数连同自变量都由一已知方程联系在一起的方程称为微分方程。

如果未知函数是一元函数,称为常微分方程。

常微分方程的一般形式为0),,",',,()(=n y y y y t F如果未知函数是多元函数,成为偏微分方程。

联系一些未知函数的一组微分方程组称为微分方程组。

微分方程中出现的未知函数的导数的最高阶解数称为微分方程的阶。

若方程中未知函数及其各阶导数都是一次的,称为线性常微分方程,一般表示为)()(')()(1)1(1)(t b y t a y t a y t a y n n n n =++++--若上式中的系数ni t a i ,,2,1),( =均与t 无关,称之为常系数。

2.常微分方程的解析解有些微分方程可直接通过积分求解.例如,一解常系数常微分方程1+=y dt dy可化为dt y dy=+1,两边积分可得通解为1-=tce y .其中c 为任意常数.有些常微分方程可用一些技巧,如分离变量法,积分因子法,常数变异法,降阶法等可化为可积分的方程而求得解析解.线性常微分方程的解满足叠加原理,从而他们的求解可归结为求一个特解和相应齐次微分方程的通解.一阶变系数线性微分方程总可用这一思路求得显式解。

高阶线性常系数微分方程可用特征根法求得相应齐次微分方程的基本解,再用常数变异法求特解。

一阶常微分方程与高阶微分方程可以互化,已给一个n 阶方程),,",',()1()(-=n n y y y t f y设)1(21,,',-===n n y y y y y y ,可将上式化为一阶方程组⎪⎪⎪⎩⎪⎪⎪⎨⎧====-),,,,(''''2113221n n nn y y y t f y yy y y y y反过来,在许多情况下,一阶微分方程组也可化为高阶方程。

Matlab实例源码教程:如何用MATLAB求解非线性微分方程

Matlab实例源码教程:如何用MATLAB求解非线性微分方程

Matlab实例源码教程:如何用MATLAB求解非线性微分方程Matlab实例源码教程:如何用MATLAB求解非线性微分方程做一个最基本的假设:你们都看过高数。

一。

老湿发话了:童鞋们,求解一下这个方程,判断她是否稳定。

要是稳定,那么她是否存在极限环:一看明白了,这不就是传说中的范德普方程。

地球人都知道她稳定并有极限环。

现在我们就看看如何用MATLAB求解她的轨迹。

二。

一般的计算机求解方程的方法无外乎是这样:首先把该方程改写成一个规范的形式,一般使用状态空间表示法;而后调用已有的算法进行求解;最后对得出的结果进行处理,比如画图之类的。

接下来就对这三大步分别作出解释。

三。

输入待求解的方程。

首先我们知道,状态空间的标准形式(自由系统)是:这里X是列向量,F是作用于列向量的函数,可以是线性也可以是非线性。

范德普方程可以改写成这样的标准形式:MATLAB中关于输入输入待解方程的语句特别简单。

需要先定义一个普通函数,函数名任意,姑且叫做myFcn,格式如下 function xdot = myFcn (t, x) 需要注意的是,函数必须含有t, x两个参数,名称可以自己任意定。

xdot是这个函数本身的返回值,只出现在这个函数内部,因此也可以任意定。

定义中的x被视为是一个列向量,x(i)表示列向量中的第i个分量。

那么F函数的每一个分量即简单地用表达时给出即可。

其中的自变量可以引用x(i)。

以范德普方程为例:xdot = [x(2) ; u(1-x(1)^2)*x(2)-x(1)]于是,这两句话便构成了待解函数。

四。

调用MATLAB函数进行求解通常人工求解微分方程需要知道初始值,计算机求解也不例外。

另外,由于非线性方程一般只有数值解,故计算精度也可以调整。

这些都是可以自己调整的参数。

调用MATLAB计算求解常微分方程的模式很简单,格式为:[t, x] = ode45(@myFcn, [开始时间结束时间], [初始值列向量], options) 注意到求解出来的结果是[t, x]即一堆数,所以需要我们进行后处理比如画图之类的。

如何用matlab求解非线性微分方程组(基于龙格库塔的数值微分算法)?

如何用matlab求解非线性微分方程组(基于龙格库塔的数值微分算法)?

如何用matlab求解非线性微分方程组(基于龙格库塔的数值微分算法)?例如要求解下面这个含时间的线性微分方程组,如下图所示其中:这里的tau_q,g_f,w0都是不含时间的常数:初始条件为:归一化条件:通过观察以上方程组,可以看到:每个方程等式里面并没有u(t)*v(t)这样的交叉项形式,也就是没有非线性项。

因此,用龙格库塔的数值微分算法,可以有两种思路,一种思路是利用哈密顿量矩阵去算,另外一种思路是用列向量去算。

两种代码如下解析:(1)利用哈密顿量矩阵的思路先构建一个子程序m文件,文件名为:coupled_differential_equation.m这里.m文件写入以下代码:function[U,Er,U_condition,TEST]=coupled_differential_equation(rho_0,T,L,w 0,g_f,tau_q)t=linspace(0,T,L);%最终演化时间T就等于每一个tau_qh=T/L;%h这是步长和精度,不同的tau_q,精度应该不一样C{1}=rho_0; %演化矩阵的初态for x=1:1:LTEST(1:2,x)=C{1};%这里的测试代码时用,没有其他用途,以下才是龙格库塔算法 k1=master(t(1,x),C{1},w0,g_f,tau_q);k2=master(t(1,x)+h/2,C{1}+h*k1/2,w0,g_f,tau_q);k3=master(t(1,x)+h/2,C{1}+h*k2/2,w0,g_f,tau_q);k4=master(t(1,x)+h,C{1}+h*k3,w0,g_f,tau_q);C{1}=C{1}+(k1+2*k2+2*k3+k4)*h/6;U=C{1};endEr=w0*(abs(U(2,1)))^2-(w0*g_f^2)/4*(abs(U(1,1)+U(2,1)))^2-(w0*sqr t(1-g_f^2)-w0)/2;%这是根据Er公式算写的,U(1,1)和U(2,1)就是演化到每一个最终时间T=tau_q时的解u(tau_q)和v(tau_q)解。

常微分方程的数值解的matlab命令实现方法

常微分方程的数值解的matlab命令实现方法

常微分方程的数值解的matlab命令实现方法常微分方程的数值解在 MATLAB 中可以通过 ode 函数或 dsolve 函数进行求解。

其中,ode 函数可以求解一阶常微分方程,而 dsolve 函数可以求解二阶及以上的常微分方程。

下面是具体的实现方法:1. 一阶常微分方程的求解对于一阶常微分方程,可以使用 ode 函数求解。

假设我们要求解的常微分方程为:dx/dt = f(x, t)可以使用以下命令进行求解:y0 = [a, 0]; % 初值条件tspan = [0, 20]; % 时间区间[t, y] = ode45(@(t, y) odefun(t, y, a), tspan, y0); % 求解其中,odefun 函数用于定义常微分方程的解,它是一个自定义函数,其形式可以为:dy/dt = f(t, y)其中,dy 是 y 的求导,f(t, y) 是常微分方程的系数矩阵。

在 MATLAB 中,可以使用 dy[] 函数来计算 y 的求导,例如:dy = dy[](t, y);最后,使用 ode45 函数求解常微分方程的解,其中 tspan 是时间区间,y0 是初值条件。

2. 二阶常微分方程的求解对于二阶常微分方程,可以使用 dsolve 函数求解。

假设我们要求解的二阶常微分方程为:d2y/dt2 + p(t)dyy/dt + q(t)dy/dt + r(t)y = 0可以使用以下命令进行求解:syms t pqr;y0 = [a1, a2, a3]; % 初值条件[t, y] = dsolve(@(t, y) dy0(t, y), t, y0); % 求解其中,dy0 函数用于定义二阶常微分方程的解,其形式可以为:d2y/dt2 + p(t)dyy/dt + q(t)dy/dt + r(t)y = 0其中,d2y/dt2 是 y 的二阶求导,其它项是 y 的求导。

在 MATLAB 中,可以使用 dy0[] 函数来计算 y 的二阶求导。

矿产

矿产

矿产资源开发利用方案编写内容要求及审查大纲
矿产资源开发利用方案编写内容要求及《矿产资源开发利用方案》审查大纲一、概述
㈠矿区位置、隶属关系和企业性质。

如为改扩建矿山, 应说明矿山现状、
特点及存在的主要问题。

㈡编制依据
(1简述项目前期工作进展情况及与有关方面对项目的意向性协议情况。

(2 列出开发利用方案编制所依据的主要基础性资料的名称。

如经储量管理部门认定的矿区地质勘探报告、选矿试验报告、加工利用试验报告、工程地质初评资料、矿区水文资料和供水资料等。

对改、扩建矿山应有生产实际资料, 如矿山总平面现状图、矿床开拓系统图、采场现状图和主要采选设备清单等。

二、矿产品需求现状和预测
㈠该矿产在国内需求情况和市场供应情况
1、矿产品现状及加工利用趋向。

2、国内近、远期的需求量及主要销向预测。

㈡产品价格分析
1、国内矿产品价格现状。

2、矿产品价格稳定性及变化趋势。

三、矿产资源概况
㈠矿区总体概况
1、矿区总体规划情况。

2、矿区矿产资源概况。

3、该设计与矿区总体开发的关系。

㈡该设计项目的资源概况
1、矿床地质及构造特征。

2、矿床开采技术条件及水文地质条件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

矿产资源开发利用方案编写内容要求及审查大纲
矿产资源开发利用方案编写内容要求及《矿产资源开发利用方案》审查大纲一、概述
㈠矿区位置、隶属关系和企业性质。

如为改扩建矿山, 应说明矿山现状、
特点及存在的主要问题。

㈡编制依据
(1简述项目前期工作进展情况及与有关方面对项目的意向性协议情况。

(2 列出开发利用方案编制所依据的主要基础性资料的名称。

如经储量管理部门认定的矿区地质勘探报告、选矿试验报告、加工利用试验报告、工程地质初评资料、矿区水文资料和供水资料等。

对改、扩建矿山应有生产实际资料, 如矿山总平面现状图、矿床开拓系统图、采场现状图和主要采选设备清单等。

二、矿产品需求现状和预测
㈠该矿产在国内需求情况和市场供应情况
1、矿产品现状及加工利用趋向。

2、国内近、远期的需求量及主要销向预测。

㈡产品价格分析
1、国内矿产品价格现状。

2、矿产品价格稳定性及变化趋势。

三、矿产资源概况
㈠矿区总体概况
1、矿区总体规划情况。

2、矿区矿产资源概况。

3、该设计与矿区总体开发的关系。

㈡该设计项目的资源概况
1、矿床地质及构造特征。

2、矿床开采技术条件及水文地质条件。

相关文档
最新文档