数值分析 龙格现象 matlab代码分享
(完整版)龙格函数

p(k,4)=(y(k+1)-m(k+1)*(x(k+1)-x(k))^2/6)/(x(k+1)-x(k));
sx(k)=p(k,1)*(x(k+1)-t)^3+p(k,2)*(t-x(k))^3+p(k,3)*(x(k+1)-t)+p(k,4)*(t-x(k));
s=p*y0(k)+s;
end
y(i)=s;
end
建立一个polynomial.m文件,用于多项式插值的实现,代码如下:
%lagrange插值
n=10
x=[-1:0.2:1];
y=1./(1+25*x.^2);
x0=[-1:0.02:1];
y0=lagrange(x,y,x0);
y1=1./(1+25*x0.^2);
对龙格函数 在区间[-1,1]上取n=10,20等距节点,分别作多项式插值、三次样条插值比较各结果。
1、多项式插值:
在区间[-1,1]上取n=10,20等距节点,带入拉格朗日插值多项式中,求出各个节点的插值,并利用matlab软件建立m函数,画出其图形。
在matlab中建立一个lagrange.m文件,里面代码如下:
end
A=eye(n,n)*2;
for k=1:n-1
A(k,k+1)=r(k);
A(k+1,k)=u(k);
end
m=A\d;
ft=d(1);
syms t
for k=1:n-1 %求s(x)即插值多项式
数值分析MATLAB编程-推荐下载

题目三:设������(������) = ������������,在[-1,1]上用 Legendre 多项式作������(������)的 3 次最佳平方逼近多项式。 >> a=-1;b=1; >> n=3; >> syms x; >> fx=exp(x); >> exp(x); >> for k=3 F=x^k*fx; d(k+1)=int(F,a,b); end >> d=reshape(d,n+1,1); >> H=hilb(n+1); >Fra bibliotek a=H\d a=
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术通关,1系电过,力管根保线据护敷生高设产中技工资术艺料0不高试仅中卷可资配以料置解试技决卷术吊要是顶求指层,机配对组置电在不气进规设行范备继高进电中行保资空护料载高试与中卷带资问负料题荷试2下卷2,高总而中体且资配可料置保试时障卷,各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看度并22工且22作尽22下可22都能22可地护以缩1关正小于常故管工障路作高高;中中对资资于料料继试试电卷卷保破连护坏接进范管行围口整,处核或理对者高定对中值某资,些料审异试核常卷与高弯校中扁对资度图料固纸试定,卷盒编工位写况置复进.杂行保设自护备动层与处防装理腐置,跨高尤接中其地资要线料避弯试免曲卷错半调误径试高标方中高案资等,料,编试要5写、卷求重电保技要气护术设设装交备备置底4高调、动。中试电作管资高气,线料中课并敷3试资件且、设卷料中拒管技试试调绝路术验卷试动敷中方技作设包案术,技含以来术线及避槽系免、统不管启必架动要等方高多案中项;资方对料式整试,套卷为启突解动然决过停高程机中中。语高因文中此电资,气料电课试力件卷高中电中管气资壁设料薄备试、进卷接行保口调护不试装严工置等作调问并试题且技,进术合行,理过要利关求用运电管行力线高保敷中护设资装技料置术试做。卷到线技准缆术确敷指灵设导活原。。则对对:于于在调差分试动线过保盒程护处中装,高置当中高不资中同料资电试料压卷试回技卷路术调交问试叉题技时,术,作是应为指采调发用试电金人机属员一隔,变板需压进要器行在组隔事在开前发处掌生理握内;图部同纸故一资障线料时槽、,内设需,备要强制进电造行回厂外路家部须出电同具源时高高切中中断资资习料料题试试电卷卷源试切,验除线报从缆告而敷与采设相用完关高毕技中,术资要资料进料试行,卷检并主查且要和了保检解护测现装处场置理设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
数值分析实验四(龙格函数)

