数值分析上机题参考答案.docx
数值分析上机实习题

2019-2020 第1学期数值分析上机实习题总目标:会算,要有优化意识。
(以下程序要求以附件1例题代码格式给出)1. 对给定的线性方程组Ax b =进行迭代求解。
(1)给出Jacobi 迭代的通用程序。
(2)给出Gauss-Seidel 迭代的通用程序。
调用条件:系数矩阵A ,右端项b ,初值0x ,精度要求ε。
输出结果:方程组的近似解。
给定线性方程组211122241125x --⎛⎫⎛⎫ ⎪ ⎪= ⎪ ⎪ ⎪ ⎪---⎝⎭⎝⎭,和122711122215x -⎛⎫⎛⎫ ⎪ ⎪= ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭,取初值0x 为0, 分别利用Jacobi 迭代和G-S 迭代进行求解,观察并解释其中的数学现象。
2. 利用紧凑格式(即直接分解法或逐框运算法)对给定的矩阵A 进行Doolittle 分解,并用其求线性方程组的解。
调用条件:矩阵A 。
输出结果:单位下三角矩阵L 和上三角矩阵U 。
给定矩阵1112A ⎛⎫= ⎪⎝⎭,利用以下算法:1)将A 作Doolittle 分解11A LU =,2)令211A U L =,并对2A 作Doolittle 分解222A L U =,3)重复2)的过程令11n n n A U L --=,并对n A 作Doolittle 分解n n n A L U =,2,3,4,n =, 观察n L ,n U ,n A 的变化趋势,思考其中的数学现象。
3. 给定函数21(),12511f x x x -≤+≤=,取164,8,n =,用等距节点21,i i n x =-+ 0,1,,1i n =+对原函数进行多项式插值和五次多项式拟合,试画出插值和拟合曲线,并给出数学解释。
4. 给出迭代法求非线性方程()0f x =的根的程序。
调用条件:迭代函数()x ϕ,初值0x输出结果:根的近似值k x 和迭代次数k给定方程32()10f x x x =--=,用迭代格式1k x +=0 1.5x =附近的根,要使计算结果具有四位有效数字,利用估计式*1||1||k k k L x x x x L -≤---,或估计式*10||1||kk L x x x x L-≤--来判断需要的迭代次数,分别需要迭代多少次?两者是否有冲突?5. 利用数值求积算法计算()ba f x dx ⎰。
数值分析上机题目

