常数变易法的实质以及为什么可以用常数变易法解微分方程

常数变易法的实质以及为什么可以用常数变易法解微分方程
常数变易法的实质以及为什么可以用常数变易法解微分方程

欲得到非齐次线性微分方程的通解,我们首先求出对应的齐次方程的通解,然后用待定系数法或常数变易法求出非齐次方程本身的一个特解,把它们相加,就是非齐次方程的通解。

同济版的实质就是变量代换u,然后变成可分离变量。求出u,然后回代。解出方程。

解微分方程的实质就是变量替换,然后化解为可分离变量。然后回代。待定系数法

考虑以下的微分方程:

对应的齐次方程是:

它的通解是:

由于非齐次的部分是(),我们猜测特解的形式是:

把这个函数以及它的导数代入微分方程中,我们可以解出A:

因此,原微分方程的解是:

()

常数变易法

假设有以下的微分方程:

我们首先求出对应的齐次方程的通解,其中C1、C2是常数,y1、y2是x的函数。然后我们用常数变易法求出非齐次方程的一个特解,方法是把齐次方程的通解中的常数C1、C2换成x的未知函数u1、u2,也就是:

y = u1y1 + u2y2。(1)

两边求导数,可得:

y' = u1' y1 + u2' y2 + u1y1' + u2y2'。

我们把函数u1、u2加上一条限制:

u1' y1 + u2' y2 = 0。(4)

于是:

y ' = u1y1' + u2y2'。(2)

两边再求导数,可得:

y" = u1' y1' + u2' y2' + u1y1" + u2y2"。(3)

把(1)、(2)、(3)代入原微分方程中,可得:

u1' y1' + u2' y2' + u1y1" + u2y2" + pu1y1' + pu2y2' + qu1y1 + qu2y2 = f(x)。

整理,得:

