文档库 最新最全的文档下载
当前位置:文档库 › 数值分析斯特芬森迭代法

数值分析斯特芬森迭代法

数值分析斯特芬森迭代法
数值分析斯特芬森迭代法

数值分析实验报告

1.实验内容:用MA TLAB编写斯特芬森迭代法的MA TLAB程序。

2.实验目的:了解编斯特芬森迭代法的程序,并用编写的程序计算例题。

斯特芬森迭代法:

function steffensen(f,x0,p,max)

x(1)=x0;

g=inline(f);

disp('i x(i) y(i) z(i)')

for i=1:max

y(i)=g(x(i));

z(i)=g(y(i));

x(i+1)=x(i)-(((y(i)-x(i))^2)/(z(i)-2*y(i)+x(i)));

disp(sprintf('%d %f %f %f',i,x(i),y(i),z(i))) if (abs(x(i+1)-x(i)))

break

end

end

例:

结果:steffensen('x^3-1',1.5,0.00001,20)

i x(i) y(i) z(i)

1 1.500000 2.375000 12.396484

2 1.41629

3 1.840922 5.238873

3 1.355650 1.491398 2.317271

4 1.328949 1.347063 1.444351

5 1.324804 1.325174 1.327117

6 1.324718 1.324718 1.324719

3.实验总结:从计算过程得知迭代法的收敛性跟初始值和迭代公式有关。如果取初始值不妥当,迭代法会发散的。

牛顿插值法原理及应用

牛顿插值法 插值法是利用函数f (x)在某区间中若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值。如果这特定函数是多项式,就称它为插值多项式。当插值节点增减时全部插值基函数均要随之变化,这在实际计算中很不方便。为了克服这一缺点,提出了牛顿插值。牛顿插值通过求各阶差商,递推得到的一个公式: f(x)=f[x0]+f[x0,x1](x-x0)+f[x0,x1,x2](x-x0)(x-x1)+...f[x0,...xn](x-x0 )...(x-xn-1)+Rn(x)。 插值函数 插值函数的概念及相关性质[1] 定义:设连续函数y-f(x) 在区间[a,b]上有定义,已知在n+1个互异的点 x0,x1,…xn上取值分别为y0,y1,…yn (设a≤ x1≤x2……≤xn≤b)。若在函数类中存在以简单函数P(x) ,使得P(xi)=yi,则称P(x) 为f(x)的插值函数. 称x1,x2,…xn 为插值节点,称[a,b]为插值区间。 定理:n次代数插值问题的解存在且唯一。

牛顿插值法C程序 程序框图#include void main() { float x[11],y[11][11],xx,temp,newton; int i,j,n; printf("Newton插值:\n请输入要运算的值:x="); scanf("%f",&xx); printf("请输入插值的次数(n<11):n="); scanf("%d",&n); printf("请输入%d组值:\n",n+1); for(i=0;i

数值分析_迭代法

华北科技学院上机报告 系(部) 专业、班级 学号 课程名称数值分析 上机题目实验六,实验七 任课教师 指导教师 成绩(优、良、中、及格、不及格) 华北科技学院基础部

实验六 解线性方程组的迭代法 1.目的与要求: 1) 熟悉求解线性方程组的有关理论哈方法。 2) 会编制雅可比迭代和高斯—塞得尔迭代法。 3) 通过实际计算,进一步了解各算法的优缺点,选择合适的数值方法。 2.雅可比迭代法 算法 设方程组AX=b 的系数矩阵的对角元素0(1,2, ,),ii i n a ≠=M 为迭代次数容许的最大值,ε 为容许误差. ① 取初始向量(0)(0)(0),(,,,)12T x x x x n =令k=0; ② 对1,2,,i n =计算 (1) ()11();n k k i i ij j j ii j i x b a x a +=≠= -∑ ③ 如果 (1)() 1 ,n k k i i i x x ε+=-<∑则输出(1) k x +,结束;否则执行④, ④ 如果,k M ≥则不收敛,终止程序;否则1,k k ←+转②. 1.分别用雅可比迭代法与高斯-塞德尔迭代法解下列方程组: 2),311300010000 151335901100002709311000000 230010793000090,0 00305770502000007473000120000030410070000500272700 2 2910RI V R V =---????????---????????---????---??????==----???-??????--???--??????--? ???其中???? ??? ? 1.用雅可比迭代法计算: #include "stdafx.h" #include "iostream.h"

数值分析——二分法和牛顿法