数值分析上机题目4(总21页) --本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--实验一实验项目:共轭梯度法求解对称正定的线性方程组 实验内容:用共轭梯度法求解下面方程组(1) 123421003131020141100155x x x x -⎛⎫⎛⎫⎛⎫ ⎪ ⎪ ⎪--- ⎪ ⎪ ⎪=⎪ ⎪ ⎪-- ⎪ ⎪ ⎪-⎝⎭⎝⎭⎝⎭ 迭代20次或满足()(1)1110k k x x --∞-<时停止计算。
编制程序:储存m 文件function [x,k]=CGmethod(A,b)n=length(A);x=2*ones(n,1);r=b-A*x;rho=r'*r; k=0;while rho>10^(-11) & k<1000 k=k+1; if k==1 p=r; elsebeta=rho/rho1; p=r+beta*p; end w=A*p;alpha=rho/(p'*w); x=x+alpha*p; r=r-alpha*w; rho1=rho;rho=r'*r; end运行程序: clear,clcA=[2 -1 0 0;-1 3 -1 0;0 -1 4 -1;0 0 -1 5]; b=[3 -2 1 5]'; [x,k]=CGmethod(A,b)运行结果: x =(2) Ax b =,A 是1000阶的Hilbert 矩阵或如下的三对角矩阵, A[i,i]=4,A[i,i-1]=A[i-1,i]=-1,i=2,3,..,n b[1]=3, b[n]=3, b[i]=2,i=2,3,…,n-1迭代10000次或满足()()710k k r b Ax -=-≤时停止计算。
编制程序:储存m 文件function [x,k]=CGmethod_1(A,b) n=length(A);x(1:n,1)=0;r=b-A*x;r1=r; k=0;while norm(r1,1)>10^(-7)&k<10^4 k=k+1; if k==1 p=r; elsebeta=(r1'*r1)/(r'*r);p=r1+beta*p; end r=r1; w=A*p;alpha=(r'*r)/(p'*w); x=x+alpha*p; r1=r-alpha*w; end运行程序: clear,clc n=1000; A=hilb(n); b=sum(A')';[x,k]=CGmethod(A,b)实验二1、 实验目的:用复化Simpson 方法、自适应复化梯形方法和Romberg 方法求数值积分。
东南大学数值分析上机题答案

东南⼤学数值分析上机题答案数值分析上机题第⼀章17.(上机题)舍⼊误差与有效数设∑=-=Nj N j S 2211,其精确值为)111-23(21+-N N 。
(1)编制按从⼤到⼩的顺序1-1···1-311-21222N S N +++=,计算N S 的通⽤程序;(2)编制按从⼩到⼤的顺序121···1)1(111222-++--+-=N N S N ,计算NS 的通⽤程序;(3)按两种顺序分别计算210S ,410S ,610S ,并指出有效位数(编制程序时⽤单精度);(4)通过本上机题,你明⽩了什么?解:程序:(1)从⼤到⼩的顺序计算1-1···1-311-21222N S N +++=:function sn1=fromlarge(n) %从⼤到⼩计算sn1format long ; sn1=single(0); for m=2:1:nsn1=sn1+1/(m^2-1); end end(2)从⼩到⼤计算121···1)1(111222-++--+-=N N S N function sn2=fromsmall(n) %从⼩到⼤计算sn2format long ; sn2=single(0); for m=n:-1:2sn2=sn2+1/(m^2-1); end end(3)总的编程程序为: function p203()clear allformat long;n=input('please enter a number as the n:') sn=1/2*(3/2-1/n-1/(n+1));%精确值为sn fprintf('精确值为%f\n',sn);sn1=fromlarge(n);fprintf('从⼤到⼩计算的值为%f\n',sn1);sn2=fromsmall(n);fprintf('从⼩到⼤计算的值为%f\n',sn2);function sn1=fromlarge(n) %从⼤到⼩计算sn1 format long;sn1=single(0);for m=2:1:nsn1=sn1+1/(m^2-1);endendfunction sn2=fromsmall(n) %从⼩到⼤计算sn2 format long;sn2=single(0);for m=n:-1:2sn2=sn2+1/(m^2-1);endendend运⾏结果:从⽽可以得到N值真值顺序值有效位数2 100.740050 从⼤到⼩0.740049 5从⼩到⼤0.740050 64 100.749900 从⼤到⼩0.749852 3从⼩到⼤0.749900 66 100.749999 从⼤到⼩0.749852 3从⼩到⼤0.749999 6(4)感想:通过本上机题,我明⽩了,从⼩到⼤计算数值的精确位数⽐较⾼⽽且与真值较为接近,⽽从⼤到⼩计算数值的精确位数⽐较低。
数值分析上机实习题及答案.docx

方詡文金兴:爭[数值分析]2017-2018第二学期上机实习题1:编程计算亍丄,其中C= 4. 4942x10307,给出并观察计算结心C"果,若有问题,分析之。
解:mat lab 编程如下:E) funct ion diy i ti formatlong g;n 二input C 输入ii 值= c= 4.4942E307; sum 二0; s 二 0;E3 for i = l:n s = l/ (c*i);>> diyiti 输入n 值:10 104.6356e-308 >> diyiti输入ri 值:1001004.6356e-308 >> diyiti 输入n 值:1000 10004.6356e-308 >> diyiti揄入n 值* 1000001000004・ 6356e-308 >> diyiti输入n 值;1000000001000000004.6356e-308图二:运行结果Mat lab 中,forma t long g 对双精度,显示15位定点或浮点格式,由上图 可知,当输入较小的n 值5分别取10, 100, 1000, 100000, 100000000)的时候, 结果后面的指数中总是含有e-308,这和题目中的C 值很相似,我认为是由于分 母中的C 值相对于n 值过大,出现了 “大数吃小数”的现彖,这是不符合算法原 则的。
2:利用牛顿法求方程-1^ = 2于区间241的根,考虑不同初值下牛顿法的收敛情况。
解:牛顿法公式为:利用mat lab 编程function di2ti21 3i=l ;2 2.85208156699784 xO 二input ('输入初值x0:‘ );A 二[i x0];3 2.55030468822809 t=x0+ (x0-log (xO) -2) /(1-1/xO) ; %迭代函数4 1.91547247100476 三 while (abs (t _x0)>0.01)i=i+l; 5 0.37867158538991 xO 二 t; 6 0.774964959780275 A = [A;i xO];t =x0+(x0-log(xO)-2)/(1-1/xO): 7 4.11574081641933 cnd| 8 5.04162436446126 disp (A);96.81782826645596当输入初值二3的时候并不能收敛。
东南大学出版社第二版《数值分析》上机作业答案(前三章)

for (i=k+1;i<N;i++) // { lik=a[i][k]/a[k][k]; //实施消去过程,得到上三角系数增广矩阵 for (j=k;j<M;j++) // { a[i][j]=a[i][j]‐lik*a[k][j]; // } } } cout<<"经列主元高斯消去法得到的数组为:"<<endl; // for (b=0;b<N;b++) // { cout<<endl; //输出经过列主元消去法处理过的系数增广矩阵 for (c=0;c<M;c++) { cout<<setw(7)<<a[b][c]; // } } cout<<endl; double x[N]; // double s; int f,g; x[N‐1]=a[N‐1][M‐1]/a[N‐1][N‐1]; // for (f=N‐2;f>=0;f‐‐) // { s=0; for (g=f+1;g<N;g++) //由上三角形的系数增广矩阵求出方程组的解 { s=s+a[f][g]*x[g]; // } x[f]=(a[f][N]‐s)/a[f][f]; // } cout<<"方程组的解为:"<<endl; for (b=0;b<N;b++) //输出方程组的解 {
1
当 n=10000 时,s3=0.7499 Press any key to continue (分析 S1 的 6 位数字中,有效位数为 4 位; S2 的所有数字都是有效数字。 ) 当 n=1000000 时,s1=‐14.2546 当 n=1000000 时,s2=‐14.2551 当 n=1000000 时,s3=0.749999 Press any key to continue (分析: S1 的 6 位数字中,没有有效数字; S2 的 6 位数字中,没有有效数字。 ) 由运行结果可知,当精度比较低时,按从大数开始累加到小数的计算结果的精度低于按从小数 累加到大数的计算结果的精度。 至于当 n=1000000 时,S1 和 S2 得出了负数结果,可能是由于循环次数过多,导致数据溢出, 从而得出错误结果。 习题 2 20.程序如下: //给定误差限为:0.5e‐6 //经过试算得当 delta 最大取道 0.7745966 时,迭代得到的根都收敛于 0 #include <iostream.h> #include <math.h> void main () { double x,u; int count=0; u=10.0; cout<<"请输入 x 的初值"<<endl; cin>>x; for (count=0;abs(u)>5;count++) { x=x‐(x*x*x‐3*x)/(3*(x*x‐1)); u=10000000*x; if(count>5000) { cout<<"迭代结果不收敛于 0!"<<endl; break; } } cout<<"x="<<x<<endl<<endl;
数值分析上机实验题参考

数值分析论文数值积分 一、问题提出选用复合梯形公式,复合Simpson 公式,Romberg 算法,计算I = dx x ⎰-4102sin 4 ()5343916.1≈II =dx x x ⎰1sin ()9460831.0,1)0(≈=I fI = dx xe x⎰+1024 I =()dx x x ⎰++1211ln 二、要求编制数值积分算法的程序;分别用两种算法计算同一个积分,并比较其结果;分别取不同步长()/ a b h -=n ,试比较计算结果(如n = 10, 20等); ﹡给定精度要求ε,试用变步长算法,确定最佳步长﹡。
三、目的和意义深刻认识数值积分法的意义; 明确数值积分精度与步长的关系;根据定积分的计算方法,可以考虑二重积分的计算问题引言一、数值求积的基本思想实际问题当中常常需要计算积分,有些数值方法。
如微分方程和积分方程的求解,也都和积分计算相联系。
依据人们熟悉的微积分基本原理,对于积分I=⎰a b f(x)dx,只要找到被积函数f(x)和原函数F(x),便有下列牛顿-莱布尼茨公式:I=⎰a b f(x)dx=F(b)-F(a).但实际使用这种求积方法往往有困难,因为大量的被积函数,诸如x xsin,2xe-等,其原函数不能用初等函数表达,故不能用上述公式计算。
另外,当f(x)是由测量或数值计算给出的一张数据表时,牛顿-莱布尼茨公式也不能直接运用,因此有必要研究积分的数值计算问题。
二、数值积分代数精度数值求积方法是近似方法,为要保证精度,我们自然希望求积公式能对“尽可能多”的函数准确成立,就提出了所谓代数精度的概念。
如果某个求积公式对次数不超过m的多项式均能准确成立,但对m+1次多项式就不能准确成立,则称该求积公式具有m次代数精度。
三、复合求积公式为了提高精度,通常可以把积分区间分成若干子区间(通常是等分),再在每个子区间用低阶求积公式,即复化求积法,比如复化梯形公式与复化辛普森公式。
数值分析课后习题部分参考答案.doc

数值分析课后习题部分参考答案Chapter 1(P10) 5.求厲的近似值x*,使其相对误差不超过0.1%。
解:V2 = 1.4 ••- o设X*有"位有效数字,则le(x*)lV0.5xl0xl(T"。
,*““0.5x10-" 牛(x )1< ] 。
从而,丨<故,若0.5x10-" <0.1%,则满足要求。
解之得,M>4O %* =1.414 O(P10) 7.正方形的边长约100cm ,问测量边长时误差应多大,才能保证面积的误差不超过1 cm2 o解:设边长为a ,则a心100cm。
设测量边长时的绝对误差为e,由误差在数值计算的传播,这时得到的面积的绝对误差有如下估计:® 2xl00xe…按测量要求,l2xl00xel<l解得,lel< 0.5x10 2 oChapter 2(P47) 5.用三角分解法求下列矩阵的逆矩阵:‘1 1 -1]A = 2 1 0 。
J j 0丿解:设A1 =(«0 /)=分别求如下线性方程组:先求A的LU分解(利用分解的紧凑格式),气1)1 (1)1 (-D-(2)2(D-1(0)2、⑴1(-1)2 (0) —3,(1 0 0、 ri 1 -1] 即,厶=2 1 0 ,U =0-12 J 2 1丿<0 0-3经直接三角分解法的回代程,分别求解方程组,1 0Ly =0 和 Ua = v ,得,a = 0J3 2 3 1(P47) 6.分别用平方根法和改进平方根法求解方程组:(1 2 1 -3兀1)2 50 -5兀2 2 10 14 1 x 3 16 、一 -5 1 15丿3解:平方根法:先求系数矩阵4的Cholesky 分解(利用分解的紧凑格式),'(1)1、< 1 0 0 0、(2)2(5)1,即,L =2 1 0 0 (1)1 (0)-2 (14)3 1 -2 3 、(_3) _ 3 (-5)1 (1)2 (15<-31 2 b216 改进平方根Ly = 和 II x = y ,得,x = 先求系数矩阵A 的形如A = LDU 的分解,其中厶-(/y .)4x4为单位下二角矩阵,D = diag{d l ,d 2,d 3,d 4}为对角矩阵。
(完整word版)数值分析考试试卷和答案(word文档良心出品)

线封密三峡大学试卷班级姓名学号2011年春季学期《数值分析》课程考试试卷( A 卷)答案及评分标准注意:1、本试卷共3页;2、考试时间:120 分钟;3、姓名、学号必须写在指定地方;一、(16分)填空题1. 已知1125A ⎡⎤=⎢⎥⎣⎦,则1A 6= (1分),∞A 7= . (1分)2.迭代过程),1,0)((1 ==+n x x n n ϕ收敛的一个充分条件是迭代函数)(x ϕ满足1|)(|<'x ϕ. (2分)3. 设),,2,1,0(,,53)(2==+=k kh x x x f k 则差商0],,,[321=+++n n n n x x x x f .(2分)4. 设)(x f 可微,求方程)(x f x =根的牛顿迭代格式是.2,1,0,)(1)(1='---=+k x f x f x x x k k k k k (2分)5. 用二分法求方程01)(3=-+=x x x f 在区间]1,0[内的根,迭代进行二步后根所在区间为]75.0,5.0[.(2分)6.为尽量避免有效数字的严重损失,当1>>x 时,应将表达式x x -+1改写为xx ++11以保证计算结果比较精确.(2分)7. 将2111A ⎛⎫= ⎪⎝⎭作Doolittle 分解(即LU 分解),则100.51L ⎛⎫= ⎪⎝⎭(2分),2100.5U ⎛⎫= ⎪⎝⎭(2分)二、(10分)用最小二乘法解下列超定线性方程组:⎪⎩⎪⎨⎧=-=+=+2724212121x x x x x x 解:23222121,e e e x x ++=)(ϕ221221221)2()72()4(--+-++-+=x x x x x x由 ⎪⎪⎩⎪⎪⎨⎧=-+=∂∂=-+=∂∂0)1662(20)1323(2212211x x x x x x ϕϕ(8分)得法方程组 ⎩⎨⎧=+=+166213232121x x x x 7231=⇒x , 7112=x所以最小二乘解为: 7231=x 7112=x . (10分)三、(10分)已知)(x f 的函数值如下表25.15.001)(15.005.01---x f x用复合梯形公式和复合Simpson 公式求dx x f ⎰-11)(的近似值.解 用复合梯形公式,小区间数4=n ,步长5.0)]1(1[41=--⨯=h )]1())5.0()0()5.0((2)1([24f f f f f hT +++-+-=.线封密三峡大学试卷班级姓名学号25.1]2)5.15.00(21[25.0=++++-=(5分) 用复合Simpson. 小区间数2=n ,步长1)]1(1[21=--⨯=h)]1())5.0()5.0((4)0(2)1([62f f f f f hS ++-+⨯+-=33.168]2)5.10(45.021[61≈=+++⨯+-= (10分)四、(12分)初值问题 ⎩⎨⎧=>+='0)0(0,y x b ax y有精确解 bx ax x y +=221)(, 试证明: 用Euler 法以h 为步长所得近似解n y 的整体截断误差为n n n n ahx y x y 21)(=-=ε证: Euler 公式为:),(111---+=n n n n y x hf y y代入b ax y x f +=),(得:)(11b ax h y y n n n ++=-- 由0)0(0==y y 得:bh b ax h y y =++=)(001; 11122)(ahx bh b ax h y y +=++= )(3)(21223x x ah bh b ax h y y ++=++=……)()(12111---++++=++=n n n n x x x ah nbh b ax h y y (10分)因nh x n =,于是 )]1(21[2-++++=n ah bx y n n 2)1(2nn ah bx n -+==n n n bx x x a+-12∴n n n y x y -=)(ε)2(2112n n n n n bx x x abx ax +-+=-=n n n x x x a )(21--=n hx a 2 =221anh (12分)五、(10分) 取节点1,010==x x ,写出x e x y -=)(的一次插值多项式),(1x L 并估计插值误差.解: 建立Lagrange 公式为()=x L 110100101y x x x x y x x x x --+--=10101101-⨯--+⨯--=e x x x e x 11-+-=.(8分)())1)(0(!2)()()(11--''=-=x x y x L x y x R ξ )10(<<ξ ()811)0(max 2110≤--≤≤≤x x x(10分)六、(10分) 在区间]3,2[上利用压缩映像原理验证迭代格式,1,0,4ln 1==+k x x k k 的敛散性.解 : 在]3,2[上, 由迭代格式 ,1,0,4ln 1==+k x x k k , 知=)(x ϕx 4ln .因∈x ]3,2[时,]3,2[]12ln ,8[ln )]3(),2([)(⊂=∈ϕϕϕx (5分) 又1|1||)(|<='xx ϕ,故由压缩映像原理知对任意]3,2[0∈x 有收敛的迭代公式),1,0(,4ln 1 ==+k x x k k (10分)线封密三峡大学试卷班级姓名学号七、(10分)试构造方程组⎩⎨⎧=+=+423322121x x x x 收敛的Jacobi 迭代格式和Seidel Gauss -迭代格式,并说明其收敛的理由. 解:将原方程组调整次序如下:⎩⎨⎧=+=+324232121x x x x 调整次序后的方程组为主对角线严格占优方程组,故可保证建立的J 迭代格式和GS 迭代格式一定收敛.收敛的J 迭代格式为:⎪⎪⎩⎪⎪⎨⎧-=-=++)3(21)24(31)(1)1(2)(2)1(1k k k k x x x x .,1,0 =k (5分)收敛的GS 迭代格式为:⎪⎪⎩⎪⎪⎨⎧-=-=+++)3(21)24(31)1(1)1(2)(2)1(1k k k k x x x x .,1,0 =k (10分)八、(12分)已知43,21,41210===x x x 1)推导以这3个点作为求积节点在[0,1]上的插值型求积公式;2)指明求积公式所具有的代数精度.解:1)过这3个点的插值多项式)())(())(()())(())(()(121012002010212x f x x x x x x x x x f x x x x x x x x x p ----+----=+)())(())((2021201x f x x x x x x x x ----⎰⎰=∑=≈∴)()()(221010k k k x f A dx x p dx x f ,其中: ⎰⎰=----=----=32)4341)(2141()43)(21())(())((10201021100dx x x dx x x x x x x x x A ⎰⎰-=----=----=31)4321)(4121()43)(41())(())((10210120101dx x x dx x x x x x x x x A ⎰⎰=----=----=322143)(4143()21)(41())(())((10120210102dx x x dx x x x x x x x x A ∴所求的插值型求积公式为:⎰+-≈)]43(2)21()41(2[31)(10f f f dx x f (10分) 2)上述求积公式是由二次插值函数积分而来的,故至少具有2次代数精度,再将43,)(x x x f =代入上述求积公式,有:⎰+-==]43(2)21()41(2[3141333310dx x ⎰+-≠=])43(2)21(41(2[3151444410dx x 故上述求积公式具有3次代数精度. (12分)九、(10分)学完《数值分析》这门课程后,请你简述一下“插值、逼近、拟合”三者的区别和联系.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如有帮助欢迎下载支持数值分析上机题姓名:陈作添学号: 040816习题 120.(上机题)舍入误差与有效数N11 3 1 1设S N,其精确值为 。
22 2 NN 1j 2j1(1)编制按从大到小的顺序111 ,计算 S 的通用程序。
S N1 321N 21 N22(2)编制按从小到大的顺序111,计算 S 的通用程序。
S N1(N 1)2 122 1NN 2(3)按两种顺序分别计算S 102 , S 104 , S 106 ,并指出有效位数。
(编制程序时用单精度)(4)通过本上机题,你明白了什么?按从大到小的顺序计算 S N 的通用程序为: 按从小到大的顺序计算 S N 的通用程序为:#include<iostream.h> #include<iostream.h> float sum(float N) float sum(float N) {{float j,s,sum=0; float j,s,sum=0; for(j=2;j<=N;j++) for(j=N;j>=2;j--) {{s=1/(j*j-1); s=1/(j*j-1); sum+=s;sum+=s;}}return sum;return sum;}}从大到小的顺序的值从小到大的顺序的值精确值有效位数从大到小从小到大0.7400490.740050.74004965 S 1020.7498520.74990.74994 4S 1040.7498520.7499990.74999936S 106通过本上机题, 看出按两种不同的顺序计算的结果是不相同的,按从大到小的顺序计算的值与精确值有较大的误差, 而按从小到大的顺序计算的值与精确值吻合。
从大到小的顺序计算得到的结果的有效位数少。
计算机在进行数值计算时会出现“大数吃小数”的现象,导致计算结果的精度有所降低,我们在计算机中进行同号数的加法时,采用绝对值较小者先加的算法,其结果的相对误差较小。
习题 220.(上机题) Newton 迭代法(1)给定初值x 0及容许误差,编制 Newton 法解方程f ( x)0 根的通用程序。
(2)给定方程f ( x) x3/ 3x0 ,易知其有三个根x 3 ,x2 0, x3 。
13 1.由 Newton 方法的局部收敛性可知存在0 ,当x0(,) 时,Newton迭代序列收敛于根 x2。
试确定尽可能大的。
2.试取若干初始值,观察当x0 (, 1),(1, ),(,) , (,1),(1, ) 时Newton 序列是否收敛以及收敛于哪一个根。
(3)通过本上机题,你明白了什么?解:( 1)编制的通用程序:#include<iostream.h>{#include<math.h>float x0,x1,a;#define eps0.000001/给定容许误差int k=0;float f(float x)//定义函数 f(x)cout<<" 请输入初值 x0:";{cin>>x0;float f;dof=x*x*x/3-x;//f(x) 的表达式 ;{return(f);a=-f(x0)/df(x0);}x1=x0+a;float df(float x)//定义函数 df(x) ,k++;计算 f(x) 的导函数x0=x1;{}float df;while(fabs(a)>eps);df=x*x-1;//f(x) 导函数的表达式 ;cout<<k<<'\t'<<x0;return (df);//输出迭代的次数和根值}}void main(void)( 2)计算迭代序列收敛于根x2的尽可能大的的函数为:#include<iostream.h>return(f);#include<math.h>}void delay(int n)// 定义延时函数float df(float x)// 定义函数 df(x) ,计算 f(x) {for(n=10000;n>0;n--);}的导函数#define eps 0.000001{float f(float x)//定义函数 f(x)float df;{df=x*x-1;//f(x) 导函数的表达式 ;float f;return (df);f=x*x*x/3-x;//f(x) 的表达式 ;}int judgement(float z)return 0;{}int count=5;void main(void)float x0,x1,type,type1;{x0=z;float delta=0;while(count-->0)int flag=1;{while(flag==1)x1=x0-f(x0)/df(x0);{type=fabs(x1);cout<<" 方程的根为 :"<<'\n';type1=fabs(x1-x0); // 调试值用delta+=eps;cout<<"count="<<count<<'\t'<<"type=flag=judgement(delta);"<<type<<'\t'<<"type1="<<type1<<'\n';}if(fabs(x1-x0)<eps)cout<<" 输出方程根收敛的区间return 1;值:\n";x0=x1;cout<<delta-eps; // 输出收敛的区间值delay(30000);//调试值用}}当步长为 0.001 时,程序计算出的δ的为δ =0.774 ,即在区间( -0.774, 0.774)内迭代序列收敛于 0。
对于不同得初始值收敛于不同的根, x0在( -∞, -1)内收敛于x1*,在( -0.774, 0.774)内收敛于x2,在( 1,+∞)内收敛于x3,但在内( 0.774,1)和(- 1,0.774)均可能收敛于x1*和 x3。
x1*, x2, x3分别为方程的精确解。
分析:对于不同的初值,迭代序列会收敛于不同的根,所以在某个区间内求根对于初值的选取有很大的关系。
产生上述结果的原因是区间不满足大范围收敛的条件。
习题 335.(上机题)列主元三角分解法对于某电路的分析,归结为求解线性方程组RI=V。
(1)编制解 n 阶线性方程组 Ax=b 的列主元三角分解法的通用程序;(2)用所编制的程序解线性方程组RI=V,并打印出解向量,保留五位有效数;(3)本编程之中,你提高了哪些编程能力?程序为:#include<iostream.h>cin>>n;#include<math.h>cout<<" 输入数组 a:"<<endl;void main(void)for(i=1;i<=n;i++){for(j=1;j<=(n+1);j++)int i,j,n,k,q;cin>>a[i][j];//给矩阵 a 赋值float a[10][11],s[10],s1[10];for(i=1;i<=n;i++)cout<<" 请输入 n 的值 :";{for(j=1;j<=(n+1);j++)cout<<a[i][j]<<'\t';cout<<'\n';}//输出数组acout<<"'''''''''''''''''''''''''"<<'\n';//进行第一行和第一列元素的求取'''''''''''''''''''''''''//int t=1;for(i=1;i<=n;i++){s[i]=a[i][1];}float max=fabs(s[1]);for(i=2;i<=n;i++)if(fabs(s[i])>max){max=fabs(s[i]);t=i;}for(j=1;j<=(n+1);j++){float b=a[1][j];a[1][j]=a[t][j];a[t][j]=b;}//进行第一列主元互换for(i=2;i<=n;i++)a[i][1]=a[i][1]/max; //第一列除以 a[1][1] for(i=1;i<=n;i++){for(j=1;j<=(n+1);j++)cout<<a[i][j]<<'\t';cout<<'\n';}//输出进行第一步变换的数组 acout<<"'''''''''''''''''''''''''"<<'\n';//进行第 k 步分解 '''''''''''''''''''''''''''''''''''''''''// for(k=2;k<=n;k++){for(i=k;i<=n;i++){float sum=0;for(q=1;q<k;q++)sum+=a[i][q]*a[q][k];s1[i]=a[i][k]-sum;}int l=k;float m=fabs(s1[k]);for(i=k;i<=n;i++)// 比较第 k 步分解的第k 列值的大小{if(fabs(s1[i])>m){m=fabs(s1[i]);l=i;// 返回行值}}for(j=1;j<=n+1;j++)//交换两行元素{float s2=a[k][j];a[k][j]=a[l][j];a[l][j]=s2;}for(j=k;j<=n+1;j++)//算出第 k 行行元素的值{float sum1=0;for(q=1;q<k;q++)sum1+=a[k][q]*a[q][j];a[k][j]=a[k][j]-sum1;}for(i=k+1;i<=n;i++)//算出第 k 列列元素的值{float sum2=0;for(q=1;q<k;q++)sum2+=a[i][q]*a[q][k];a[i][k]=(a[i][k]-sum2)/(a[k][k]);}}//第 k 步分解结束for(i=1;i<=n;i++){for(j=1;j<=(n+1);j++)cout<<a[i][j]<<'\t';cout<<'\n';}//输出改变后的数组//输出解 '''''''''''''''''''''''''''''''''''''''''''''''''''''''//float x[10];for(i=n-1;i>=1;i--){x[n]=a[n][n+1]/a[n][n];float sum3=0;for(i=1;i<=n;i++)for(j=i+1;j<=n;j++){sum3+=a[i][j]*x[j];cout<<'x'<<i<<'='<<x[i]<<endl;x[i]=(a[i][n+1]-sum3)/a[i][i];}//输出解向量}//回代过程}结果:方程的解为:x1= -0.28923 , x2= 0.34544 ,x3= -0.71281 ,x4= -0.22061 , x5= -0.43040 , x6= 0.15431 ,x7= -0.057823 , x8= 0.20105 ,x9= 0.29023 。