u1' y1' + u2' y2' + (u1y1" + pu1y1' + qu1y1) + (u2y2" + pu2y2' + qu2y2) = f(x)。由于y1和y2都是齐次方程的通解,因此(u1y1" + pu1y1' + qu1y1)和(u2y2" + pu2y2' + qu2y2)都变为零,故方程化为:

u1' y1' + u2' y2' = f(x)。(5)

(4)和(5)联立起来,便得到了一个u1'和u2'的方程组。解这个方程组,便可得到u1'和u2'的表达式;再积分,便可得到u1和u2的表达式。

这个方法也可以用来解高于二阶的非齐次线性微分方程。一般地,有:

其中W表示朗斯基行列式。

接下来的文章,我觉得是可以解释为什么可以用常数变易法来解线性微分方程

1:变量替换法

对于一阶线性微分方程

以前我一直在考虑常数变易法的实质是什么,我觉它就是个特殊的变量代换法。

在解齐次方程时用代换,而这里是; 一般地代换,

为的确定函数。是的未知函数,那么乘以可以表示任意的的函数。这是我想到的变量代换的理由。选一个适当的,就能使方程化成变量可分离的。

这个是怎么选定的,反向过来看,把带入后,得到

,刚好后两项相互抵消,就可分离变量了。也就是说当时人们想找一个能使后两项和为零的。其实这个问题就是解

, 刚好就是求对应的齐次方程的解。

接着来!

式子 (1)

对于这个式子最正常的思路就是“分离变量”(因为之前所学的思想无一不是把变量分

离再两边积分)。所以我们的思维就集中在如何将(1)式的和分离上来。

尝试和启示

先直接分离看一下:=> (2)

从中看出不可能单独除到左边来,所以是分不了的。这时想想以前解决“齐次方程”时用过的招数。

解法

设,即. 将代入(1)式:

=>

=>

=> (3)

这时u又不能单独除到左边来,所以还是宣告失败。不过,这里还是给了我们一点启示:如果某一项的变量分离不出来,那使该项成为零是比较好的选择。因为这样“变量分离不出”这个矛盾就消失了——整个一项都消失了,还需要分什么呢。比如说,对于(3)式,

如果,那么那一项就消失了;再比如说,对于(2)式,如果,那

么那一项也消失了。当然这些假设都是不可能的,因为和等于几是你无法干预的。不过我们可以这么想:如果我们巧妙地构造出一个函数,使这一项等于零,那不就万事大吉了。Ok,好戏开场了。

进一步:变量代换法

筒子们可能觉得要构造这么一个函数会很难。但结果会让你跌破眼镜。

就是这么符合要求的一个函数。其中和都是关于的函数。这样求对应于

的函数关系就转变成分别求对应于的函数关系和对应于的函数关系的问题。你可能觉得把一个函数关系问题变成两个函数关系问题,这简直是脑残的表现——非也,

和都非常有用,看到下面就知道了。

让我们看看讲代换代入(1)式会出现什么:

(4)

如果现在利用分离变量法来求对应于的函数关系,那么

就是我们刚刚遇到的没法把单独分离出来的那一项,既然分不出来,那么干脆把这

一项变为零好了。怎么变?这是的用处就有了。令,解出v对应x的函数关系,这本身就是一个可以分离变量的微分方程问题,可以将其解出来。

=> (5)

现在解出来了,接下来该处理了,实际上当解出来后就十分好处理了。把(5)

式代入(4)式,则这一项便被消掉了。剩下的是

而这也是一个可以分离变量的微分方程。同样可以十分容易

地解出来:=> =>

(6)

现在和都已求出,那么也迎刃而解:

= =

(7)

(这里)

这个方法看上去增加了复杂度,实际上却把一个不能直接分离变量的微分方程化成了两个可以直接分离变量的微分方程。这个方法不是没有名字的,它叫“变量代换法”(挺大众

的一名字),即用代换了。这时在你脑中不得不油然生出这么一种感觉:想了十一年想出来的法子,还真不是盖的。

2常数变易法

换个思路,求的微分方程(即)其实就是求

当时的齐次方程。所以,我们可以直接先把非齐次方程当

作齐次方程来解。即解出的解来。得:

(8)

注意这里的并非最终答案,从上一环节我们知道这其实是而已。而

最终答案是,仅是其中一部分。因此这里的并不是我们要的y,因此还要继续。

把(8)式和上面提到的(7)式比较一下:

(7)

(8)

结论、

(7)式是最终的结论,(8)式是目前我们可以到达的地方。那我们偷下懒好了:把(8)式的那个换成,再把这个解出来,不就ok了么。所谓的“常数变易法”就是这么来

的,即把常数硬生生地变成了。接下来的事情就简单多了,和前面是一个思路,把代

换代入(1)式,由于是一个可以令那个分离不出变量的

项被消掉的特解,因此即可知一定会解得。从中解出,再带回

便可得到最终答案。

迭代法求解线性方程组的研究

迭代法求解线性方程组的研究 【摘要】:本文总结了解线性方程组的三个迭代法,Jacobi 迭代法,Gauss-seidel 迭代法,SOR 迭代法,并且介绍了现代数值计算软件MATLAB 在这方面的应用,即分别给出三个迭代法的数值实验。 【关键字】:Jacobi 迭代法 Gauss-seidel 迭代法 SOR 迭代法 数值实验 一. 引言 迭代法是用某种极限过程去逐步逼近线性方程组精确解的方法,它是解高阶稀疏方程组的重 要方法。 迭代法的基本思想是用逐次逼近的方法求解线性方程组。 设有方程组 b Ax = …① 将其转化为等价的,便于迭代的形式 f Bx x += …② (这种转化总能实现,如令b f A I B =-=,), 并由此构造迭代公式 f Bx x k k +=+)() 1( …③ 式中B 称为迭代矩阵,f 称为迭代向量。对任意的初始向量) 0(x ,由式③可求得向量序列 ∞0)(}{k x ,若*) (lim x x k k =∞ →,则*x 就是方程①或方程②的解。此时迭代公式②是收敛的,否则称为发散的。构造的迭代公式③是否收敛,取决于迭代矩阵B 的性质。 本文介绍三种解线性方程组的最主要的三种迭代法:Jacobi 迭代法,Gauss-Seidel 迭代法和SOR 迭代法。本文结构如下:第二部分介绍Jacobi 迭代法及其数值实验,第三部分介绍Gauss-Seidel 迭代法及其数值实验,第四部分介绍SOR 迭代法及其数值实验,第五部分总结。 二. 雅克比(Jacobi )迭代法 1. 雅克比迭代法的格式 设有方程组

),,3,2,1(1 n i b x a j j n j ij ==∑= …① 矩阵形式为b Ax =,设系数矩阵A 为非奇异矩阵,且),,3,2,1(,0n i a ii =≠ 从式①中第i 个方程中解出x ,得其等价形式 )(1 1 1j n j j ij ii i x a b a x ∑≠=-= …② 取初始向量),,,() 0()0(2)0(1) 0(n x x x x =,对式②应用迭代法,可建立相应的迭代公式: )(11 1)() 1(∑≠=++-=n j j i k j ij ii k i b x a a x …③ 也可记为矩阵形式: J x J k F B x k +==) () 1( …④ 若将系数矩阵A 分解为A=D-L-U ,式中 ???? ? ? ? ??=nn a a a D 2211, ?? ? ?? ?? ? ??=--00 00121323121nn n n a a a a a a L , ?? ? ??? ? ? ? ?=--00 00122311312n n n n a a a a a a D 。 则方程Ax=b 变为 b x U L D =--)( 得 b x U L Dx ++=)( 于是 b D x U L D x 1 1 )(--++=

常微分方程作业欧拉法与改进欧拉法

P77 31.利用改进欧拉方法计算下列初值问题,并画出近似解的草图:dy + =t = t y y ≤ ≤ ,2 ;5.0 0,3 )0( )1(= ,1 ? dt 代码: %改进欧拉法 function Euler(t0,y0,inv,h) n=round(inv(2)-inv(1))/h; t(1)=t0; y(1)=y0; for i=1:n y1(i+1)=y(i)+h*fun(t(i),y(i)); t(i+1)=t(i)+h; y(i+1)=y(i)+1/2*h*(fun(t(i),y(i))+ fun(t(i+1),y1(i+1))) end plot(t,y,'*r') function y=fun(t,y); y=y+1; 调用:Euler(0,3,[0,2],0.5) 得到解析解:hold on; y=dsolve('Dy=y+1','(y(0)=3)','t'); ezplot(y,[0,2]) 图像:

dy y =t - t y ;2.0 t = ≤ )0( 0,5.0 ,4 )2(2= ≤ ? ,2 dt 代码: function Euler1(t0,y0,inv,h) n=round(inv(2)-inv(1))/h; t(1)=t0; y(1)=y0; for i=1:n y1(i+1)=y(i)+h*fun(t(i),y(i)); t(i+1)=t(i)+h; y(i+1)=y(i)+1/2*h*(fun(t(i),y(i))+ fun(t(i+1),y1(i+1))) end plot(t,y,'*r') function y=fun(t,y); y=y^2-4*t; 调用: Euler1(0,0.5,[0,2],0.2) 图像:

第六章解线性方程组的迭代法

第五章 解线性方程组的迭代法 本章主要内容: 迭代法收敛定义,矩阵序列收敛定义,迭代法基本定理,雅可比迭代法,高斯-塞德尔迭代法,系数矩阵为严格对角占优阵的采用雅可比迭代、高斯-塞德尔迭代的收敛性。 教学目的及要求: 使学生了解迭代法收敛定义,迭代法基本定理,掌握雅可比迭代法、高斯-塞德尔迭代法。 教学重点: 雅可比迭代法,高斯-塞德尔迭代法。 教学难点: 迭代法基本定理的证明以及作用。 教学方法及手段: 应用严格的高等代数、数学分析知识,完整地证明迭代法基本定理,讲清雅可比迭代法与高斯-塞德尔迭代法的关系,介绍雅可比迭代法与高斯-塞德尔迭代法在编程中的具体实现方法。 在实验教学中,通过一个具体实例,让学生掌握雅可比迭代法与高斯-塞德尔迭代法的具体实现,并能通过数值计算实验,揭示高斯-塞德尔迭代法是对雅可比迭代法的一种改进这一事实。 教学时间: 本章的教学的讲授时间为6学时,实验学时4学时。 教学内容: 一 迭代法定义 对于给定的线性方程组x Bx f =+,设它有唯一解*x ,则 **x Bx f =+ (6.1) 又设(0)x 为任取的初始向量,按下述公式构造向量序列 (1)(),0,1,2,k k x Bx f k +=+=L (6.2) 这种逐步代入求近似解的方法称为迭代法(这里B 与f 与k 无关)。如果() lim k k x →∞ 存在 (记为*x ),称此迭代法收敛,显然*x 就是方程组的解,否则称此迭代法发散。 迭代法求方程近似解的关键是是讨论由(6.1)式所构造出来的向量序列() {} k x 是否收敛。为此,我们引入误差向量 (1)(1)*k k x x ε++=- 将(6.2)式与(6.1)式相减,我们可得 (1)*()*()k k x x B x x +-=- (1)(),0,1,2,k k B k εε+==L 递推下去,得 ()(1)2(2)(0)k k k k B B x B x εε--====L

阶线性方程与常数变易法习题及解答

§ 一阶线性方程与常数变易法习题及解答 求下列方程的解 1.dx dy =x y sin + 解: y=e ?dx (?x sin e ?-dx c dx +) =e x [- 2 1e x -(x x cos sin +)+c] =c e x -21 (x x cos sin +)是原方程的解。 2.dt dx +3x=e t 2 解:原方程可化为: dt dx =-3x+e t 2 所以:x=e ?-dt 3 (?e t 2 e -?-dt 3c dt +) =e t 3- (5 1e t 5+c) =c e t 3-+5 1e t 2 是原方程的解。 3.dt ds =-s t cos +21t 2sin 解:s=e ?-tdt cos (t 2sin 2 1?e dt dt ?3c + ) =e t sin -(?+c dt te t t sin cos sin ) = e t sin -(c e te t t +-sin sin sin ) =1sin sin -+-t ce t 是原方程的解。 4. dx dy n x x e y n x =- , n 为常数. 解:原方程可化为:dx dy n x x e y n x += )(c dx e x e e y dx x n n x dx x n +??=?- )(c e x x n += 是原方程的解. 5.dx dy +1212--y x x =0

解:原方程可化为:dx dy =-1212+-y x x ?=-dx x x e y 212(c dx e dx x x +?-221) )21(ln 2+=x e )(1 ln 2?+--c dx e x x =)1(12x ce x + 是原方程的解. 6. dx dy 23 4xy x x += 解:dx dy 23 4xy x x += =23y x +x y 令 x y u = 则 ux y = dx dy =u dx du x + 因此:dx du x u +=2 u x 21u dx du = dx du u =2 c x u +=33 1 c x x u +=-33 (*) 将x y u =带入 (*)中 得:3433cx x y =-是原方程的解.

欧拉及改进的欧拉法求解常微分方程

生物信息技术0801 徐聪U200812594 #include #include void f1(double *y,double *x,double *yy) { y[0]=2.0; x[0]=0.0; yy[0]=2.0; for(int i=1;i<=9;i++) { x[i]=x[i-1]+0.2; y[i]=y[i-1]+0.2*(y[i-1]-x[i-1]); yy[i]=x[i]+1+exp(x[i]); printf("若x=%f,计算值是%f,真实值是%f,截断误差是%f\n ",x[i],y[i],yy[i],y[i]-yy[i]); } }; void f2(double *y,double *x,double *yy) { y[0]=1.0; x[0]=0.0; yy[0]=1.0; for(int i=1;i<=9;i++) { x[i]=x[i-1]+0.2; y[i]=y[i-1]+0.2*(2*y[i-1]+x[i-1]*x[i-1]); yy[i]=-0.5*(x[i]*x[i]+x[i]+0.5)+1.25*exp(2*x[i]); printf("若x=%f,计算值是%f,真实值是%f,截断误差是%f\n ",x[i],y[i],yy[i],y[i]-yy[i]); } }; void f3(double *y,double *x,double *yy,double *y0) { y[0]=2.0; x[0]=0.0; yy[0]=2.0; for(int i=1;i<=9;i++) { x[i]=x[i-1]+0.2; y0[i]=y[i-1]+0.2*(y[i-1]-x[i-1]); y[i]=y[i-1]+0.1*(y[i-1]-x[i-1]+y0[i-1]-x[i-1]);

求解线性方程组——超松弛迭代法(c)

求解线性方程组——超松弛迭代法 #include #include using namespace std; float *one_array_malloc(int n); //一维数组分配float **two_array_malloc(int m,int n); //二维数组分配float matrix_category(float* x,int n); int main() { const int MAX=100;//最大迭代次数 int n,i,j,k; float** a; float* x_0; //初始向量 float* x_k; //迭代向量 float precision; //精度 float w; //松弛因子 cout<<"输入精度e:"; cin>>precision; cout<>n; a=two_array_malloc(n,n+1); cout<>a[i][j]; } } x_0=one_array_malloc(n); cout<>x_0[i]; } x_k=one_array_malloc(n);

cout<<"输入松弛因子w (1>w; float temp; //迭代过程 for(k=0;k

[整理]一阶线性方程与常数变易法习题及解答.

§2.2 一阶线性方程与常数变易法习题及解答 求下列方程的解 1.dx dy =x y sin + 解: y=e ?dx (?x sin e ?-dx c dx +) =e x [- 2 1e x -(x x cos sin +)+c] =c e x -21 (x x cos sin +)是原方程的解。 2.dt dx +3x=e t 2 解:原方程可化为: dt dx =-3x+e t 2 所以:x=e ?-dt 3 (?e t 2 e -?-dt 3c dt +) =e t 3- (5 1e t 5+c) =c e t 3-+5 1e t 2 是原方程的解。 3.dt ds =-s t cos +21t 2sin 解:s=e ?-tdt cos (t 2sin 2 1?e dt dt ?3c + ) =e t sin -(?+c dt te t t sin cos sin ) = e t sin -(c e te t t +-sin sin sin ) =1sin sin -+-t ce t 是原方程的解。 4. dx dy n x x e y n x =- , n 为常数. 解:原方程可化为:dx dy n x x e y n x += )(c d x e x e e y dx x n n x dx x n +??=?- )(c e x x n += 是原方程的解. 5.dx dy +1212--y x x =0

解:原方程可化为:dx dy =-1212+-y x x ?=-dx x x e y 21 2(c dx e dx x x +?-221) )21(ln 2+=x e )(1 ln 2?+--c dx e x x =)1(1 2x ce x + 是原方程的解. 6. dx dy 234xy x x += 解:dx dy 2 34xy x x += =23y x +x y 令 x y u = 则 ux y = dx dy =u dx du x + 因此:dx du x u +=2 u x 21u dx du = dx du u =2 c x u +=33 1 c x x u +=-33 (*) 将x y u =带入 (*)中 得:3433cx x y =-是原方程的解.

常数变易法

常数变易法的解释 注:本方法是对崔士襄教授写的《“常数变易法”来历的探讨》论文的解释。思路并非本人原创。特此注明。背景详见本人前一篇博文。 我们来看下面的式子: y’+P(x).y = Q(x) (1) 对于这个式子最正常的思路就是“分离变量”(因为之前所学的思想无一不是把变量分离再两边积分)。所以我们的思维就集中在如何将(1)式的x和y分离上来。 起初的一些尝试和启示 先直接分离看一下: dy/dx+P(x)·y = Q(x) => dy = ( Q(x)-P(x).y ).dx (2) 从中看出y不可能单独除到左边来,所以是分不了的。这时想想以前解决“齐次方程”时用过的招数:设y/x = u = > y = u·x . 将y = u·x代入(1)式: u’·x+u+P(x)·u·x = Q(x) => u’·x+u·(1+P(x)·x) = Q(x) => du/dx·x = Q(x)-u(1+P(x)·x) => du = [Q(x)-u·(1+ P(x).x)].(1/x).dx (3) 这时u又不能单独除到左边来,所以还是宣告失败。不过,这里还是给了我们一点启示:如果某一项的变量分离不出来,那使该项成为零是比较好的选择。因为这样“变量分离不出”这个矛盾就消失了——整个一项都消失了,还需要分什么呢。比如说,对于(3)式,如果x=-1/P(x),那么那一项就消失了;再比如说,对于(2)式,如果P(x)=0,那么那一项也消失了。当然这些假设都是不可能的,因为x和P(x)等于几是你无法干预的。不过我们可以这么想:如果我们巧妙地构造出一个函数,使这一项等于零,那不就万事大吉了。Ok,好戏开场了。 进一步:变量代换法

线性方程组的迭代求解java

线性方程组的迭代求解 摘要 迭代法是一种逐次逼近方法,在使用迭代法解方程组时,其系数矩阵在计算过程中始终不变。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行。迭代法具有循环的计算方法,方法简单,适宜解大型稀疏矩阵方程组 本文总结了解线性方程组的三个迭代法,Jacobi迭代法,Gauss-Seidel迭代法,SOR 迭代法,并且介绍了软件JA V A在这方面的应用。 关键词: Jacobi迭代法;Gauss-Seidel迭代法;SOR迭代法;计算

SOLUTION OF LINEAR EQUATIONS OF ITERATION WITH THE EXPERIMENTAL ABSTRACT Iteration is a kind of method to solve questions by step-by-step approximation. When we are getting the solution of linear equations by using iteration, the coefficient matrix is always staying the same in computation process. Computer could operate fastly so that it is suitable for operating again and again. Iteration is easy to operate to solve the large matrix equations by using a calculate method called circulation. This summary understanding of linear equations three kind of iteration, Jacobi iteration, Gauss-Seidel iteration, successive over relaxation method ,and introduce modern software JA V A in this respect. Key words:Jacobi iteration; Gauss-Seidel iteration; Successive Over Relaxation method ; calculating

最新3-7-一阶线性方程与常数变易法汇总

3-7-一阶线性方程与常数变易法

2.2 一阶线性方程与常数变易公式(First order linear differential equation and constant variation formula ) [教学内容] 1. 认识一阶线性齐次方程和一阶线性非齐次方程; 2.介绍一阶线性非齐次方程的常数变易公式; 3. 介绍电学知识和基尔霍夫定律; 4. 认识Bernoulli方程及其通过变量替换化为一阶线性方程的解法; 5. 介绍其他可化为一阶线性方程的例子. [教学重难点] 重点是知道一阶线性非齐次方程的解法,难点是如何根据方程的形式引入新的变量变换使得新方程为一阶线性方程. [教学方法] 自学1、4;讲授2、3 课堂练习 [考核目标] 1.熟练运用常数变易公式; 2. 知道?Skip Record If...?计算和一些三角函数恒等式; 3. 知道电学一些知识,如电容电流公式、电感电压公式和基尔霍夫定律; 4. 知道溶液混合问题建模; 5. 认识Bernoulli方程并会经过适当变换化为线性方程求解. 6. 知道交换自变量和因变量化非线性方程为一阶线性方程. 1. 认识一阶线性齐次方程和一阶线性非齐次方程(First order (non)homogeneous linear differential equation) (1) 称形如?Skip Record If...?的方程为一阶线性齐次方程,其中?Skip Record If...?连续; 称形如?Skip Record If...?的方程为一阶线性非齐次齐次方程,其中?Skip Record If...?连续且?Skip Record If...?不恒为零. (2) 当?Skip Record If...?时,改写?Skip Record If...?为

常数变易法原理

常数变易法原理 Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】

常数变易法原理 我们来看下面的式子: y’+P(x).y=Q(x) (1) 对于这个式子最正常的思路就是“分离变量”(因为之前所学的思想无一不是把变量分离再两边积分)。所以我们的思维就集中在如何将(1)式的x和y分离上来。 起初的一些尝试和启示 先直接分离看一下: dy/dx+P(x).y=Q(x) dy=[Q(x)-P(x).y].dx (2) 从中看出y不可能单独除到左边来,所以是分不了的。这时想想以前解决“齐次方程”时用过的招数:设y/x=u→ y=u.x .将y=u.x代入(1)式: u’.x+u+P(x).u.x=Q(x) → u’.x+u.(1+P(x).x)=Q(x)→du/dx.x =Q(x)-u(1+P(x).x) →du=[Q(x)-u.(1+P(x).x)].(1/x).dx (3) 这时u又不能单独除到左边来,所以还是宣告失败。不过,这里还是给了我们一点启示:如果某一项的变量分离不出来,那使该项成为零是比较好的选择。因为这样“变量分离不出”这个矛盾就消失了——整个一项都消失了,还需要分什么呢。比如说,对于(3)式,如果x=-1/P(x),那么那一项就消失了;再比如说,对于(2)式,如果P(x)=0,那么那一项也消失了。当然这些假设都是不可能的,因为x和P(x)等于几是你无法干预的。

不过我们可以这么想:如果我们巧妙地构造出一个函数,使这一项等于零,那不就万事大吉了。Ok,好戏开场了。 进一步:变量代换法 筒子们可能觉得要构造这么一个函数会很难。但结果会让你跌破眼镜。y=u·v就是这么符合要求的一个函数。其中u和v都是关于x的函数。这样求y对应于x的函数关系就转变成分别求u对应于x的函数关系和v对应于x的函数关系的问题。你可能觉得把一个函数关系问题变成两个函数关系问题,这简直是脑残的表现——非也,u和v都非常有用,看到下面就知道了。 让我们看看讲代换y=u·v代入(1)式会出现什么: u’.v+u.(v’+P(x).v)=Q(x) (4) 如果现在利用分离变量法来求u对应于x的函数关系,那么u·(v’+ P(x)·v)就是我们刚刚遇到的没法把u单独分离出来的那一项,既然分不出来,那么干脆把这一项变为零好了。怎么变这是v的用处就有了。令v’+P(x)·v=0,解出v对应x的函数关系,这本身就是一个可以分离变量的微分方程问题,可以将其解出来。 dv/dx+P(x)·v=0 →v=C1.e^(-∫P(x)dx) (5)

SOR迭代法求解线性方程组

实验三:用SOR 迭代法求解线性方程组 ?????? ? ??=??????? ????????? ??----------74.012.018.168.072.012.006.016.012.001.103.014.006.003.088.001.016.014.001.076.04321x x x x 取初始点T x )0,0,0,0()0(=,松弛因子05.1=ω,精度要求610-=ε。 1,建立SOR.m 函数文件,此函数文件可调用,程序源码如下: function [x,n]=SOR(A,b,x0,w,eps,M) if nargin==4 eps= 1.0e-6;%精度要求 M = 200; elseif nargin<4 error; return elseif nargin ==5 M = 200; end if(w<=0 || w>=2) error; return; end D=diag(diag(A)); %求A 的对角矩阵 L=-tril(A,-1); %求A 的下三角阵 U=-triu(A,1); %求A 的上三角阵 B=inv(D-L*w)*((1-w)*D+w*U); f=w*inv((D-L*w))*b; x=B*x0+f; n=1; %迭代次数 while norm(x-x0)>=eps x0=x; x =B*x0+f; n=n+1; if(n>=M) disp('Warning: 迭代次数太多,可能不收敛!'); return; end end

2,输入矩阵。并根据要求调用函数,运行结果如下图所示: 即经过7次迭代算出结果,且求得: 1.27151.28440.48581.2843x ?? ? ?= ? ???

江苏大学-常微分方程-3-7 - 一阶线性方程与常数变易法

2.2 一阶线性方程与常数变易公式(First order linear differential equation and constant variation formula ) [教学内容] 1. 认识一阶线性齐次方程和一阶线性非齐次方程; 2.介绍一阶线性非齐次方程的常数变易公式; 3. 介绍电学知识和基尔霍夫定律; 4. 认识Bernoulli 方程及其通过变量替换化为一阶线性方程的解法; 5. 介绍其他可化为一阶线性方程的例子. [教学重难点] 重点是知道一阶线性非齐次方程的解法,难点是如何根据方程的形式引入新的变量变换使得新方程为一阶线性方程. [教学方法] 自学1、4;讲授2、3 课堂练习 [考核目标] 1. 熟练运用常数变易公式; 2. 知道 ? dx bx sin e ax 计算和一些三角函数恒等式; 3. 知道电学 一些知识,如电容电流公式、电感电压公式和基尔霍夫定律; 4. 知道溶液混合问题建模; 5. 认识Bernoulli 方程并会经过适当变换化为线性方程求解. 6. 知道交换自变量和因变量化非线性方程为一阶线性方程. 1. 认识一阶线性齐次方程和一阶线性非齐次方程(First order (non)homogeneous linear differential equation ) (1) 称形如y p(x)dx dy =的方程为一阶线性齐次方程,其中p(x)连续; 称形如 q(x)y p(x)dx dy +=的方程为一阶线性非齐次齐次方程,其中q(x) p(x),连续且q(x)不恒为零. (2) 当0y ≠时,改写 y p(x)dx dy =为 1C dx p(x)|y |ln ,dx p(x)y dy dx, p(x)y dy +===???,其中?dx p(x)表示P(x)的一个原函数(antiderivative). 因此,y p(x)dx dy =通解(general solution)为1C p(x)dx e C ~ ,e C ~y =?±=,此外y=0也是解. 综上, y p(x)dx dy =的解为C ,e C y p(x)dx ?=为任意常数. (3) 常数变易法:如何求 q(x)y p(x)dx dy +=的解呢? 假定上述线性非齐次方程有如下形式的解 ?=p(x)dx e C(x)y ,则代入原方程来确定C(x), q(x)p(x)C(x)e e p(x) C(x)e (x)' C dx dy p(x)dx p(x)dx p(x)dx +?=?+?=, 即q(x)e (x)' C p(x)dx =?,C q(x)dx e C(x) q(x), e (x)' C p(x)dx -p(x)dx +? =? =?-,此处C 为

第8章 常微分方程数值解法 本章主要内容: 1.欧拉法

第8章 常微分方程数值解法 本章主要内容: 1.欧拉法、改进欧拉法. 2.龙格-库塔法。 3.单步法的收敛性与稳定性。 重点、难点 一、微分方程的数值解法 在工程技术或自然科学中,我们会遇到的许多微分方程的问题,而我们只能对其中具有较简单形式的微分方程才能够求出它们的精确解。对于大量的微分方程问题我们需要考虑求它们的满足一定精度要求的近似解的方法,称为微分方程的数值解法。本章我们主要 讨论常微分方程初值问题?????==00 )() ,(y x y y x f dx dy 的数值解法。 数值解法的基本思想是:在常微分方程初值问题解的存在区间[a,b]内,取n+1个节点a=x 0<x 1<…<x N =b (其中差h n = x n –x n-1称为步长,一般取h 为常数,即等步长),在这些节点上把常微分方程的初值问题离散化为差分方程的相应问题,再求出这些点的上的差分方程值作为相应的微分方程的近似值(满足精度要求)。 二、欧拉法与改进欧拉法 欧拉法与改进欧拉法是用数值积分方法对微分方程进行离散化的一种方法。 将常微分方程),(y x f y ='变为() *+=?++1 1))(,()()(n x n x n n dt t y t f x y x y 1.欧拉法(欧拉折线法) 欧拉法是求解常微分方程初值问题的一种最简单的数值解法。 欧拉法的基本思想:用左矩阵公式计算(*)式右端积分,则得欧拉法的计算公式为:N a b h N n y x hf y y n n n n -= -=+=+)1,...,1,0(),(1 欧拉法局部截断误差 11121 )(2 ++++≤≤''=n n n n n x x y h R ξξ或简记为O (h 2)。

常数变易法原理

常数变易法原理 我们来看下面的式子: y’+P(x).y?=?Q(x) (1) 对于这个式子最正常的思路就是“分离变量”(因为之前所学的思想无一不是把变量分离再两边积分)。所以我们的思维就集中在如何将(1)式的x和y分离上来。 ??起初的一些尝试和启示 先直接分离看一下: dy/dx+P(x).y?=?Q(x) dy?=?[Q(x)-P(x).y].dx (2) 从中看出y不可能单独除到左边来,所以是分不了的。这时想想以前解决“齐次方程”时用过的招数:设y/x?=?u??→y?=?u.x .将y?=?u.x代入(1)式: u’.x+u+P(x).u.x?=?Q(x) →u’.x+u.(1+P(x).x)?=?Q(x)→du/dx.x?=?Q(x)-u(1+P(x).x) →du?=?[Q(x)-u.(1+P(x).x)].(1/x).dx (3) 这时u又不能单独除到左边来,所以还是宣告失败。不过,这里还是给了我们一点启示:如果某一项的变量分离不出来,那使该项成为零是比较好的选择。因为这样“变量分离不出”这个矛盾就消失了——整个一项都消失了,还需要分什么呢。比如说,对于(3)式,如果x=-1/P(x),那么那一项就消失了;再比如说,对于(2)式,如果P(x)=0,那么那一项也消失了。当然这些假设都是不可能的,因为x和P(x)等于几是你无法干预的。不过我们可以这么想:如果我们巧妙地构造出一个函数,使这一项等于零,那不就万事大吉了。Ok,好戏开场了。

?进一步:变量代换法 筒子们可能觉得要构造这么一个函数会很难。但结果会让你跌破眼镜。y=u·v 就是这么符合要求的一个函数。其中u和v都是关于x的函数。这样求y对应于x的函数关系就转变成分别求u对应于x的函数关系和v对应于x的函数关系的问题。你可能觉得把一个函数关系问题变成两个函数关系问题,这简直是脑残的表现——非也,u和v都非常有用,看到下面就知道了。 让我们看看讲代换y=u·v代入(1)式会出现什么: u’.v+u.(v’+P(x)?.v)?=?Q(x) (4) 如果现在利用分离变量法来求u对应于x的函数关系,那么u·(v’+P(x)?·v)就是我们刚刚遇到的没法把u单独分离出来的那一项,既然分不出来,那么干脆把这一项变为零好了。怎么变?这是v的用处就有了。令v’+P(x)?·v=0,解出v对应x的函数关系,这本身就是一个可以分离变量的微分方程问题,可以将其解出来。 ?dv/dx+P(x)?·v?=?0? →v?=?C1.e^(-∫P(x)dx)? (5) ?现在v解出来了,接下来该处理u了,实际上当v解出来后u就十分好处理了。把(5)式代入(4)式,则u·(v’+P(x)·v)这一项便被消掉了。剩下的是u’?·C1·e^(-∫P(x)dx)?=?Q(x) 而这也是一个可以分离变量的微分方程。同样可以十分容易地解出来: du/dx?·C1·e^(-∫P(x)dx)=Q(x) →du?=?1/C1·e^(∫P(x)dx)·Q(x)·dx →u?=?1/C1.∫e^(∫P(x)dx).Q(x).dx+C2 (6)

MATLAB求解常微分方程数值解

利用MATLAB求解常微分方程数值解

目录 1. 内容简介 (1) 2. Euler Method(欧拉法)求解 (1) 2.1. 显式Euler法和隐式Euler法 (2) 2.2. 梯形公式和改进Euler法 (3) 2.3. Euler法实用性 (4) 3. Runge-Kutta Method(龙格库塔法)求解 (5) 3.1. Runge-Kutta基本原理 (5) 3.2. MATLAB中使用Runge-Kutta法的函数 (7) 4. 使用MATLAB求解常微分方程 (7) 4.1. 使用ode45函数求解非刚性常微分方程 (8) 4.2. 刚性常微分方程 (9) 5. 总结 (9) 参考文献 (11) 附录 (12) 1. 显式Euler法数值求解 (12) 2. 改进Euler法数值求解 (12) 3. 四阶四级Runge-Kutta法数值求解 (13) 4.使用ode45求解 (14)

1.内容简介 把《高等工程数学》看了一遍,增加对数学内容的了解,对其中数值解法比较感兴趣,这大概是因为在其它各方面的学习和研究中经常会遇到数值解法的问题。理解模型然后列出微分方程,却对着方程无从下手,无法得出精确结果实在是让人难受的一件事情。 实际问题中更多遇到的是利用数值法求解偏微分方程问题,但考虑到先从常微分方程下手更为简单有效率,所以本文只研究常微分方程的数值解法。把一个工程实际问题弄出精确结果远比弄清楚各种细枝末节更有意思,因此文章中不追求非常严格地证明,而是偏向如何利用工具实际求解出常微分方程的数值解,力求将课程上所学的知识真正地运用到实际方程的求解中去,在以后遇到微分方程的时候能够熟练运用MATLAB得到能够在工程上运用的结果。 文中求解过程中用到MATLAB进行数值求解,主要目的是弄清楚各个函数本质上是如何对常微分方程进行求解的,对各种方法进行MATLAB编程求解,并将求得的数值解与精确解对比,其中源程序在附录中。最后考察MATLAB中各个函数的适用范围,当遇到实际工程问题时能够正确地得到问题的数值解。 2.Euler Method(欧拉法)求解 Euler法求解常微分方程主要包括3种形式,即显式Euler法、隐式Euler法、梯形公式法,本节内容分别介绍这3种方法的具体内容,并在最后对3种方法精度进行对比,讨论Euler法的实用性。 本节考虑实际初值问题 使用解析法,对方程两边同乘以得到下式

常数变易法的解释

常数变易法的解释 我们来看下面的式子: y’+P(x).y =Q(x) (1) 对于这个式子最正常的思路就是“分离变量”(因为之前所学的思想无一不是把变量分离再两边积分)。所以我们的思维就集中在如何将(1)式的x和y分离上来。 起初的一些尝试和启示 先直接分离看一下: dy/dx+P(x)·y =Q(x) => dy =( Q(x)-P(x).y ).dx (2) 从中看出y不可能单独除到左边来,所以是分不了的。这时想想以前解决“齐次方程”时用过的招数:设y/x =u => y =u·x . 将y =u·x代入(1)式: u’·x+u+P(x)·u·x =Q(x) => u’·x+u·(1+P(x)·x) =Q(x) => du/dx·x =Q(x)-u(1+P(x)·x) => du =[Q(x)-u.(1+P(x).x)].(1/x).dx (3) 这时u又不能单独除到左边来,所以还是宣告失败。不过,这里还是给了我们一点启示:如果某一项的变量分离不出来,那使该项成为零是比较好的选择。因为这样“变量分离不出”这个矛盾就消失了——整个一项都消失了,还需要分什么呢。比如说,对于(3)式,如果x=-1/P(x),那么那一项就消失了;再比如说,对于(2)式,如果P(x)=0,那么那一项也消失了。当然这些假设都是不可能的,因为x和P(x)等于几是你无法干预的。不过我们可以这么想:如果我们巧妙地构造出一个函数,使这一项等于零,那不就万事大吉了。Ok,好戏开场了。 进一步:变量代换法 筒子们可能觉得要构造这么一个函数会很难。但结果会让你跌破眼镜。y=u·v就是这么符合要求的一个函数。其中u和v都是关于x的函数。这样求y对应于x的函数关系就转变成分别求u对应于x的函数关系和v对应于x的函数关系的问题。你可能觉得把一个函数关系问题变成两个函数关系问题,这简直是脑残的表现——非也,u和v都非常有用,看到下面就知道了。 让我们看看讲代换y=u·v代入(1)式会出现什么: u’.v+u.(v’+P(x) .v) =Q(x) (4) 如果现在利用分离变量法来求u对应于x的函数关系,那么u·(v’+P(x) ·v)就是我们

fortran下欧拉法求解常微分方程(实例)

1. Euler 公式 100(,)() i i i i y y hf x y y y x +=+??=? 实例: ,00(,),0,1,01f x y x y x y x =-==≤≤ 精确解为:1x y x e -=+- 程序代码: DIMENSION x(0:20),y(0:20),z(0:20),k(0:21) DOUBLE PRECISION x,y,z,k,h,x0,y0,z0,k0,n f(x,y)=x-y n=20 h=1/n x(0)=0 y(0)=0 DO i=0,n-1 y(i+1)=y(i)+f(x(i),y(i))*h x(i+1)=x(i)+h ENDDO k(0)=0 DO i=0,n z(i)=k(i)+exp(-k(i))-1 k(i+1)=k(i)+h END DO open(10,file='1.txt') WRITE(10,10) (x(i),y(i),z(i),i=0,20) WRITE(*,10) (x(i),y(i),z(i),i=0,20) 10 FORMAT(1x,f10.8,2x,f10.8,2x,f10.8/) END 输出结果: 0.00000000 0.00000000 0.00000000 0.05000000 0.00000000 0.00122942 0.10000000 0.00250000 0.00483742 0.15000000 0.00737500 0.01070798 0.20000000 0.01450625 0.01873075 0.25000000 0.02378094 0.02880078 ???=='00)(),(y x y y x f y ???=='0 0)(),(y x y y x f y

最新4-18-求解线性非齐次高阶方程的特解-常数变易法汇总

4-18-求解线性非齐次高阶方程的特解-常 数变易法

精品资料 4.3 非齐次高阶线性方程特解的常数变易方法、叠加原理 ( Use the method of Variation of Constants to find particular solution to nonhomogeneous higher order Linear ODE) [教学内容] 1. 介绍非齐次线性方程特解的常数变易法. 2. 介绍非齐次线性方程特解的叠加原理.3. 介绍一些特殊求解方法(乘积求导法则、特征方程法和刘维尔公式) [教学重难点] 重点是知道常数变易法求解非齐次线性方程的特解;难点是如何给出未知函数满足的方程. [教学方法] 预习1、2、3;讲授1、2、3 [考核目标] 1. 灵活运用常数变易法求解非齐次线性方程的特解. 2. 知道非齐次线性方程特解的叠加原理. 3. 知道一些特殊求解方法(乘积求导法则、特征方程法和刘维尔公式) 1.常数变易法求解非齐次线性方程的特解(以二阶微分方程为例) (1)引例(1) 求出方程?Skip Record If...?; (2) ?Skip Record If...?的通解. 这里?Skip Record If...?和?Skip Record If...?不是多项式函数、不是指数函数、不是可以用形式特解的待定系数法来求解方程的特解. (2)解法思路:考察?Skip Record If...? (**). 为了求出方程(**)的一个特解,先考虑相应的二阶齐次线性方程?Skip Record If...?(*),假定已知齐次线性方程的基本解组?Skip Record If...?,则齐次线性方程的通解为?Skip Record If...?,其中?Skip Record If...?为常数. 仅供学习与交流,如有侵权请联系网站删除谢谢2

常微分方程欧拉算法

常微分方程欧拉算法 Company Document number:WUUT-WUUY-WBBGB-BWYTT-1982GT

常微分方程欧拉算法 摘要:本文主要论述了常微分方程的欧拉算法的算法原理,误差分析,实例,程序,以及算法比较等内容。 关键词:常微分方程 显式欧拉法 隐式欧拉法 引言:微分方程初值问题模型是常见的一类数学模型。对于一些简单而典型的微分方程模型,譬如线性方程、某些特殊的一阶非线性方程等是可以设法求出其解析解的,并有理论上的结果可资利用。但在数学建模中碰到的常微分方程初值问题模型,通常很难,甚至根本无法求出其解析解,而只能求其近似解。因此,研究其数值方法,以便快速求得数值鳃有其重大意义。 一、欧拉算法原理 对于微分方程初值问题 的解在xy 平面上是一条曲线,称为该微分方程的积分曲线。积分曲线上一点(),x y 的切线斜率等于函数f 在点(),x y 的值,从初始点()000,P x y 出发,向该点的切线方向推进到下一个点()111,P x y ,然后依次做下去,得到后面的未知点。一般地,若知道(),n n n P x y 依上述方法推进到点()111,n n n P x y +++,则两点的坐标关系为: 即 这种方法就是欧拉(Euler )方法(也叫显式欧拉法或向前欧拉法)。当初值0y 已知,则n y 可以逐步算出 对微分方程()=x y dy f dx ,从n x 到1n x +积分,那么有 现在用左矩形公式()(),n n hf x y x 代替()()1 ,n n x x f t y t dt +?,n y 代替()n y x ,1n y +代替() 1n y x +就得到了欧拉方法。如果用右矩形公式()()11,n n hf x y x ++去代替右端积分,则得到另外一 个公式,该方法就称为隐式欧拉法(或后退欧拉法),其公式为 欧拉公式与隐式欧拉公式的区别在于欧拉公式是关于1n y +的一个直接计算公式,然而隐式欧拉公式右端含有1n y +,所以它实际上是关于1n y +的一个函数方程。 二、实例 例 取h=,用Euler 方法解

相关文档
最新文档