4实验-微分方程的数值解
微分方程的数值解法

微分方程的数值解法微分方程是描述自然界中众多现象和规律的重要数学工具。
然而,许多微分方程是很难或者无法直接求解的,因此需要使用数值解法来近似求解。
本文将介绍几种常见的微分方程数值解法。
1. 欧拉方法欧拉方法是最简单的数值解法之一。
它将微分方程转化为差分方程,通过计算离散点上的导数来逼近原方程的解。
欧拉方法的基本思想是利用当前点的导数值来估计下一个点的函数值。
具体步骤如下:首先,将自变量区间等分为一系列的小区间。
然后,根据微分方程的初始条件,在起始点确定初始函数值。
接下来,根据导数的定义,计算每个小区间上函数值的斜率。
最后,根据初始函数值和斜率,递推计算得到每个小区间上的函数值。
2. 龙格-库塔方法龙格-库塔方法是一种常用的高阶精度数值解法。
它通过进行多次逼近和修正来提高近似解的准确性。
相比于欧拉方法,龙格-库塔方法在同样的步长下可以获得更精确的解。
具体步骤如下:首先,确定在每个小区间上的步长。
然后,根据微分方程的初始条件,在起始点确定初始函数值。
接下来,根据当前点的导数值,使用权重系数计算多个中间点的函数值。
最后,根据所有中间点的函数值,计算出当前点的函数值。
3. 改进欧拉方法(改进的欧拉-克罗默法)改进欧拉方法是一种中阶精度数值解法,介于欧拉方法和龙格-库塔方法之间。
它通过使用两公式递推来提高精度,并减少计算量。
改进欧拉方法相对于欧拉方法而言,增加了一个估计项,从而减小了局部截断误差。
具体步骤如下:首先,确定在每个小区间上的步长。
然后,根据微分方程的初始条件,在起始点确定初始函数值。
接下来,利用欧拉方法计算出中间点的函数值。
最后,利用中间点的函数值和斜率,计算出当前点的函数值。
总结:微分方程的数值解法为我们研究和解决实际问题提供了有力的工具。
本文介绍了欧拉方法、龙格-库塔方法和改进欧拉方法这几种常见的数值解法。
选择合适的数值解法取决于微分方程的性质以及对解的精确性要求。
在实际应用中,我们应该根据具体情况选择最合适的数值解法,并注意控制步长以尽可能减小误差。
微分方程数值解法实验报告

微分方程数值解法实验报告2篇微分方程数值解法实验报告(一)在实际科学与工程问题中,我们经常会遇到微分方程的求解。
然而,许多微分方程往往没有解析解,这就需要我们利用数值方法来获得近似解。
本篇实验报告将介绍两种常见的微分方程数值解法:欧拉方法和改进的欧拉方法。
一、欧拉方法欧拉方法是最简单的微分方程数值解法之一。
其基本原理为离散化微分方程,将微分方程中的导数用差商代替。
设要求解的微分方程为dy/dx = f(x, y),步长为h,则可用以下公式进行递推计算:y_{n+1} = y_n +hf(x_n, y_n)二、算法实现为了对欧拉方法进行数值实验,我们以一阶线性常微分方程为例:dy/dx = x - y, y(0) = 1步骤如下:(1)选择合适的步长h和求解区间[a, b],这里我们取h=0.1,[a, b] = [0, 1];(2)初始化y_0 = 1;(3)利用欧拉方法递推计算y_{n+1} = y_n + 0.1(x_n - y_n);(4)重复步骤(3),直到x_n = 1。
三、实验结果与讨论我们通过上述步骤得到了在[0, 1]上的近似解y(x)。
下图展示了欧拉方法求解的结果。
从图中可以看出,欧拉方法得到的近似解与精确解有一定的偏差。
这是因为欧拉方法只是通过递推计算得到的近似解,并没有考虑到更高阶的误差。
所以在需要高精度解时,欧拉方法并不理想。
四、改进的欧拉方法针对欧拉方法的不足,我们可以考虑使用改进的欧拉方法(也称为改进的欧拉-柯西方法)。
它是通过利用前后两个步长欧拉方法得到的结果作为差商的中间项,从而提高了求解精度。
一阶线性常微分方程的改进欧拉方法可以表示为:y_{n+1} = y_n + h(f(x_n, y_n) + f(x_{n+1}, y_n + hf(x_n,y_n)))/2五、算法实现与结果展示将改进的欧拉方法应用于前述的一阶线性常微分方程,我们同样选择h=0.1,[a, b] = [0, 1]。
微分方程数值解