实验名称:龙格反例的数值实验实验目的与要求:1、了解切比雪夫多项式零点插值;2、运用切比雪夫多项式零点插值法避免龙格现象。
3、与等距节点构造插值多项式比较。
实验内容:龙格反例的数值实验在区间[–5,5 ]上分别取11阶切比雪夫多项式的零点22)12(cos 5π+=k x k ( k = 0,1,2,……,10) 和等距节点作插值结点,计算函数211)(xx f +=在结点处的值 y k = f (x k )。
构造插值多项式L 10(x ),∑==10010)()(k k k y x l x L 其中,∏≠=--=n k j j j k j k x x x x x l 0)()()(。
取自变量点 t k = – 5 + 0.05k ( k =0,1,…,201),分别计算切比雪夫零点、等距节点插值多项式L k (x )和被插值函数f (x )在离散点t k ( k =0,1,…,201)上的值,并绘出三条曲线比较。
实验环境与器材:9#505机房、《数值分析》实验过程(步骤)或程序代码:function y=Lagrange(x,n,xx,yy)sum=0; %初始化for k=1:n+1lk=1; %初始化for i=1:n+1if k~=ilk=lk*(x-xx(i))/(xx(k)-xx(i));endendsum=lk*yy(k)+sum;endy=sum;clcclearfor i=1:11 %下标只能从1开始x1(i)=-5+10*(i-1)/10;x2(i)=5*cos((2*i-1)*pi/22);y1(i)=1/(1+x1(i)*x1(i));y2(i)=1/(1+x2(i)*x2(i)); %y1,y2分别是在两种节点处得到的函数值endh=0.05;for k=1:202x3(k)=-5+(k-1)*h;y11(k)=Lagrange(x3(k),10,x1,y1);y22(k)=Lagrange(x3(k),10,x2,y2);y(k)=1/(1+x3(k)*x3(k));%y11,y22分别为利用切比雪夫零点和等距节点构造出的插值多项式在离散点处的值endplot(x3,y11,'r');hold onplot(x3,y22,'g');hold onplot(x3,y,'b')%被插值函数在离散点处值的曲线图hold onxlabel('-5<=x<=5');ylabel('y');legend('f(x)=1/(1+x^2)','等距节点插值多项式','切比雪夫多项式零点插值多项式'); xlim([-5,5])实验结果与分析:分析:由高次插值的病态性质,我们知道次数n太高时会出现龙格现象,即L n(x)并不收敛于f(x),由上图我们也可以看到运用等距节点构造的插值多项式的确出现了龙格现象,因此并不适用。
龙格现象实验

关于龙格现象的实验报告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)和取不同节点数的插值多项式的曲线画在同一张图上进行比较。
matlab经典的4级4阶runge kutta法

MATLAB是一种用于算法开发、数据分析、可视化和数值计算的高级技术计算语言和交互式环境。
作为一个强大的工具,MATLAB提供了许多数值计算方法,其中4级4阶Runge-Kutta方法就是其中之一。
1. Runge-Kutta方法简介Runge-Kutta方法是求解常微分方程(ODE)的数值方法之一。
在MATLAB中,用户可以使用内置的ode45函数来调用4级4阶Runge-Kutta方法。
具体来说,4级4阶Runge-Kutta方法是一种单步迭代方法,通过在每个步骤中计算斜率来逐步逼近解析解。
它的优点是数值稳定性好,适用于多种类型的微分方程。
2. Runge-Kutta方法的公式4级4阶Runge-Kutta方法的一般形式如下:$$k_1 = hf(t_n, y_n)$$$$k_2 = hf(t_n + \frac{1}{2}h, y_n + \frac{1}{2}k_1)$$$$k_3 = hf(t_n + \frac{1}{2}h, y_n + \frac{1}{2}k_2)$$$$k_4 = hf(t_n + h, y_n + k_3)$$$$y_{n+1} = y_n + \frac{1}{6}(k_1 + 2k_2 + 2k_3 + k_4)$$其中,$t_n$是当前的独立变量值,$y_n$是当前的解向量,h是步长,$f(t_n, y_n)$是给定点$(t_n, y_n)$处的斜率。
通过不断迭代上述公式,可以逐步求解微分方程的数值解。
3. MATLAB中的4级4阶Runge-Kutta方法的应用在MATLAB中,用户可以使用ode45函数调用4级4阶Runge-Kutta方法来求解常微分方程。
使用ode45函数的基本语法如下:```matlab[t, y] = ode45(odefun, tspan, y0)```其中,odefun是用户定义的ODE函数句柄,tspan指定了求解的时间范围,y0是初始条件。
matlab_常微分方程数值解法

dt 2
简朴问题可以求得解析解,多数实际问题靠数值求解 。
第4页
一阶常微分方程(ODE )初值问题 : ODE :Ordinary Differential Equation
dy
f
(x,
y)
dx
x0 x xn
y(x0 ) y0
数值解法就是求y(x)在某些分立旳节点 xn 上旳近似值 yn,用以近似y(xn)
x0
y0
x1 f y(x), x dx
x0
x2 f y(x), x dx
x1
y(x1) f y(x1), x1 h
第17页
同样,在[x0,xn+1] ,积分采用矩形近似,得:
y(xn1) y0
f xn1
x0
y(x), x dx
y(xn ) f y(xn ), xn h
yn y(xn )
第5页
2、欧拉近似办法
2.1 简朴欧拉(L.Euler, 1707-1783)办法。
dy
dx
f
(y, x)
y(x0 ) y0
欧拉数值算法就是由初值通过递推求解,递推求解
就是从初值开始,后一种函数值由前一种函数值得到。核 心是构造递推公式。
y0 y1 y2 yn
第6页
i 1,2,...
第36页
没有一种算法可以有效地解决所有旳 ODE 问题,因此 MATLAB 提供了多种ODE函数。
函数 ODE类
特点
阐明
型
ode45
非刚性 单步法;4,5 阶 R-K 措施;合计 大部分场合旳首选措施
截断误差为 (△x)3
ode23
非刚性 单步法;2,3 阶 R-K 措施;合计 使用于精度较低旳情形
实验二 拉格朗日插值龙格现象

