龙格现象实验报告1
- 格式:doc
- 大小:60.00 KB
- 文档页数:6
关于龙格现象的实验报告1.实验目的:观察拉格朗日插值的龙格(Runge)现象.。
2. 实验内容: 对于函数211)(xx f +=进行拉格朗日插值,取不同的节点数n ,在区间[-5,5]上取等距间隔的节点为插值点,把f (x )和插值多项式的曲线画在同一张图上进行比较。
具体步骤如下:1)、编写拉格朗日插值函数(并将其存到当前路径的M 文件中)function y=lagrange(x0,y0,x)n=length(x0);m=length(x);for i=1:mz=x(i);L=0.0;for j=1:nT=1.0;for k=1:nif k~=jT=T*(z-x0(k))/(x0(j)-x0(k));endendL=T*y0(j)+L;endy(i)=L;end2)、取不同的n 值(注:当n 值不同时,间距间隔10/n 也在发生改变,程序中只需改变x0=-5:10/n:5中的n 值)。
现取n 分别等于4,6,8,10时,程序分别如下(1)取n =4,>> x0=-5:10/4:5;>> y0=1./(1+x0.^2);>> x=-5:0.1:5;>> y=lagrange(x0,y0,x);>> y1=1./(1+x.^2);>> plot(x,y1,'-k') 绘制原函数图象>> hold on>> plot(x,y,'-.r')>>(2)取n=6,>> x0=-5:10/6:5;>> y0=1./(1+x0.^2);>> x=-5:0.1:5;>> y=lagrange(x0,y0,x);>> y1=1./(1+x.^2);>> plot(x,y1,'-k')>> hold on>> plot(x,y,'--h')>>(3)取n=8,>> x0=-5:10/8:5;>> y0=1./(1+x0.^2);>> x=-5:0.1:5;>> y=lagrange(x0,y0,x);>> y1=1./(1+x.^2);>> plot(x,y1,'-k')>> hold on>> plot(x,y,'--g')>>(4)取n=10,>> x0=-5:1:5;>> y0=1./(1+x0.^2);>> x=-5:0.1:5;>> y=lagrange(x0,y0,x);>> y1=1./(1+x.^2);>> plot(x,y1,'-k')>> hold on>> plot(x,y,'--m')>>(5)依次输入上述程序,将f(x)和取不同节点数的插值多项式的曲线画在同一张图上进行比较。
1 / 21数值分析实验二:插值法1 多项式插值的震荡现象1.1 问题描述考虑一个固定的区间上用插值逼近一个函数。
显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。
我们自然关心插值多项式的次数增加时, 是否也更加靠近被逼近的函数。
龙格(Runge )给出一个例子是极著名并富有启发性的。
设区间[-1,1]上函数21()125f x x=+ (1)考虑区间[-1,1]的一个等距划分,分点为n i nix i ,,2,1,0,21 =+-= 则拉格朗日插值多项式为201()()125nn ii iL x l x x ==+∑(2)其中的(),0,1,2,,i l x i n =是n 次拉格朗日插值基函数。
实验要求:(1) 选择不断增大的分点数目n=2, 3 …. ,画出原函数f(x)及插值多项式函数()n L x 在[-1,1]上的图像,比较并分析实验结果。
(2) 选择其他的函数,例如定义在区间[-5,5]上的函数x x g xxx h arctan )(,1)(4=+=重复上述的实验看其结果如何。
(3) 区间[a,b]上切比雪夫点的定义为 (21)cos ,1,2,,1222(1)k b a b ak x k n n π⎛⎫+--=+=+ ⎪+⎝⎭(3)以121,,n x x x +为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果,试分析2 / 21原因。
1.2 算法设计使用Matlab 函数进行实验, 在理解了插值法的基础上,根据拉格朗日插值多项式编写Matlab 脚本,其中把拉格朗日插值部分单独编写为f_lagrange.m 函数,方便调用。
1.3 实验结果1.3.1 f(x)在[-1,1]上的拉格朗日插值函数依次取n=2、3、4、5、6、7、10、15、20,画出原函数和拉格朗日插值函数的图像,如图1所示。
Matlab 脚本文件为Experiment2_1_1fx.m 。
可以看出,当n 较小时,拉格朗日多项式插值的函数图像随着次数n 的增加而更加接近于f(x),即插值效果越来越好。
一、实验背景常微分方程(ODE)在自然科学、工程技术等领域中具有广泛的应用。
然而,许多微分方程无法得到精确解析解,因此需要借助数值方法进行求解。
龙格-库塔(Runge-Kutta)方法是一种常用的数值求解常微分方程的方法,具有精度高、稳定性好等优点。
本实验旨在通过编写程序,实现四阶龙格-库塔方法,并验证其在求解常微分方程中的有效性和准确性。
二、实验目的1. 理解四阶龙格-库塔方法的基本原理和计算步骤。
2. 编写程序实现四阶龙格-库塔方法。
3. 选取典型常微分方程,验证四阶龙格-库塔方法的求解精度和稳定性。
三、实验原理四阶龙格-库塔方法是一种基于泰勒级数展开的数值方法,其基本思想是将微分方程的解在某个区间内进行近似,并通过迭代计算得到近似解。
具体步骤如下:1. 初始化:给定初始条件y0,步长h,求解区间[a, b]。
2. 迭代计算:对于k=1, 2, ..., n(n为迭代次数),- 计算k1 = f(xk-1, yk-1)(f为微分方程的右端函数);- 计算k2 = f(xk-1 + h/2, yk-1 + h/2 k1);- 计算k3 = f(xk-1 + h/2, yk-1 + h/2 k2);- 计算k4 = f(xk-1 + h, yk-1 + h k3);- 更新y值:yk = yk-1 + (h/6) (k1 + 2k2 + 2k3 + k4);- 更新x值:xk = xk-1 + h;3. 输出结果:输出最终的近似解y(n)。
四、实验步骤1. 编写程序实现四阶龙格-库塔方法。
2. 选取典型常微分方程,如:- y' = -y,初始条件y(0) = 1,求解区间[0, 2π];- y' = y^2,初始条件y(0) = 1,求解区间[0, 1]。
3. 对每个常微分方程,设置不同的步长h和迭代次数n,分别计算近似解y(n)。
4. 将计算得到的近似解与解析解进行比较,分析四阶龙格-库塔方法的精度和稳定性。
实验报告实验课程名称数值计算方法I开课实验室数学实验室学院理学院年级2012 专业班信息与计算科学2班学生姓名学号开课时间2012 至2013 学年第 2 学期实验一 误差分析试验1.1(病态问题)问题提出:考虑一个高次的代数多项式)1.1()()20()2)(1()(201∏=-=---=k k x x x x x p显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。
现考虑该多项式的一个扰动)2.1(0)(19=+x x p ε其中ε是一个非常小的数。
这相当于是对(1.1)中19x 的系数作一个小的扰动。
我们希望比较(1.1)和(1.2)根的差别,从而分析方程(1.1)的解对扰动的敏感性。
实验内容:为了实现方便,我们先介绍两个MA TLAB 函数:“roots ”和“poly ”。
roots(a)u =其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。
设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程01121=+++++-n n n n a x a x a x a的全部根;而函数 poly(v)b =的输出b 是一个n+1维向量,它是以n 维向量v 的各分量为根的多项式的系数。
可见“roots ”和“poly ”是两个互逆的运算函数。
))20:1((;)2();21,1(;000000001.0ve poly roots ess ve zeros ve ess +===上述简单的MA TLAB 程序便得到(1.2)的全部根,程序中的“ess ”即是(1.2)中的ε。
实验要求:(1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。
如果扰动项的系数ε很小,我们自然感觉(1.1)和(1.2)的解应当相差很小。
计算中你有什么出乎意料的发现?表明有些解关于如此的扰动敏感性如何?(2)将方程(1.2)中的扰动项改成18x ε或其它形式,实验中又有怎样的现象? (3)(选作部分)请从理论上分析产生这一问题的根源。
山东师范大学数学科学学院实验报告x 0.1 0.5 1 1.5 2 2.5 3y 0.95 0.84 0.86 1.06 1.5 0.72 1.9y' 1 1.5 2 2.5 3 3.5 4求质点在时刻1.8时的速度,并画出插值多项式的图像。
1)运用Hermite插值法画出图像,如图4-1,并求质点在时刻1.8时的速度。
>>clear>>clc>>X=[0.1 0.5 1 1.5 2 2.5 3;0.95 0.84 0.86 1.06 1.5 0.72 1.9;1 1.5 2 2.5 3 3.5 4];>> x=0.1:0.01:3;>> H=Hermite1(X,x);>> plot(x,H)>> hold on>> plot(X(1,:),X(2,:),'r*')>> H1_8=Hermite(X,1.8);>> plot(1.8,H1_8,'go')>> legend('插值图像','原始点','目标点');图4-1二、验证高次插值的Runge现象问题分析和算法设计(一)Language插值代码function [Ln] =Lagrange(X,x)%请输入2*n+1矩阵X,X中第一行每个元素都是插值节点,X中第二行每个元素都是插值节点对应的函数值;%第二章P24例一拉格朗日插值n=size(X,2);d=0;for m=1:1:nif x==X(1,m);d=m;breakendend运行结果和总结 运行结果 例:给定函数55,11)(2≤≤-+=x xx f ; (1) 验证表2-10的误差结果(高次插值的Runge 现象);(2) 以0.1为步长分别进行Language 插值、分段线性插值、分段三次Hermite插值,画出三种插值函数以及f(x)的图像,比较三种插值结果。
摘要求函数在给定区间上的定积分,在微积分学中已给出了许多计算方法,但是,在实际问题计算中,往往仅给出函数在一些离散点的值,它的解析表达式没有明显的给出,或者,虽然给出解析表达式,但却很难求得其原函数。
这时我们可以通过数值方法求出函数积分的近似值。
在用近似值代替真实值时,遇到的问题就是近似值的代数精度是否足够。
当代数精度不足够时,很显然提高插值函数的次数是一种方法,但是考虑到数值计算的稳定性,当次数过高时,会出现龙格现象,用增大n的方法来提高数值积代数精度是不可取的。
因此,提出类似于分段插值,为了减少数值积分的误差,可以把积分区间分成若干个小区间,在每个小区间上采用低阶数值积分公式,然后把这些小区间上的数值积分结果加起来作为函数在整个区间上的近似值,这个就是复化数值积分的思想。
本实验针对在每个小区间上利用梯型积分公式,即阶数为1,进行实验。
关键词:龙格现象复化数值积分代数精度1、实验目的1)通过本次实验体会并学习龙贝格积分公式的优点。
2)通过对龙贝格积分公式进行编程实现,提高自己的编程能力。
3)用实验报告的形式展现,提高自己在写论文方面的能力。
2、算法流程如果将区间a,b n等分,则复化梯形公式为f x dx≈ba T n=ℎ2f a+2f x k+f(b)n−1k=1现变步长,将区间a,b2n等分,则有f x dx= baf(x)dxx ix i−1=f(x)dxx i−1/2x i−1+f(x)dxx ix i−1/2ni=1ni=1≈ℎ22f x i−1+2f xi−12+f x ini=1=ℎ4f a+2f x i+f bn−1i=1+2f xi−12n−1i=1=12T n+ℎ2f a+ i−12ℎni=1令H n=ℎf a+ i−12ℎni=1这时T2n=12T n+12H n对于复化Simpson公式,可以发现S n能表示为如下形式S n=13T n+23H n将T 2n 和上式综合得到S n =4T 2n −T n 4−13、算法实例设I = 41+x 210dx ,用龙贝格积分公式求解积分,并设置精度。
数值分析实验报告实验一、解线性方程组的直接方法——梯形电阻电路问题利用追赶法求解三对角方程组的方法,解决梯形电阻电路问题:电路中的各个电流{1i ,2i ,…,8i }须满足下列线性方程组:R V i i =- 22 210 252321=-+-i i i 0 252 432=-+-i i i 0 252 543=-+-i i i 0 252 654=-+-i i i 0 252 765=-+-i i i 0 252 876=-+-i i i 052 87=+-i i设V 220=V ,Ω=27R ,运用追赶法,求各段电路的电流量。
问题分析:上述方程组可用矩阵表示为:⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--------------00000001481.8522520000002520000002520000002520000002520000002520000002287654321i i i i i i i i问题转化为求解A x b =,8阶方阵A 满足顺序主子式(1,2...7)0i A i =≠,因此矩阵A存在唯一的Doolittle 分解,可以采用解三对角矩阵的追赶法!追赶法a=[0 -2 -2 -2 -2 -2 -2 -2]; b=[2 5 5 5 5 5 5 5];c=[-2 -2 -2 -2 -2 -2 -2 0]; d=[220/27 0 0 0 0 0 0 0];Matlab 程序function x= zhuiganfa( a,b,c,d )%追赶法实现要求:|b1|>|C1|>0,|bi|>=|ai|+|ci| n=length(b); u=ones(1,n); L=ones(1,n); y=ones(1,n); u(1)=b(1); y(1)=d(1); for i=2:nL(i)=a(i)/u(i-1);u(i)=b(i)-c(i-1)*L(i); y(i)=d(i)-y(i-1)*L(i); endx(n)=y(n)/u(n); for k=n-1:-1:1x(k)=(y(k)-c(k)*x(k+1))/u(k); end endMATLAB 命令窗口输入:a=[0 -2 -2 -2 -2 -2 -2 -2]; b=[2 5 5 5 5 5 5 5];c=[-2 -2 -2 -2 -2 -2 -2 0] d=[220/27 0 0 0 0 0 0 0];x= zhuiganfa(a,b,c,d )运行结果为:x =8.1478 4.0737 2.0365 1.0175 0.5073 0.2506 0.1194 0.0477存在问题根据电路分析中的所讲到的回路电流法,可以列出8个以回路电流为独立变量的方程,课本上给出的第八个回路电流方程存在问题,正确的应该是78240i i -+=;或者可以根据电路并联分流的知识,同样可以确定78240i i -+=。
龙格—库塔法解常微分方程实验报告一、实验题目求解初值问题⎪⎩⎪⎨⎧=<<-=1)0()10(2'y x y x y y二、实验引言1、实验目的进一步理解龙格—库塔方法的设计思路和算法流程,培养动手实践能力和分析能力。
2、实验意义龙格—库塔方法的推导基于泰勒展开方法,因而它要求的解具有较好的光滑性质。
反之,如果解得光滑性差,那么,使用四阶龙格—库塔法方法求得的数值解,其精度可能反而不如梯形方法。
实际计算中,应当针对问题的具体特点选择合适的算法。
三、算法设计1. 基本思想由Lagrange 微分中值定理,11()()'()()()(,())n n n n n y x y x y x x y x hf y ξξξ++=+-=+记*(,())k hf y ξξ=,则得到*1()()n n y x y x k +=+这样,给出*k 的一种算法,就得到求解微分方程初值问题的一种计算公式。
四阶龙格_库塔法是用1k ,2k ,3k 和4k 的加权平均值来近似*k 。
最经典的四阶龙格—库塔公式为:121324311234(,)(,)22(,)22(,)y (22)2n n n n n nn n n n K f x y h h K f x y K h h K f x y K K f x h y hK h y K K K K +=⎧⎪⎪=++⎪⎪⎪=++⎨⎪=++⎪⎪⎪=++++⎪⎩四阶龙格—库塔法的误差估计局部截断误差为5()O h 。
2.算法流程图四、程序设计program longgekutaimplicit nonereal,parameter::b=1real::h=0.2integer::nreal::x,K1,K2,K3,K4,yreal,external::fx=0y=1open (unit=10,file='1.txt')do while(x<=b)K1=f(x,y)K2=f(x+h/2,y+K1*h/2)K3=f(x+h/2,y+K2*h/2)K4=F(x+h,y+K3*h)y=y+(k1+2*K2+2*K3+K4)*h/6 x=x+hwrite(10,*) x,yend doendfunction f(x,y)implicit nonereal::f,x,yf=y-2*x/yend function五、结果及讨论1.实验结果0.2000000 1.183229 0.4000000 1.341667 0.6000000 1.4832810.8000000 1.6125141.000000 1.7321421.200000 1.844040六、算法评价1、本次实验实现了常微分方程初值问题数值解法中的四阶龙格—库塔法2、对欧拉法和龙格—库塔法进行比较:在相同步长的情况下,欧拉法每步只计算一个函数值,四阶龙格—库塔法每步需计算四个函数值,就是说,四阶龙格—库塔法的计算量差不多是欧拉法的四倍,为了比较它们的计算精度,可以将欧拉法的步长取为h,将四阶龙格—库塔法的步长取为4h。
实验实验题一实验题1 水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的一个荒岛上,发现那里有一大堆椰子。
由于旅途的颠簸,大家都很疲倦,很快就入睡了。
第一个水手醒来后,把椰子平分成五堆,将多余的一只给了猴子,他私藏了一堆后便又去睡了。
第二、第三、第四、第五个水手也陆续起来,和第一个水手一样,把椰子分成五堆,恰好一只给猴子,私藏一堆,再去入睡。
天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一只再给猴子。
试问原来共有几只椰子?试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题。
实验题2 设,。
(1)从I0尽可能精确的近似值出发,利用递推公式:计算从I1到I20的近似值:(2)从I30较粗糙的估计值出发,用递推公式:计算从I1到I20的近似值:(3)分析所得结果的可靠性以及出现这种现象的原因。
实验题3 递推计算的稳定性计算积分其中a为参数,分别对a =0.05及a =15按下列两种方案计算,列出其可靠性进行分析比较,说明原因。
方案I 用递推公式递推初值可由积分直接得。
方案II 用递推公式根据估计式或取递推初值为或计算中取n =13开始。
实验课题4 三种求ln2的算法比较按下列三种方案构造逼近ln2的数列,用以求出ln2的近似值,要求精度。
观察和比较三种计算方案的收敛速度。
方案I 利用级数设则可取。
方案II 对方案I中的数据,按下列公式生成新数列。
称为数列的埃特金(Aitken)外推数列。
可以证明。
因此可取。
方案III 利用级数设则可取。
实验课题5 值的计算下面给出了三种求的近似值的计算方案,试比较它们的收敛速度和精度。
方案I 利用逼近单位圆半周长的方法。
单位圆半周长的值为,图1所示为一单位半圆,设为将半圆弧分成等份得以的角,其对应的弦线长度是。
则这样的弦线之和为(1-5)P n就是单位圆半周长的一个近似值由三角公式知(1-6)记,则由式(1-5),(1-6)可建立如下迭代公式(1-7)(1-8)则P n就是的逼近值。
差值里的龙格现象实验临床八年1004张馨予2204100412 一.实验任务:由书上例子2.2和2.3表明适当的提高多项式的次数,有可能提高插值的精度,但是绝对不可能由此认为插值多项的次数越高越好。
此次试验的任务便是验证差值多项式里的龙格现象。
二.算法设计:对函数f(x)=1/(1+25*x*x),(-1<=x<=1).先以xi=-1+2/5i(i=0,1,2,…,5)为节点做五次插值多项式P5(x),再以xi=-1+1/5i(i=0,1,…,10)为节点做十次插值多项式P10(x),并将曲线f(x)=1/(1+25*x*x),y=P5(x),y=P10(x),在区间[-1,1]上,描绘在同一个坐标系。
程序设计,对于插值法,首先计算lagrange差值基本函数lk(x)。
再写出满足差值条件的n次插值多项式Ln(x)=yl(x)的总和。
三.计算机程序:1.求5个点对应y值的m文件function y=flongge2x=-1:0.4:1for i=1:length(x)y(i)=1/(1+25*x(i)*x(i));enddisp(y)2.求10个点对应y值的函数文件function y=flongge2x=-1:0.2:1for i=1:length(x)y(i)=1/(1+25*x(i)*x(i));enddisp(y)3. 差值里的龙格现象function f=Language(x,y,x0)syms t;if(length(x)==length(y))n=length(x);elsedisp('xand y are not of the same demision');return;endf=0.0;for(i=1:n)l=y(i);for(j=1:i-1)l=l*(t-x(j))/(x(i)-x(j));end;for(j=i+1:n)l=l*(t-x(j))/(x(i)-x(j));end;f=f+l;f=simplify(f);if(i==n)if(nargin==3)f=subs(f,'t',x0)elsef=collect(f);f=vpa(f,6);endendend并在命令编辑器里输入x y 矩阵,以及f=Language(x,y)4.龙格总图的m文件functiontu=longgezongtufplot('-220.940*t^10+494.907*t^8-381.433*t^6+123.360*t^4-16.8552*t^2+1.',[-1,1] ),holdon;fplot('1/(1+25*x*x)',[-1,1]), hold on;fplot('1.20199*t^4-1.73079*t^2+.567309',[-1,1],1e-4),grid四.调试以及运行结果1.在命令编辑器里输入flongge2,得到十个点的对应y值:(截的图)2.输入f,得到五个点对应的y值:3.在命令编辑器里输入x矩阵,和y矩阵,以及f=Language(x,y),就会得到对应的两个差值公式:y=-220.940*t^10+494.907*t^8-381.433*t^6+123.360*t^4-16.8552*t^2+1.y=1.20199*t^4-1.73079*t^2+.567309根据这两个公式编出可以输出图的程序。
龙格现象结论龙格现象是指在数值计算中,由于数值误差的积累,计算结果与真实结果之间的误差会随着步长的增加而不断增大的现象。
这一现象在科学计算中具有重要的意义,需要我们认真对待和解决。
龙格现象的出现是由于数值计算过程中的截断误差和舍入误差的积累所致。
在数值计算中,我们往往需要将连续的数学问题转化为离散的数值计算问题,通过有限的计算步骤来近似求解。
然而,由于计算机的存储和计算能力是有限的,无法处理无穷小和无穷大的数值。
因此,在计算过程中,我们不得不进行截断和舍入操作,从而引入了误差。
在数值计算中,我们通常使用一些数值方法来近似求解数学问题,如数值积分、数值微分和常微分方程的数值解等。
这些数值方法本质上都是基于一些数值逼近和插值的原理。
而在这些数值方法中,步长的选择是非常重要的。
步长过大会导致精度降低,步长过小则会增加计算的复杂性。
而龙格现象则是指当步长过大时,数值误差的积累会导致计算结果的不准确性。
为了更好地理解龙格现象,我们可以通过一个简单的例子来说明。
假设我们要计算一个函数的积分,我们可以使用数值积分的方法来近似求解。
首先,我们将积分区间等分为若干小区间,然后通过插值方法来近似计算每个小区间的积分。
当步长较小时,插值近似的误差也较小,计算结果较为准确。
但当步长增大时,插值近似的误差也会随之增大,最终导致计算结果的不准确。
针对龙格现象,我们可以通过一些方法来减小误差和提高计算精度。
首先,我们可以选择合适的数值方法和步长,以平衡计算精度和计算复杂性。
其次,我们可以使用高精度的数值计算库或算法,以减小舍入误差。
此外,我们还可以结合数值计算和符号计算的方法,以提高计算精度和可靠性。
龙格现象是数值计算中不可忽视的问题,它提醒我们在进行数值计算时要谨慎选择步长和数值方法,以保证计算结果的准确性。
同时,我们也需要不断研究和改进数值计算的方法和算法,以提高计算精度和可靠性,为科学计算提供更加准确和可靠的结果。
三、四阶Runge-Kutta 法求解常微分方程一、龙格库塔法的思想根据第九章的知识可知道,Euler 方法的局部截断误差是2()O h ,而当用Euler 方法估计出1,()(1)n n n n y y hf x y +=+ 再用梯形公式111[(,)(,)](2)2n n n n n n h y y f x y f x y +++=++进行校正,即采用改进Euler 方法得出数值解的截断误差为3()O h 。
由Lagrange 微分中值定理'11()()()()()(,())(3)n n n n n y x y x y x x y x hf y ξξξ++=+-=+ 记*(,())k hf y ξξ=,得到*1()()(4)n n y x y x k +=+这样只要给出一种计算*k 的算法,就能得到相应的计算公式。
用这种观点的来分析Euler 方法和改进Euler 方法,Euler 方法的迭代公式可改写为111(,)n n n n y y k k hf x y +=+=改进Euler 方法的预报-校正公式可改写为 1121211()2(,),(,)n n n n n n y y k k k hf x y k hf x h y k +=++==++ Euler 方法实际上是用一个点处的值1k 近似*k ,而改进Euler 方法是用两个点处的值1k ,和2k ,做算术平均值近似*k 自然改进Euler 方法要优于Euler 方法。
因此,可以想到假如在1[,]n n x x +内多预报几个点值i k ,并用他们的加权平均值作为*k 的近似值,则有可能构造出具有更高精度的计算公式,这就是Runge-Kutta 法的基本思想。
二、四阶龙格库塔法由Runge-Kutta 的基本思想,构造四阶Runge-Kutta 法是利用1234,,k k k k 和的加权平均值来近似*k ,因此令1112233441211132211243312213(,)(,)(5)(,)(,)n n n n n n n n n n y y w K w K w K w K K hf x y K hf x h y K K hf x h y K K K hf x h y K K K αβαβγαβγη+=++++⎧⎪=⎪⎪=++⎨⎪=+++⎪⎪=++++⎩使得511()()n n y x y O h ++-=即其总体截断误差为4()O h 。
龙格库塔实验报告龙格库塔实验报告引言:龙格库塔法(Runge-Kutta method)是一种常用的数值求解常微分方程(ODE)的方法。
它是由德国数学家卡尔·龙格(Carl Runge)和马丁·威尔海姆·库塔(Martin Wilhelm Kutta)于19世纪末独立发展而来。
龙格库塔法通过将微分方程转化为一系列逼近值,从而实现对微分方程的数值求解。
本实验旨在通过对龙格库塔法的研究和实践,深入了解其原理和应用。
一、龙格库塔法的原理龙格库塔法的基本思想是将微分方程的解分解为一系列逼近值,然后通过逐步迭代的方式计算这些逼近值。
具体而言,龙格库塔法将求解微分方程的过程分为多个步骤,每个步骤都计算一个逼近值,并利用这些逼近值逐步逼近真实解。
二、龙格库塔法的步骤1. 确定微分方程和初始条件:首先,需要明确待求解的微分方程以及初始条件。
微分方程可以是一阶或高阶的,初始条件是方程在某一点上的已知值。
2. 确定步长:步长(或称为时间间隔)决定了逼近值的精度。
较小的步长能够提高逼近值的准确性,但也会增加计算量。
因此,需要根据具体问题的需求选择合适的步长。
3. 迭代计算:根据龙格库塔法的公式,进行逐步的迭代计算。
首先,根据初始条件计算出第一个逼近值。
然后,利用该逼近值和微分方程的导数计算出下一个逼近值。
重复这一过程,直到达到所需的迭代次数或满足精度要求。
4. 计算误差:为了评估逼近值的准确性,需要计算误差。
误差可以通过与解析解的比较得出,或者通过比较不同步长下的逼近值得出。
较小的误差表明逼近值较为准确。
三、龙格库塔法的应用龙格库塔法广泛应用于科学和工程领域,特别是在求解微分方程模型的数值计算中。
以下是一些常见的应用场景:1. 物理学:龙格库塔法可以用于模拟物体在重力场中的运动,如自由落体、抛体运动等。
通过求解微分方程,可以得到物体的位置、速度等随时间的变化规律。
2. 经济学:龙格库塔法可以用于经济学模型的求解,如经济增长模型、投资模型等。
深圳大学实验报告
实验课程名称:计算机数值方法
实验项目名称:龙格现象的发生、防止和插值效果的比较学院:计算机与软件专业:计算机科学与技术报告人:学号:班级:
指导教师:李炎然
实验时间:2010.7.1
实验报告提交时间:2010.7.10
教务处制
实验报告包含内容
一、实验要求
对区间[a,b]作等距划分:x i =a+ih,(i=0,…,n),h=(b-a)/n
对下列任一函数按给定方案进行插值,计算其在点u i= (x i+1+ x i)/2上的值,并给出插值函数的图形。
其中:
1) y = 1 / (1+x2),x∈ [-5,5]
2) y = x / (1+x) ; x∈ [-5,5]
方案I 分别取n=10,20作Lagrange(拉格朗日)插值
方案II 分别取n=10,20作分段线性插值
方案III分别取n=10,20作I型三次Spline(样条)插值
将计算结果参考表1的形式排列。
对照函数的准确值,观察同一方案、不同的n
的计算结果的变化状态,不同方案结果的精度比较,有无Runge(龙格)现象发生。
取6位小数计算。
表1
二、实验结果
y = 1 / (1+x2) n=10
y = 1 / (1+x2) n=20
n=10
n=20
三、实验结论
本次实验,我了解到为什么龙格现象会发生、如何防止龙格现象的以及不同插值方法效果的。
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。