本科生实验报告实验课程微分方程数值解学院名称管理科学学院专业名称信息与计算科学学生学生学号指导教师林红霞实验地点6C402实验成绩二〇一五年十月二〇一五年十一月填写说明1、适用于本科生所有的实验报告〔印制实验报告册除外〕;2、专业填写为专业全称,有专业方向的用小括号标明;3、格式要求:①用A4纸双面打印〔封面双面打印〕或在A4大小纸上用蓝黑色水笔书写。
②打印排版:正文用宋体小四号,1.5倍行距,页边距采取默认形式〔上下2.54cm,左右2.54cm,页眉,页脚〕。
字符间距为默认值〔缩放100%,间距:标准〕;页码用小五号字底端居中。
③具体要求:题目〔二号黑体居中〕;摘要〔“摘要”二字用小二号黑体居中,隔行书写摘要的文字部分,小4号宋体〕;关键词〔隔行顶格书写“关键词”三字,提炼3-5个关键词,用分号隔开,小4号黑体);正文部分采用三级标题;第1章××(小二号黑体居中,段前0.5行)1.1 ×××××小三号黑体×××××〔〕小四号黑体〔〕参考文献〔〕,参考文献用五号宋体,参照《参考文献著录规则〔GB/T 7714-2005〕》。
实验一常微分方程初值解法〔一〕1 实验内容分别用Euler法、改良Euler法、Runge-kutta法求解初值问题{u ·=−2∗t∗u2 u(0)=12 实验数据与实验结果1〕实验结果欧拉法的值与真实的值改良欧拉法的值与真实的值4阶Runge-kutta法的值与真实的值欧拉法的值与真实的值改良欧拉法的值与真实的值4阶Runge-kutta法的值与真实的值从上图可以看出,Euler法计算出的结果与其他方法所得结果相对来说精度太低。
4 程序代码清单实验二求解二阶常微分初值问题〔二〕1 实验内容分别用差分法、Jacobi迭代法求解初值问题{−dudx2=sin x 0<x<1u(0)=u(1)=02 实验数据与实验结果〔可用文字描述或贴图的方式进行说明〕1〕实验结果3 程序代码清单〔可直接将可运行源代码粘贴在下面的方框中〕实验三用向前向后差分格式求解〔三〕1 实验内容分别用向前向后格式求解初值问题{ðuðt=ð2uðu2(0≼x≼1,0<t≼1) u(x,0)=e x (0<x<1)u(0,t)=e t,u(1,t)=e1+t (0≼t≼1)2 实验数据与实验结果〔可用文字描述或贴图的方式进行说明〕1〕实验结果向前差分结果:T =Columns 1 through 10Columns 11 through 20Columns 21 through 30Columns 31 through 40Columns 41 through 50Columns 51 through 60Columns 61 through 70Columns 71 through 80Columns 81 through 90Columns 91 through 100Columns 101 through 110Columns 111 through 120Columns 121 through 130Columns 131 through 140Columns 141 through 150Columns 151 through 160Columns 161 through 170Columns 171 through 180Columns 181 through 190Columns 191 through 200Column 201x =Columns 1 through 10Column 11向后差分结果:图3-1 向后差分结果图3-2 向后差分结果4 程序代码清单〔可直接将可运行源代码粘贴在下面的方框中〕实验四显格式求解初值解法〔四〕1 实验内容用显格式求解{utt=uxx (0<x<1,t>0) u(0,t)=u(1,t)=0 (t>0)u(x,0)=sin4πx,ut(x,0)=sin8πx (0<x<1)2 实验数据与实验结果〔可用文字描述或贴图的方式进行说明〕1)实验结果图4-1 (x,u(:,501),'b')图图4-2 (x,u(:,1001),'b')图图4-3 (x,u(:,1501),'b')图4 程序代码清单〔可直接将可运行源代码粘贴在下面的方框中〕。
微分方程数值解实习题

function y=f2(t,u)
y=t^3*u^3-t*u;
%Adams二步外插+Euler方法,例2
n=input('n=');%n等分
T=input('T=');%时间上界
H=input('H=');%第一个小区间H等分
h=T/n;%步长
hh=h/H;%小步长
u=zeros(n+1,1);
Columns 31 through 36
0.1865 0.1910 0.1955 0.2000 0.2043 0.2086
Columns 37 through 42
0.2128 0.2170 0.2211 0.2252 0.2292 0.2331
Columns 43 through 48
0.2370 0.2409 0.2447 0.2484 0.2521 0.2558
for m=1:n-1
u1(m+2)=u1(m+1)+(1/12)*h*(5*f1((m+2)*h,u1(m+2))+8*f1((m+1)*h,u1(m+1))-f1(m*h,u1(m)));
end
uu=zeros(n+1,1);
uu(1)=1;
for m=2:n+1
uu(m)=1/3*exp(m*h)+2/3*exp(-2*m*h);
Columns 57 through 63
0.2872 0.2906 0.2939 0.2972 0.3005 0.3037 0.3070
Columns 64 through 70
0.3102 0.3134 0.3166 0.3198 0.3230 0.3261 0.3293
实验四:求微分方程的解

Euler 折线法
考虑一维经典初值问题
dy dx f ( x , y ) , y ( x 0 ) y0 , x [ a , b ]
基本思想:用差商代替微商
根据 Talyor 公式,y(x) 在点 xk 处有
y ( x ) y ( x k ) ( x x k ) y '( x k ) O ( x )
是一类求解法
用得较多的是 四阶R-K方法(教材第 79 页)
x k 1 x k h y 0 y ( x 0 ), y k 1 y k h ( L1 2 L 2 2 L 3 L 4 )/6
r = dsolve('Dx+5*x=0','Dy-3*y=0', ... 'x(0)=1', 'y(0)=1','t') 这里返回的 r 是一个 结构类型 的数据 r.x r.y %查看解函数 x(t) %查看解函数 y(t)
dsolve的输出个数只能为一个 或 与方程个数相等。
只有很少一部分微分方程(组)能求出解析解。 大部分微分方程(组)只能利用数值方法求数值解。
Euler折线法举例(续)
解析解: y
2 5 3x e 2x 3 3
1/3
解析解
近似解
Runge-Kutta 方法
为了减小误差,可采用以下方法:
让步长 h 取得更小一些; 改用具有较高精度的数值方法:
Runge-Kutta (龙格-库塔) 方法
龙格-库塔方法
dy 2 2 y 2 x 2 x dx y(0) 1
的数值解,求解范
微分方程数值解法实验报告

微分方程数值解法实验报告姓名: 班级: 学号:一:问题描述求解边值问题:()2(sin cos cos sin (0,1)(0,1)0,(,)x y u e x y x y G u x y G ππππππ+⎧⎫∆=+⎪⎪∈=⨯⎨⎬⎪⎪=∈∂⎩⎭(x,y) 其精确解为)sin()sin(),()(y x e y x u y x πππ+=问题一:取步长h=k=1/64,1/128,作五点差分格式,用Jacobi 迭代法,Gauss_Seidel 迭代法,SOR 迭代法(w=1.45)。
求解差分方程,以前后两次重合到小数点后四位的迭代值作为解的近似值,比较三种解法的迭代次数以及差分解)128/1,64/1)(,(=h y x u h 与精确解的精度。
问题二:取步长h=k=1/64,1/128,作五点差分格式,用单参数和双参数PR 法解差分方程,近似到小数点后四位。
与SOR 法比较精度和迭代步数。
问题三:取步长h=k=1/64,1/128,作五点差分格式,用共轭梯度法和预处理共轭梯度法解差分方程,近似到小数点后四位。
与SOR法与PR 法比较精度和迭代步数。
二.实验目的:分别使用五点差分法(Jacobi 迭代,Gauss_Seidel 迭代,SOR迭代),PR 交替隐式差分法(单参数,双参数),共轭梯度法,预共轭梯度法分别求椭圆方程的数值解。
三.实验原理:(1) Jacobi 迭代法设线性方程组(1)的系数矩阵A 可逆且主对角元素均不为零,令 并将A 分解成(2) 从而(1)可写成令其中. (3) 以为迭代矩阵的迭代法(公式)(4)称为雅可比(Jacobi)迭代法(公式),用向量的分量来表示,(4)为(5) 其中为初始向量. (2) Guass-Seidel 迭代法由雅可比迭代公式可知,在迭代的每一步计算过程中是用的全部分量来计算的所有分量,显然在计算第i 个分量时,已经b Ax =nn a ,...,a ,a 2211()nn a ,...,a ,a diag D 2211=()D D A A +-=()b x A D Dx +-=11f x B x +=b D f ,A D I B 1111--=-=1B ()()111f x B x k k +=+⎩⎨⎧[],...,,k ,n ,...,i x a b a x n ij j )k (j j i i ii )k (i 21021111==∑-=≠=+()()()()()Tn x ,...x ,x x 002010=()k x ()1+k x ()1+k i x计算出的最新分量没有被利用,从直观上看,最新计算出的分量可能比旧的分量要好些.因此,对这些最新计算出来的第次近似的分量加以利用,就得到所谓解方程组的高斯—塞德(Gauss-Seidel )迭代法.把矩阵A 分解成(6)其中,分别为的主对角元除外的下三角和上三角部分,于是,方程组(1)便可以写成 即其中(7)以为迭代矩阵构成的迭代法(公式)(8)称为高斯—塞德尔迭代法(公式),用 量表示的形式为(3) SOR 迭代(4) 交替方向迭代法(PR 法)迭代格式为:()()1111+-+k i k x ,...,x 1+k ()1+k x ()1+k j x U L D A --=()nn a ,...,a ,a diag D 2211=U ,L --A ()b Ux x L D +=-22f x B x +=()()b L D f ,U L D B 1212---=-=2B ()()221f x B x k k +=+⎩⎨⎧[],...,,k ,n ,,i x a x a b a x i j n i j )k (j ij )k (j ij i ii )k (i 21021111111==∑∑--=-=+=++Λ))1(()(1D R L D T ωωω-+-=-b )(1--=L D d ωωhu πμωcos )11/(22opt =-+=2121,,1,1,1,,122L L L L u u u L u u u j i j i j i j i j i j i +==+-=+-+-+-对于单参数PR 法,对于多参数,(5) 共轭梯度法 算法步骤如下: [预置步]任意,计算,并令取:指定算法终止常数,置,进入主步;[主步] (1)如果,终止算法,输出;否则下行;(2)计算:(3)计算:(4)置,转入(1).(6) 预共轭梯度法b uL I uL I b u L I uL I k k k k k k k k k k ττττττ+-=++-=++++211122211)()()()(hh optπτsin 22=2sin a ....2,1)11(421k 221h k a h k πρρτ==+-=--其中[预置步]任意,计算,并令取:指定算法终止常数,置,进入主步;[主步](1)计算:,(2)如果,转入(3).否则,终止算法,输出计算结果(3)计算:(4)置,转入(1)注:在算法[主步]中,引入变量,及,可以简化计算。
实验4 常微分方程的数值解法

[内容] 1. 欧拉格式(或改进的欧拉格式),编写 相应的程序并能正确运行。 2. 经典四:先描述清楚问题。
实验4 常微分方程的数值解法 [要求]
1.程序的调试要耐心、细致;
2.语句应尽可能加注注释; 3.本次实验的各个程序(M文件)打包成压缩文件 (格式:学号姓名.RAR,如:200910119李娟.RAR), 按时提交。
实验4 常微分方程的数值解法
[目的]
1.常微分方程差分算法的计算机实现;
2.进一步理解欧拉格式、改进的欧拉格式(预报—
校正系统)、龙格—库塔格式等算法,会运用这些方
法解决初步的常微分方程的求解问题; 3.进一步熟悉MATLAB数学软件的使用,锻炼程序 调试、排错的能力。
实验4 常微分方程的数值解法
求微分方程数值解

求微分方程数值解
微分方程数值解是一种数学方法,用于解决一些复杂的微分方程,特别是那些无法通过解析方法求解的微分方程。
通过数值解法,我们可以得到微分方程的近似解,并且可以在计算机上进行实现,以便更好地理解和分析问题。
我们需要将微分方程转化为差分方程,这样就可以利用数值方法进行求解。
差分方程是一种以离散形式表示微分方程的方法,通过近似替代微分表达式,将连续问题转化为离散问题,从而实现计算机求解。
常见的数值方法包括欧拉方法、龙格-库塔方法等,它们通过不断迭代求解差分方程,逼近微分方程的解。
在应用数值解法求解微分方程时,需要注意选择合适的步长和迭代次数,以确保数值解的准确性和稳定性。
步长过大会导致数值误差增大,步长过小则会增加计算量,影响计算效率。
因此,需要在准确性和效率之间寻找平衡点,选择合适的参数进行计算。
在使用数值解法时,还需要考虑边界条件和初值条件的设定。
这些条件对于微分方程的求解至关重要,不同的条件设定可能会导致不同的数值解,甚至无法得到有效的解。
因此,在进行数值计算之前,需要对问题进行充分的分析和理解,确定合适的条件,以确保数值解的准确性和可靠性。
总的来说,微分方程数值解是一种强大的工具,可以帮助我们解决
复杂的微分方程,探索未知的领域。
通过合理的数值方法和参数选择,我们可以得到准确的数值解,从而更好地理解和应用微分方程的理论。
希望通过不断的探索和实践,我们可以更深入地理解微分方程数值解的原理和方法,为科学研究和工程实践提供更多有益的帮助。