二分法和牛顿法的比较 二分法的基本思想是对有根区间[a,b]逐次分半,首先计算区间[a,b]的中间点x0,然后分析可能出现的三种情况:如果f(x0)f(a)<0,则f(x)在区间[a,x0]内有零点;如果f(x0)f(b)<0,则f(x)在区间[x0,b]内有零点;如果f(x0)=0,则x0是f(x)在区间[a,b]内所求零点。但是二分法的缺点是收敛速度慢且不能求复根。牛顿迭代法的基本思想是将方程f(x)=0中函数f(x)线性化,以线性方程的解逼近非线性方程的解其迭代函数为) (') ()(x f x f x x -=?。牛顿迭代法的缺点是可能发生被零除错误,且可能出现死循环。 用二分法和牛顿法分别计算多项式02432 3 =-+-x x x 的解。该多项式的解为1、1+i 和1-i ,使用二分法计算时,区间为(-1,2),使用牛顿法计算时取初始值为0。误差都为0.0001。 编程如下 二分法(erfen.m): syms x ; fun=x^3-3*x^2+4*x-2; a=-1; b=2; d=0.0001; f=inline(fun); e=b-a; k=0; while e>d c=(a+b)/2; if f(a)*f(c)<0 b=c; elseif f(a)*f(c)>0 a=c; else a=c;b=c; end e=e/2; k=k+1; end k x=(a+b)/2 牛顿法(newton.m): function [k,x,wuca] = newton() k=1; x0=0; tol=0.0001; yx1=fun(x0); yx2=fun1(x0); x1=x0-yx1/yx2; while abs(x1-x0)>tol x0=x1; yx1=fun(x0); yx2=fun1(x0); k=k+1; x1=x1-yx1/yx2; end k x=x1 wuca=abs(x1-x0)/2 end function y1=fun(x) y1=x^3-3*x^2+4*x-2; end function y2=fun1(x) y2=3*x^2-6*x+4; end 分析结果得知,在相同的误差精度下,二分法需要计算15次,而牛顿法只需计算5次,得知牛顿法比二分法优越。

数值计算迭代法

习题二 3、证明:当X 0=1.5时,迭代法X k+1=Xk +410和X k+1=21k X 310-都收敛于方程f(x)=x 3+4x 2-10=0在区间[1,2]内唯一实根x *,并分别用上述迭代法求满足于精度要求︱X k+1-X k ︱≤10-5的近似根。 解:证明:{先用迭代法求f(x)=x 3+4x 2-10=0的根。 (a )对x 3+4x 2-10=0变形有:4x 2=10-x 3 所以:X=21310X - 则相应的迭代公式为:X k+1=21k X 310- 取:X 0=1.5,根据计算可以看出看,我们认为得到的迭代序列是 收敛的。}(此行可忽略) { 由 f(x)=x 3+4x 2-10=0得迭代方程:X=21310X -=g (x ) 先证明在区间【1,2】上x=g (x )有实根。由于[1,2]上g ‘(x )存在,所以g (x )连续。作Q (x )=x-g(x),则Q(x)在[1,2]上也连续。由定理1条件2有:Q (1)=1-g (1)≤0,Q (,2)=1-g (2)≥0 故存在x *∈[1,2]使Q *(x )=0,即x *= Q *(x ) 又因为,x *是方程f(x)=x 3+4x 2-10=0在区间[1,2]内的唯一实根,(由定理一条件 2)对任意的x 0∈[1,2]时,X k ∈[1,2](k=0,1,2,3…) 因为:x *- X k+1=g (x *)-g (X k )=g ‘(h k )(x *- X k )故由条件1知: ︱X *-X k+1︱≤L ︱X *-X k ︱(k=0,1,2,3…)于是有:0≤︱X *-X k ︱≤L k ︱X *-X 0︱,0<L <1,立即可知:lim (k 趋于无穷)︱X *-X k ︱=0,从而lim (k 趋于无穷)X k= X *。所以当X 0=1.5时,迭代法X k+1=Xk +410和X k+1=21k X 310-都是由迭代法X k+1=g (X k )产生的迭代序列{ X k }收敛于方程f(x)=x 3+4x 2-10=0在区间[1,2]内唯一实 根x *。 正解如下: (1) (牛顿迭代法): 证明:对方程f(x)=x 3+4x 2-10=0在区间[1,2]内, (a ) f ‘(x)=3x 2+8x ,f ’‘(x)=6x+8,f ’‘(x)在区间[1,2]内连续; (b ) f (1)=-5,f (2)=14,f (1)f (2)<0; (c ) 对于任意的x ∈[1,2],都有f ‘(x)=/(不等于)0; (d ) f ’‘(x)在[1,2]上保号; 综上所述,当X 0=1.5时,迭代法X k+1=Xk +410和X k+1=21k X 310-都收敛于方程f(x)=x 3+4x 2-10=0在区间[1,2]内唯一实根x *。 (2)用牛顿迭代法求近似根。 方程f(x)=x 3+4x 2-10=0有唯一实根x *∈[1,2],容易验证,f(x)=x 3+4x 2-10在[1,2]

数值分析5-用Jacobi迭代法和Gauss-Seidel迭代法求解线性方程组

作业六:分别编写用Jacobi迭代法和Gauss-Seidel迭代法求解线性方程组Ax=B的标准程序,并求下列方程组的解。 可取初始向量 X(0) =(0,0,0)’; 迭代终止条件||x(k+1)-x(k)||<=10e-6 (1) = (2) = Jacobi迭代法: 流程图 开 始 判断b中的最大值 有没有比误差大 给x赋初值 进行迭代 求出x,弱到100次还没到,警告不收 结束

程序 clear;clc; A=[8,-1,1;2,10,01;1,1,-5]; b=[1;4;3]; e=1e-6; x0=[0;0;0]'; n=length(A); x=zeros(n,1); k=0; r=max(abs(b)); while r>e for i=1:n d=A(i,i); if abs(d)100 warning('不收敛'); end end x=x0;

程序结果(1)

(2)

Gauss-Seidel迭代法: 程序 clear;clc; %A=[8,-1,1;2,10,01;1,1,-5]; %b=[1;4;3]; A=[5,2,1;-1,4,2;2,-3,10]; b=[-12;20;3]; m=size(A); if m(1)~=m(2) error('矩阵A不是方阵'); end n=length(b); %初始化 N=0;%迭代次数 L=zeros(n);%分解A=D+L+U,D是对角阵,L是下三角阵,U是上三角阵U=zeros(n); D=zeros(n); G=zeros(n);%G=-inv(D+L)*U d=zeros(n,1);%d=inv(D+L)*b x=zeros(n,1); for i=1:n%初始化L和U for j=1:n if ij U(i,j)=A(i,j); end end end for i=1:n%初始化D D(i,i)=A(i,i); end G=-inv(D+L)*U;%初始化G d=(D+L)\b;%初始化d %迭代开始 x1=x; x2=G*x+d; while norm(x2-x1,inf)>10^(-6)

数值分析3 牛顿迭代法

§3 牛顿迭代法Newton Iteration ————切线法 牛顿迭代法是最著名的方程求根方法。已经通过各种方式把它推广到解其他更为困难的非线性问题。 【例如】非线性方程组、非线性积分方程和非线性微分方程。 虽然牛顿法对于给定的问题不一定总是最好的方法,但它的简单形式和快的收敛速度常常使得解非线性问题的人优先考虑它。 迭代一般理论告诉我们,构造好的迭代函数可使收敛速度提高。然而迭代函数的构造方法又各不相同,方法多样。牛顿法是受几何直观启发,给出构造迭代函数的一条重要途径。 牛顿迭代的基本思想:方程f(x)=0的根,几何意义是曲线y=f(x)与ox 轴y=0的交点。求曲线与y=0的交点没有普遍的公式,但直接与0x 轴的交点容易计算。用直线近似曲线y=f(x),从而用直线方程的根逐步代替f(x)=0的根。即把非线性方程逐步线性化。 方法:设x k 是f(x)=0的一个近似根,把f(x)在x k 处作一阶Taylor 展开,得到 ))(()()(k k k x x x f x f x f -'+≈ (19) 设)(k x f '≠0,由于 0)())(()(=≈-'+x f x x x f x f k k k 所以求得解记为1+k x ,有 牛顿迭代公式:(20) 按牛顿迭代计算称为牛顿迭代法。

牛顿法的几何意义:选初值x k 以后,过))(,(k k x f x p 点,作 曲线y=f(x)的切线,其切线方程为 ))(()()(k k k x x x f x f x f -'+= (21) 切线与ox 轴的交点,为1+k x ,则 )(/)(1k k k k x f x f x x '-=+ (22) 牛顿迭代法也称为切线法。 迭代法的收敛性:如果取)(/)()(k k x f x f x x g '-=,则有x=g(x),从而牛顿迭代公式就是 )(1k k x g x =+ 因此就可以由考察g(x)的性质,来讨论迭代法的收敛性及收敛速度。迭代过程的收敛速度是指迭代过程中误差的下降速度。 设迭代过程)(1k k x g x =+收敛于方程x=g(x)的根x*,如果迭代误差* x x e k k -=,当k →∞时成立 )0(/1的常数≠→+c c e e p k k (24) 则称该迭代过程是p 阶收敛的。特别p=1时称为线性收敛,p>1时称超线性收敛,p=2时称为平方收敛。 若f(x)在根附近存在连续的二阶导数,x*是f(x)的单根,且初始值x 0充分接近x*,则牛顿迭代过程收敛,而且有 21)(2/)(****+-?'''≈-x x x f x f x x k k (25) 证明 1)对于f(x),取)(/)()(x f x f x x g '-=,则牛顿迭代过程为)(1k k x g x =+,注意到

牛顿-拉夫森(Newton-Raphson)迭代法

§3.4 牛顿迭代法 牛顿迭代法也称为牛顿-拉夫森(Newton-Raphson)迭代法,它是数值分析中最重要的方法之一,它不仅适用于方程或方程组的求解,还常用于微分方程和积分方程求解。 3.4.1 牛顿迭代法 用迭代法解非线性方程时,如何构造迭代函数是非常重要的,那么怎样构造的迭代函数才能保证迭代法收敛呢?牛顿迭代法就是常用的方法之一,其迭代格式的来源大概有以下几种方式: 1设 ],[)(2b a C x f ∈,对)(x f 在点],[0b a x ∈作泰勒展开: !2))((''))((')()(2 0000x x f x x x f x f x f -+-+=ξ 略去二次项,得到)(x f 的线性近似式: ))((')()(000x x x f x f x f -+≈。 由此得到方程=)(x f 0的近似根(假定 ≠)('0x f 0),)(')(000x f x f x x -= 即可构造出迭代格式(假定≠)('k x f 0):)(') (1k k k k x f x f x x -=+ 公式(3.4.1) 这就是牛顿迭代公式,若得到的序列{k x }收敛于α,则α就是非线性方程的根。 2 牛顿迭代法也称为牛顿切线法,这是由于)(x f 的线 性化近似函数)(x l =))((')(000x x x f x f -+是曲线y = )(x f 过点))(,(00x f x 的切线而得名的,求)(x f 的零点代之 以求)(x l 的零点,即切线)(x l 与x 轴交点的横坐标,如右图 所示,这就是牛顿切线法的几何解释。实际上,牛顿迭代法 也可以从几何意义上推出。利用牛顿迭代公式,由k x 得到1+k x ,从几何图形上看,就是过点))(,(k k x f x 作函数)(x f 的切线k l ,切线k l 与x 轴的交点就是1+k x ,所以有 1)()('+-=k k k k x x x f x f ,整理后也能得出牛顿迭代公式: )(') (1k k k k x f x f x x - =+。 3 要保证迭代法收敛,不管非线性方程=)(x f 0的形式如何,总可以构造: )()()(x f x k x x x -==? )0)((≠x k 作为方程求解的迭代函数。因为:)(')()()('1)('x f x k x f x k x --=? 而且)('x ?在根α附近越小,其局部收敛速度越快,故可令:0)('=α?

数值计算_第4章 解线性方程组的迭代法

第4章解线性方程组的迭代法 用迭代法求解线性方程组与第4章非线性方程求根的方法相似,对方程组进行等价变换,构造同解方程组(对可构造各种等价方程组, 如分解,可逆,则由得到),以此构造迭代关系式 (4.1) 任取初始向量,代入迭代式中,经计算得到迭代序列。 若迭代序列收敛,设的极限为,对迭代式两边取极限 即是方程组的解,此时称迭代法收敛,否则称迭代法发散。我们将看到,不同于非线性方程的迭代方法,解线性方程组的迭代收敛与否完全决定于迭代矩阵的性质,与迭代初始值的选取无关。迭代法的优点是占有存储空间少,程序实现简单,尤其适用于大型稀疏矩阵;不尽人意之处是要面对判断迭代是否收敛和收敛速度的问题。 可以证明迭代矩阵的与谱半径是迭代收敛的充分必要条件,其中是矩阵的特征根。事实上,若为方程组的解,则有 再由迭代式可得到

由线性代数定理,的充分必要条件。 因此对迭代法(4.1)的收敛性有以下两个定理成立。 定理4.1迭代法收敛的充要条件是。 定理4.2迭代法收敛的充要条件是迭代矩阵的谱半径 因此,称谱半径小于1的矩阵为收敛矩阵。计算矩阵的谱半径,需要求解矩阵的特征值才能得到,通常这是较为繁重的工作。但是可以通过计算矩阵的范数等方法简化判断收敛的 工作。前面已经提到过,若||A||p矩阵的范数,则总有。因此,若,则必为收敛矩阵。计算矩阵的1范数和范数的方法比较简单,其中 于是,只要迭代矩阵满足或,就可以判断迭代序列 是收敛的。 要注意的是,当或时,可以有,因此不能判断迭代序列发散。

在计算中当相邻两次的向量误差的某种范数小于给定精度时,则停止迭代计算,视为方程组的近似解(有关范数的详细定义请看3.3节。) 4.1雅可比(Jacobi)迭代法 4.1.1 雅可比迭代格式 雅可比迭代计算 元线性方程组 (4.2) 写成矩阵形式为。若将式(4.2)中每个方程的留在方程左边,其余各项移到方程右边;方程两边除以则得到下列同解方程组: 记,构造迭代形式

数值分析课程实验报告-拉格朗日和牛顿插值法

《数值分析》课程实验报告 用拉格朗日和牛顿插值法求解函数值 算法名称用拉格朗日和牛顿插值法求函数值 学科专业xxxxx 作者姓名xxxx 作者学号xxxxx 作者班级xxxxxx xxx大学 二〇一五年十二月

《数值分析》课程实验报告

得到的近似值为。 拉格朗日插值模型简单,结构紧凑,是经典的插值法。但是由于拉格朗日的插值多项式和每个节点都有关,当改变节点个数时,需要重新计算。且当增大插值阶数时容易出现龙格现象。 2.牛顿插值法 在命令窗口输入: x=[ ]; y=[ ]; xt=; [yt,N]=NewtInterp(x,y,xt) z=::2; yz=subs(N,'t',z); figure; plot(z,sqrt(z),'--r',z,yz,'-b') hold on plot(x,y,'marker','+') hold on plot(xt,yt,'marker','o') h=legend('$\sqrt{x}$','牛顿','$(x_k,y_k)$','$x=$'); set(h,'Interpreter','latex') xlabel('x') ylabel('y') 得到结果及图像如下: yt = N = - *t^4 + *t^3 - *t^2 + *t +

得到√的近似值为,插值函数为 N =- *t^4 + *t^3 - *t^2 + *t + , 其计算精度是相当高的。 Lagrange插值法和Newton插值法解决实际问题中关于只提供复杂的离散数据的函数求值问题,通过将所考察的函数简单化,构造关于离散数据实际函数f(x)的近似函数P(x),从而可以计算未知点出的函数值,是插值法的基本思路。 实际上Lagrange插值法和Newton插值法是同一种方法的两种变形,其构造拟合函数的思路是相同的,而实验中两个实际问题用两种算法计算出结果是相同的。

数值分析求解非线性方程根的二分法,简单迭代法和牛顿迭代法

实验报告一:实验题目 一、 实验目的 掌握求解非线性方程根的二分法、简单迭代法和牛顿迭代法,并通过数值实验比较两种方法的收敛速度。 二、 实验内容 1、编写二分法、牛顿迭代法程序,并使用这两个程序计算 02)(=-+=x e x x f 在[0, 1]区间的解,要求误差小于 4 10- ,比较两种方法收敛速度。 2、在利率问题中,若贷款额为20万元,月还款额为2160元,还期为10年,则年利率为多少?请使用牛顿迭代法求解。 3、由中子迁移理论,燃料棒的临界长度为下面方程的根cot x =(x 2?1)/2x ,用牛顿迭代法求这个方程的最小正根。 4、用牛顿法求方程f (x )=x 3?11x 2+32x ?28=0的根,精确至8位有效数字。比较牛顿迭代法算单根和重根的收敛速度,并用改进的牛顿迭代法计算重根。 三、 实验程序 第1题: 02)(=-+=x e x x f 区间[0,1] 函数画图可得函数零点约为0.5。 画图函数: function Test1() % f(x) 示意图, f(x) = x + exp(x) - 2; f(x) = 0 r = 0:0.01:1; y = r + exp(r) - 2 plot(r, y); grid on 二分法程序: 计算调用函数:[c,num]=bisect(0,1,1e-4) function [c,num]=bisect(a,b,delta) %Input –a,b 是取值区间范围 % -delta 是允许误差 %Output -c 牛顿迭代法最后计算所得零点值 % -num 是迭代次数

ya = a + exp(a) - 2; yb = b + exp(b) - 2; if ya * yb>0 return; end for k=1:100 c=(a+b)/2; yc= c + exp(c) - 2; if abs(yc)<=delta a=c; b=c; elseif yb*yc>0 b=c; yb=yc; else a=c; ya=yc; end if abs(b-a)

牛顿插值法实验报告

牛顿插值法 一、实验目的:学会牛顿插值法,并应用算法于实际问题。 二、实验内容:给定函数 x x f =)(,已知: 414214.1)0.2(=f 449138.1)1.2(=f 483240.1)2.2(=f 516575.1)3.2(=f 549193.1)4.2(=f 三、实验要求: (1)用牛顿插值法求4次Newton 插值多项式在2.15处的值,以此作为函数的近似值)15.2(15.2N ≈。在MATLAB 中用内部函数ezplot 绘制出4次Newton 插值多项式的函数图形。 (2)在MATLAB 中用内部函数ezplot 可直接绘制出以上函数的图形,并与作出的4次Newton 插值多项式的图形进行比较。 四、实验过程: 1、编写主函数。打开Editor 编辑器,输入Newton 插值法主程序语句: function [y,L]=newdscg(X,Y,x) n=length(X); z=x; A=zeros(n,n);A(:,1)=Y';s=0.0; p=1.0; for j=2:n for i=j:n A(i,j)=(A(i,j-1)- A(i-1,j-1))/(X(i)-X(i-j+1)); end end C=A(n,n); for k=(n-1):-1:1 C=conv(C,poly(X(k))); d=length(C);C(d)=C(d)+A(k,k); end y(k)= polyval(C, z); L(k,:)=poly2sym(C);

%%%%%%%%%%%%%%%%%% t=[2,2.1,2.2,2.3,2.4]; fx=sqrt(t); wucha=fx-Y; 以文件名newdscg.m保存。 2、运行程序。 (1)在MATLAB命令窗口输入: >> X=[2,2.1,2.2,2.3,2.4]; Y =[1.414214,1.449138,1.483240,1.516575,1.549193]; x=2.15;[y,P]=newdscg(X,Y,x) 回车得到: y =1.4663 wucha =1.0e-06 * -0.4376 -0.3254 -0.3026 0.0888 0.3385 P = - (4803839603609061*x^4)/2305843009213693952 + (7806239355294329*x^3)/288230376151711744 - (176292469178709*x^2)/1125899906842624 + (1624739243112817*x)/2251799813685248 + 1865116246031207/4503599627370496 (2)在MATLAB命令窗口输入: >> v=[0,6,-1,3]; >> ezplot(P),axis(v),grid >> hold on >> x=0:0.1:6; >> yt=sqrt(x);plot(x,yt,':') >> legend('插值效果','原函数') >> xlabel('X') >> ylabel('Y') >>title('Newton插值与原函数比较') 回车即可得到图像1-1。

数值分析-方程迭代法

实验内容 1 用下列方法求方程201303==--x x x 在附近的根,要求准确到四位有效数字。 (1)牛顿法。(2)单点弦截法(3)双点弦截法 2 用Aitken 法求方程0123=--x x 在5.10=x 附近的根,精度要求为410-=ε。 三 实验步骤(算法)与结果 1: 用双点弦截法求方程201303==--x x x 在附近的根 ①算法的C 语言代码: #include #include double f(double x) { double f; f=x*x-1/x; return f; } void main() { double y=0,z=0,x; printf("please enter a number near the root: ") ; scanf("%f",&x); for (y=f(x),z=f(y);fabs(z-y)>5e-5;) { x=(x*z-y*y)/(x-2*y+z) ; y=f(x); z=f(y); } printf("the root is:") ; printf("X=%-10.4f\n",z); } ②实验结果: 如下图,按题要求输入2,则可得结果X=1.4656

2:用Aitken 法求方程0123=--x x 在5.10=x 附近的根 ①算法的C 语言代码: #include #include double f(double x) { double f=pow(x,3)-3*x-1; return f; } void main() { double f1,f2,x=2.0,y=1.5,z; for(;fabs(y-x)>5e-5;) { f1=f(x); f2=f(y); z=y-f2*(y-x)/(f2-f1); x=y;y=z; } printf("the root is:") ; printf("X=%-10.4f\n",y); } ②实验结果: 如下图,在程序代码中预先设置接近于根的两个值x1=2.0与x2=1.5作为初值,则可得结果X=1.8794.

数值分析实验报告:拉格朗日插值法和牛顿插值法

实验一报告 拉格朗日插值法 一、实验目的 1、学习和掌握拉格朗日插值多项式 2、运用拉格朗日插值多项式进行计算 二、实验原理 根据x0,x1,…xn;y0,y1,…yn构造插值多项式其表达式为: 将插值点x代入上式,就可得到函数f(x)在点x处的函数值的近似值。 三、运行结果 四、代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication3 { class Program { static double lglr(double[] x, double[] y, double x1, int n) { double result = 0.0; for (int i = 0; i

continue; temp = temp * (x1 - x[j]); temp = temp / (x[i] - x[j]); } result = result + temp; } return result; } static void Main(string[] args) { double[] x; double[] y; Console.WriteLine("请输入插值点数:"); int length = Convert.ToInt32(Console.ReadLine()); x = new double[length]; y = new double[length]; for (int i = 0; i < length; i++) { Console.Write("请输入第{0}个点的x值:", i + 1); x[i] = Convert.ToDouble(Console.ReadLine()); Console.Write("请输入第{0}个点的y值:", i + 1); y[i] = Convert.ToDouble(Console.ReadLine()); } Console.WriteLine("请输入x1值:"); double x1 = Convert.ToDouble(Console.ReadLine()); double result=lglr(x,y,x1,length); Console.Write("插值计算结果为:{0}:", result); Console.ReadLine(); } 牛顿插值法 一、实验目的 体会并了解牛顿插值法,用计算机插入x值,输出相应的y值。 二、实验原理 根据x0,x1,…x n;y0,y1,…y n构造插值多项式Nn(x)=f(x0)+f(x0,x1)(x-x0)+… +f(x0,x1,…xn)(x-x0)(x-x1)…(x-xn-1)牛顿差值公式中各项的系数就是函f(x)的各阶均差(差商)f(x0),f(x0,x1),f(x0,x1,…xn),因此,在构造牛顿差值公式时,常常先把均差列成一个表,此表称为均差表。 三、运行结果

数值分析迭代法

- 0 -文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持. 数值分析实验报告 (3) 学院:信息学院 班级:计算机0903班 姓名:王明强 学号: 课题三 线性方程组的迭代法 一、问题提出 1、设线性方程组 ?? ? ?? ? ?? ? ?? ???? ? ????? ??? ??? ?????--------------------------136******** 412029137264221234179111016103524312053621775868323376162449113151201 30123122400105635680000121324??????????????? ?????????????????10987654321x x x x x x x x x x =??????? ?????????????????????????-2119381346323125 x * = ( 1, -1, 0, 1, 2, 0, 3, 1, -1, 2 )T 2、设对称正定阵系数阵线方程组 ??????????????????????????----------------------19243360021411035204111443343104221812334161206538114140231212200420424 ?? ??? ????????? ????????????87654321x x x x x x x x = ???????????? ? ?????????????---4515229232060 x * = ( 1, -1, 0, 2, 1, -1, 0, 2 )T

(完整版)数值分析插值法

第二章插值法 2.在区间[-1,1]上分别取n=10,20用两组等距节点对龙哥函数f(x)=1/(1+25*x^2)做多项式插值及三次样条插值,对每个n值,分别画出插值函数及f(x)的图形。 (1)多项式插值 ①先建立一个多项式插值的M-file; 输入如下的命令(如牛顿插值公式): function [C,D]=newpoly(X,Y) n=length(X); D=zeros(n,n) D(:,1)=Y' for j=2:n for k=j:n D(k,j)=(D(k,j-1)- D(k-1,j-1))/(X(k)-X(k-j+1)); end end C=D(n,n); for k=(n-1):-1:1 C=conv(C,poly(X(k))) m=length(C); C(m)= C(m)+D(k,k); end ②当n=10时,我们在命令窗口中输入以下的命令: clear,clf,hold on; X=-1:0.2:1; Y=1./(1+25*X.^2); [C,D]=newpoly(X,Y); x=-1:0.01:1; y=polyval(C,x); plot(x,y,X,Y,'.'); grid on; xp=-1:0.2:1; z=1./(1+25*xp.^2); plot(xp,z,'r') 得到插值函数和f(x)图形:

③当n=20时,我们在命令窗口中输入以下的命令:clear,clf,hold on; X=-1:0.1:1; Y=1./(1+25*X.^2); [C,D]=newpoly(X,Y); x=-1:0.01:1; y=polyval(C,x); plot(x,y,X,Y,'.'); grid on; xp=-1:0.1:1; z=1./(1+25*xp.^2); plot(xp,z,'r') 得到插值函数和f(x)图形:

数值分析 迭代法

实验二:迭代法、初始值与收敛性 一:实验要求 考虑一个简单的代数方程 210,x x --= 针对上述方程,可以构造多种迭代法,如2 11111,1,n n n n n x x x x x +++=-=+ =在实 轴上取初值,分别用以上迭代做实验,记录各算法的迭代过程。 二:实验要求及实验结果 (1) 取定某个初始值,按如上迭代格式进行计算,它们的收敛性如何?重复选取不同放 入初始值,反复实验。请读者自行设计一种比较形象的记录方式(如何利用Matlab 的图形功能),分析三种迭代法的收敛性与初值的选取关系。 (2) 对三个迭代法中的某一个,取不同的初值进行迭代,结果如何?试分析对不同的初 值是否有差异? 实验内容: ⅰ)对2 11n n x x +=-进行迭代运算,选取迭代次数n=20;分别选择初值-0.6, 1.6进行 实验,并画出迭代结果的趋势图。 编写MATLAB 运算程序如下: %迭代法求解 %令x=x^2-1 clear n=30; x=-0.5; x1=x^2-1; for i=1:n x1=x1^2-1; xx(i)=x1; end m=linspace(0,29,n);

plot(m,xx) title('x=-0.5') x=-0.6 x=1.6 如上图所示,选取初值分别为-0.6、1.6时,结果都是不收敛的。 分析:2()1n g x x =-,' ()2g x x =,要想在某一邻域上' ()21,[1,1] g x x x =

数值分析实验报告Newton插值法

山东师范大学数学科学学院实验报告

2) 选取插值节点,计算插值节点画出cosx 在[0,1.2]上图像,如图3-1,并标出插值算法所计算的点。 >> X=[0 0.2 0.4 0.6 0.8 1.0 1.2;1 0.980067 0.921061 0.825336 0.696707 0.540302 0.362358]; >> x1=0:0.1:1.2; >> format long >> [A,Pn]=Newton(X,x1) >> x2=0:0.01:1.2; >> plot(x2,cos(x2)) >> hold on >> plot(x1,Pn,'*') >> legend('cosx','Newton 插值'); 用Newton 插值法计算出x1=0:0.1:1.2处的值为表3-2: 表3-2 x 0 0.1 0.2 0.3 0.4 0.5 0.6 Pn 1 0.995005 0.980067 0.955337 0.921061 0.877583 0.825336 x 0.7 0.8 0.9 1 1.1 1.2 Pn 0.764843 0.696707 0.62161 0.540302 0.453596 0.362358 计算插值节点画出cosx 在[0,1.2]上图像,并标出插值算法所计算的点。 图3-1 总结 (1)使用Newton 插值法编程,在计算差商表时应注意把),,,(10k x x x f 到 ) ,,,(1n k n k n x x x f +--),,2,1(n k =都计算出来; (2)Newton 插值法的误差大约为-7101?。

正文牛顿插值法

牛顿插值法 摘要:值法利用函数f (x)在某区间中若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值。如果这特定函数是多项式,就称它为插值多项式。利用插值基函数很容易得到拉格朗日插值多项式,公式结构紧凑,在理论分析中甚为方便,但当插值节点增减时全部插值基函数均要随之变化,整个公式也将发生变化,这在实际计算中是很不方便的,为了克服这一缺点,提出了牛顿插值。 牛顿插值通过求各阶差商,递推得到的一个公式:f(x)=f[x0]+f[x0,x1](x-x0)+f[x0,x1,x2](x-x0)(x-x1)+...f[x0,...xn](x-x 0)...(x-xn-1)+Rn(x) 关键词:牛顿插值法流程图程序实现

一、插值法的由来 在许多实际问题及科学研究中,因素之间往往存在着函数关系,然而,这种关系经常很难有明显的解析表达,通常只是由观察与测试得到一些离散数值。有时,即使给出了解析表达式,却由于表达式过于复杂,不仅使用不便,而且不易于进行计算与理论分析。解决这类问题的方法有两种:一种是插值法,另一种是拟合法。插值法是一种古老的数学方法,它来自生产实践,早在一千多年前,我国科学家在研究历法上就应用了线性插值与二次插值,但它的基本理论却是在微积分产生之后才逐渐完善的,其应用也日益增多,特别是在计算机软件中,许多库函数,如等的计算实际上归结于它的逼近函数的计算。逼近函数一般为只含有算术运算的简单函数,如多项式、有理分式(即多项式的商)。在工程实际问题当中,我们也经常会碰到诸如此类的函数值计算问题。被计算的函数有时不容易直接计算,如表达式过于复杂或者只能通过某种手段获取该函数在某些点处的函数值信息或者导数值信息等。因此,我们希望能用一个“简单函数”逼近被计算函数,然后用该简单函数的函数值近似替代被计算函数的函数值。这种方法就叫插值逼近或者插值法。 逐次线性插值法优点是能够最有效地计算任何给定点的函数值,而不需要写出各步用到的插值多项式的表达式。但如果解决某个问题时需要插值多项式的表达式,那么,它的这个优点就成了它的缺点了。能不能根据插值条件构造一个插值多项式,它既有具体的表达式,又很容易用它计算任何点的函数值呢?牛顿插值法能作到这一点。

数值分析作业-三次样条插值

数值计算方法作业 实验 三次样条差值函数 实验目的: 掌握三次样条插值函数的三弯矩方法。 实验函数: dt e x f x t ? ∞ -- = 2 221)(π 实验内容: (1) 编程实现求三次样条插值函数的算法,分别考虑不同的边界条件; (2) 计算各插值节点的弯矩值; (3) 在同一坐标系中绘制函数f(x),插值多项式,三次样条插值多项式的曲线 比较插值结果。 实验 三次样条差值函数的收敛性 实验目的: 多项式插值不一定是收敛的,即插值的节点多,效果不一定好。对三次样条插值函数如何呢理论上证明三次样条插值函数的收敛性是比较困难的,通过本实验可以证明这一理论结果。 实验内容: 按照一定的规则分别选择等距或非等距的插值节点,并不断增加插值节点的个数。 实验要求: (1) 随着节点个数的增加,比较被逼近函数和三样条插值函数的误差变化情 况,分析所得结果并与拉格朗日插值多项式比较; (2) 三次样条插值函数的思想最早产生于工业部门。作为工业应用的例子,考 虑如下例子:某汽车制造商根据三次样条插值函数设计车门曲线,其中一

k x 012345678910 k y k y' 算法描述: 拉格朗日插值: 其中是拉格朗日基函数,其表达式为: () ∏ ≠ = - - = n i j j j i j i x x x x x l ) ( ) ( 牛顿插值: ) )...( )( ]( ,... , , [ .... ) )( ]( , , [ )0 ]( , [ ) ( ) ( 1 1 2 1 1 2 1 1 - - - - + + - - + - + = n n n x x x x x x x x x x f x x x x x x x f x x x x f x f x N 其中 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - - = - - = - - = - ) /( ]) ,... , [ ] ,... , [ ( ] ... , [ . . ] , [ ] , [ ] , , [ ) ( ) ( ] , [ 1 1 2 1 1 x x x x x f x x x f x x x f x x x x f x x f x x x f x x x f x f x x f n n n n i k j i k j k j i j i j i j i 三样条插值: 所谓三次样条插值多项式Sn(x)是一种分段函数,它在节点Xi(a

相关文档
相关文档 最新文档