汕 头 大 学 实 验 报 告学院: 工学院 系: 计算机系 专业: 计算机科学与技术 年级: 2010 姓名: 林金正 学号: 2010101032 完成实验时间: 5月24日一.实验名称:拉格朗日插值的龙格现象二.实验目的:通过matlab 处理,观察拉格朗日插值的龙格现象.三.实验内容:(1)学习matlab 的使用(2)以实验的方式,理解高阶插值的病态性,观察拉格朗日插值的龙格现象。
四.实验时间、地点,设备:实验时间:5月24日实验地点: 宿舍 实验设备:笔记本电脑五,实验任务在区间[-5,5]上取节点数n=11,等距离h=1的节点为插值点,对于函数25()1f x x =+进行拉格朗日插值,把f(x)与插值多项式的曲线花在同一张图上。
六.实验过程拉格朗日插值函数定义:对某个多项式函数,已知有给定的k + 1个取值点:其中对应著自变数的位置,而对应著函数在这个位置的取值。
假设任意两个不同的xj 都互不相同,那麼应用拉格朗日插值公式所得到的拉格朗日插值多项式为:其中每个为拉格朗日基本多项式(或称插值基函数),其表达式为:[3]拉格朗日基本多项式的特点是在 上取值为1,在其它的点 上取值为0。
1.使用matlab,新建function.m 文件,使用老师所给代码,构建拉格朗日函数.%lagrange.mfunction y=lagrange(x0,y0,x)n=length(x0);m=length(x);for i=1:mz=x(i);s=0;for k=1:nL=1;for j=1:nif j~=kL=L*(z -x0(j))/(x0(k)-x0(j));endends=s+L*y0(k);endy(i)=s;endy;程序解释:(x0,y0):已知点坐标x:所求点的横坐标,y:由(x0,y0)所产生的插值函数,以x 为参数,所的到的值2.再一次新建function.m 文件.构建自定义函数: 25()1f x x=+ %f.mfunction y = f(x)y = 5/(1+x*x);end3.在脚本窗口中输入:>>a = [-10:0.2:10]>>for I = 1:length(a)b(i) = f(a(i))end ;%画出原函数(a,b)>>c = [-5:1:5]>>for i = 1:length( c)d(i) = f(c(i))end;%获取插值坐标(c,d)>>e = [-5:0.2:5]>>z = largange(c,d,e);%获取插值坐标函数(e,z) >>plot(a,b,’r-‘,e,z);%画图过程及插图七:实验所得:这次实验是我初步学会Matlab的使用,学会新建function函数,在matlab命令窗口敲入一些基础的命令,同时更深刻地了解了拉格朗日插值的龙格现象。
龙格库塔方法及其matlab实现

经几年的校际流传,在 Little 的推动下,由 Little、Moler、Steve Bangert 合 作,于 1984 年成立了 MathWorks 公司,并把 MATLAB 正式推向市场。从这时起,MATLAB 的 内核采用 C 语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。
关键词:龙格-库塔 matlab 微分方程
1. 前言
:知识背景
龙格-库塔法(Runge-Kutta)是用于非线性常微分方程的解的重要的一类隐式或显式迭 代法。这些技术由数学家卡尔·龙格和马丁·威尔海姆·库塔于 1900 年左右发明。通常 所说的龙格库塔方法是相对四阶龙格库塔而言的,成为经典四阶龙格库塔法。该方法具有 精度高,收敛,稳定,计算过程中可以改变步长不需要计算高阶导数等优点,但是仍需计 算在一些点上的值,比如四阶龙格-库塔法没计算一步需要计算四步,在实际运用中是有 一定复杂性的。
y(n+1)=y(n)+h* =f( , )
f( 故二阶龙格-库塔公式
, h* i=2…r
y(n+1)=y(n)+h( + )
f( , ) (2)
f(
,
将 y(x)在 处展成幂级数
) h)
y( )=y( )+h ( )+
( )+o( )
f(x,y(x))
(x,y(x))+ (x,y(x))·f(x,y(x))
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 / 2
龙格现象(
Runge phenomenon)
高次插值的病态性质
1. 先建立一个n+1个插值节点的拉格朗日插值多项式
function langrange= langrange( x,n )
langrange=0;
xx=linspace(-5,5,n+1);
for i=1:n+1
lix=1;
for j=1:n+1
if j~=i
lix=lix.*((x-xx(j))./(xx(i)-xx(j)));
end
end
langrange=fun(xx(i)).*lix+langrange;
end
end
2. 再建立一个龙格函数
function f= fun( x )
f=1./(1+x.^2);
3.在同一坐标系中画出龙格函数和拉格朗日插值多项式的图像
function runge_phen(n)
2 / 2
% n为Lagrange插值节点的个数
x=linspace(-5,5,100);
plot(x,fun(x),'r+',x,langrange(x,n),'b*');
4.在Matlab命令窗口运行如下命令
runge_phen(10)