数值分析上机题参考答案.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分)学完《数值分析》这门课程后,请你简述一下“插值、逼近、拟合”三者的区别和联系.。
数值分析上机题参考答案.docx
如有帮助欢迎下载支持数值分析上机题姓名:陈作添学号: 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通过本上机题, 看出按两种不同的顺序计算的结果是不相同的,按从大到小的顺序计算的值与精确值有较大的误差, 而按从小到大的顺序计算的值与精确值吻合。
从大到小的顺序计算得到的结果的有效位数少。
计算机在进行数值计算时会出现“大数吃小数”的现象,导致计算结果的精度有所降低,我们在计算机中进行同号数的加法时,采用绝对值较小者先加的算法,其结果的相对误差较小。
数值分析上机试题对应参考答案
一、 问答题1、什么是近似值x * 有效数字?若近似值x*的误差限是某一位的半个单位,该位到x*的第一位非零数字共有n 位,就说x*有n 位有效数字。
它可表示为X=±10m ×(a 1+a 2×10-1+…+a n ×10-(n-1),其中a i (i=1,2,…,n)是0到9中的一个数字,a 1≠0,m 为整数,且︱x -x *︱≠21×10m-n+12、数值计算应该避免采用不稳定的算法,防止有效数字的损失. 因此,在进行 数值运算算法设计过程中主要注意什么? (1)简化计算过程,减少运算次数; (2)避免两个相近的数相减;(3)避免除数的绝对值远小于被除数的绝对值; (4)防止大数“吃掉”小数的现象;(5)使用数值稳定的算法,设法控制误差的传播。
3、写出“n 阶阵A 具有n 个不相等的特征值”的等价条件(至少写3 个)(1)|A|不为零(2)n 阶矩阵A 的列或行向量组线性无关 (3)矩阵A 为满秩矩阵(4)n 阶矩阵A 与n 阶可逆矩阵B 等价4、迭代法的基本思想是什么?就是用某种极限过程去逐步逼近线性方程组精确解得方法。
其基本思想为:先任取一组近似解初值X 0,然后按照某种迭代原则,由X 0计算新的近似解X 1,以此类推,可计算出X 2,X 3,…X K ,。
,如果{X }收敛,则取为原方程组的解。
5、病态线性方程组的主要判断方法有哪些?(1)系数矩阵的某两行(列)几乎近似相关 (2)系数矩阵的行列式的值很小(3)用主元消去法解线性方程组时出现小主元(4)近似解x*已使残差向量r=b-Ax*的范数很小,但该近似解仍不符合问题要求。
6、Lagrange 插值的前提条件是什么?并写出二次Lagrange 插值的基函数。
前提条件是:⎩⎨⎧≠==i j i j x j,,(01)l i .2,1,0,n j i , = 二次Lagrange 插值的基函数:()))(())((2010210x x x x x x x x x l ----=()))(())((2101201x x x x x x x x x l ----= ()))(())((1202102x x x x x x x x x l ----=7、什么是数值积分的代数精度?如果某一个求积公式对于次数不超过m 的多项式均能准确地成立,但对于m+1次多项式就不准确成立,则称该求积公式具有m 次代数精度(或代数精确度)。
数值分析上机题答案
20.(上机题)舍入误差与有效数 设∑=-=N j N j S 2211,其精确值为)11123(21+--N N 。
(1)编制按从小到大的顺序11131121222-+⋅⋅⋅+-+-=N S N ,计算N S 的通用程序。
(2)编制按从大到小的顺序1211)1(111222-+⋅⋅⋅+--+-=N N S N ,计算N S 的通用程序。
(3)按两种顺序分别计算642101010,,S S S ,并指出有效位数。
(编制程序时用单精度)(4)通过本上机题,你明白了什么?c++代码:#include <iostream.h>#include <fstream.h>void main(){float S1,S2,S=0.0,N,j;fstream myfile; //定义文件myfile.open("chap0.txt",ios::in|ios::out);for (int i=0;i<3;i++){do //读入三组数据{cout<<"请输入N 值:";cin>>N;cout<<endl;myfile<<"当N = "<<N<<" 时"<<endl<<endl;}while (N<2);S=(float) ((1.5-(1.0/N)-(1.0/(N+1)))/2);myfile<<"精确值S=:"<<S<<endl<<endl;S1=0.0;S2=0.0;for (j=2;j<=N;j++) S1=S1+(float) (1.0/(j*j-1.0));for (j=N;j>=2;j--) S2=S2+(float) (1.0/(j*j-1.0));myfile<<"按从大到小的顺序求和结果S1=:"<<S1<<endl<<endl;myfile<<"按从小到大的顺序求和结果S2=:"<<S2<<endl<<endl;}myfile.close();}输出结果:当N = 100 时精确值S=:0.740049按从大到小的顺序求和结果S1=:0.740049 有效位数6按从小到大的顺序求和结果S2=:0.74005 有效位数5当N = 10000 时精确值S=:0.7499按从大到小的顺序求和结果S1=:0.749852 有效位数 4按从小到大的顺序求和结果S2=:0.7499 有效位数 4当N = 1000000 时精确值S=:0.749999按从大到小的顺序求和结果S1=:0.749852 有效位数 4按从小到大的顺序求和结果S2=:0.749999 有效位数 6体会:通过本题,我认识到了舍入误差对计算结果的影响,所以必须选择合适的计算方法,尽量减少这种误差的影响。
数值分析上机作业1-1解析
数值计算方法上机题目11、实验1. 病态问题实验目的:算法有“优”与“劣”之分,问题也有“好”和“坏”之别。
所谓坏问题就是问题本身的解对数据变化的比较敏感,反之属于好问题。
希望读者通过本实验对此有一个初步的体会。
数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。
病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。
问题提出:考虑一个高次的代数多项式∏=-=---=201)()20)...(2)(1()(k k x x x x x p (E1-1)显然该多项式的全部根为l ,2,…,20,共计20个,且每个根都是单重的(也称为简单的)。
现考虑该多项式方程的一个扰动0)(19=+xx p ε (E1-2)其中ε是一个非常小的数。
这相当于是对(E1-1)中19x 的系数作一个小的扰动。
我们希望比较(E1-1)和(E1-2)根的差别,从而分析方程(E1-1)的解对扰动的敏感性。
实验内容:为了实现方便,我们先介绍两个 Matlab 函数:“roots ”和“poly ”,输入函数u =roots (a )其中若变量a 存储1+n 维的向量,则该函数的输出u 为一个n 维的向量。
设a 的元素依次为121,...,,+n a a a ,则输出u 的各分量是多项式方程0...1121=++++-n n n n a x a x a x a的全部根,而函数b=poly(v)的输出b 是一个n +1维变量,它是以n 维变量v 的各分量为根的多项式的系数。
可见“roots ”和“Poly ”是两个互逆的运算函数.ve=zeros(1,21); ve(2)=ess;roots(poly(1:20))+ve)上述简单的Matlab 程序便得到(E1-2)的全部根,程序中的“ess ”即是(E1-2)中的ε。
实验要求:(1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。
数值分析上机题目详解
第一章一、题目设∑=-=NN j S 2j 211,其精确值为)11123(21+--N N 。
1) 编制按从大到小的顺序11131121222-+⋯⋯+-+-=N S N ,计算S N 的通用程序。
2) 编制按从小到大的顺序1211)1(111222-+⋯⋯+--+-=N N S N ,计算S N 的通用程序。
3) 按两种顺序分别计算64210,10,10S S S ,并指出有效位数。
(编制程序时用单精度) 4) 通过本次上机题,你明白了什么?二、通用程序N=input('Please Input an N (N>1):'); AccurateValue=single((0-1/(N+1)-1/N+3/2)/2); Sn1=single(0);for a=2:N; Sn1=Sn1+1/(a^2-1); endSn2=single(0);for a=2:N; Sn2=Sn2+1/((N-a+2)^2-1); endfprintf('The value of Sn (N=%d)\n',N);fprintf('Accurate Calculation %f\n',AccurateValue); fprintf('Caculate from large to small %f\n',Sn1); fprintf('Caculate from small to large %f\n',Sn2); disp('____________________________________________________')三、结果从结果可以看出有效位数是6位。
感想:可以得出,算法对误差的传播有一定的影响,在计算时选一种好的算法可以使结果更为精确。
从以上的结果可以看到从大到小的顺序导致大数吃小数的现象,容易产生较大的误差,求和运算从小数到大数所得到的结果才比较准确。
数值分析实验(参考答案)
数值分析上机实验学生姓名: 学号: 教师:实验1:1. 实验项目的性质和任务通过上机实验,使学生对病态问题、线性方程组求解和函数的数值逼近方法有一个初步理解。
2.教学内容和要求 1)对高阶多多项式201()(1)(2)(20)()k p x x x x x k ==---=-∏编程求下面方程的解 19()0p x x ε+=并绘图演示方程的解与扰动量ε的关系。
Matlab 程序:x=1:20;y=zeros(1,20); ve=zeros(1,21); plot(x,y,'o') hold on ; pause; for x=1:5ve(2)=10^(-x);e=roots(poly(1:20)+ve);plot(e,'*') hold on pause; end0510152025303540-20-15-10-5051015202)对2~20n =,生成对应的Hilbert 矩阵,计算矩阵的条件数;通过先确定解获得常向量b 的方法,确定方程组 n H x b =最后,用矩阵分解方法求解方程组,并分析计算结果。
Matlab 程序:for n=2:20; H=hilb(n); ca=cond(H,2) x=(1:n)'; b=H*x; [L,U]=lu(H); y=L\b;x1=U\yplot(x,x,'o',x1,x1,'*') hold on pause; end-500-400-300-200-100100200300400500-500-400-300-200-10001002003004005003)对函数 21()[1,1]125f x x x=∈-+的Chebyshev 点 (21)cos()1,2,...,12(1)kk x k n n π-==++编程进行Lagrange 插值,并分析插值结果。
Matlab 程序:function y=lagrangen(x0,y0,x) n=length(x0);m=length(x); for i=1:m z=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;for n=5:20x=-1:0.01:1; y=1./(1+25*x.^2);plot(x,y,'r')hold onk=n+1:-1:1;x0=cos((2*k-1)*pi./(2*(n+1))),y0=1./(1+25*x0.^2);x=-1:0.01:1; y1=lagrangen(x0,y0,x);plot(x0,y0,'o',x,y1), pausehold off end-1-0.8-0.6-0.4-0.200.20.40.60.81-0.200.20.40.60.811.2-1-0.8-0.6-0.4-0.200.20.40.60.81-1-0.8-0.6-0.4-0.200.20.40.60.81。
数值分析上机题答案
数值分析上机题答案【篇一:数值分析上机试题对应参考答案】么是近似值x* 有效数字?若近似值x*的误差限是某一位的半个单位,该位到x*的第一位非零数字共有n位,就说x*有n位有效数字。
它可表示为2、数值计算应该避免采用不稳定的算法,防止有效数字的损失. 因此,在进行数值运算算法设计过程中主要注意什么?(1)简化计算过程,减少运算次数;(2)避免两个相近的数相减;(3)避免除数的绝对值远小于被除数的绝对值;(4)防止大数“吃掉”小数的现象;(5)使用数值稳定的算法,设法控制误差的传播。
3、写出“n 阶阵a 具有n 个不相等的特征值”的等价条件(至少写3 个)(1)|a|不为零(2)n阶矩阵a的列或行向量组线性无关(3)矩阵a为满秩矩阵(4)n阶矩阵a与n阶可逆矩阵b等价4、迭代法的基本思想是什么?就是用某种极限过程去逐步逼近线性方程组精确解得方法。
其基本思想为:先任取一组近似解初值x0,然后按照某种迭代原则,由x0计算新的近似解x1,以此类推,可计算出x2,x3,…xk,。
,如果{x}收敛,则取为原方程组的解。
5、病态线性方程组的主要判断方法有哪些?(1)系数矩阵的某两行(列)几乎近似相关(2)系数矩阵的行列式的值很小(3)用主元消去法解线性方程组时出现小主元(4)近似解x*已使残差向量r=b-ax*的范数很小,但该近似解仍不符合问题要求。
6、lagrange 插值的前提条件是什么?并写出二次lagrange 插值的基函数。
1,j?i?(x)? 前提条件是:l i ,j?0,1,2?,n.?ij0,j?i?二次lagrange 插值的基函数: (x?x)(x?x)12??lx0(xx)(xx) 0?10?2 (x?x)(x?x)02?? lx1(xx)(xx)1?01?2(x?x)(x?x)01?? lx2(x?x)(x?x)20217、什么是数值积分的代数精度?如果某一个求积公式对于次数不超过m的多项式均能准确地成立,但对于m+1次多项式就不准确成立,则称该求积公式具有m次代数精度(或代数精确度)。
数值分析上机题
上机题1舍入误差与有效数: 设2211N N j S j ==-∑,其精确值为1311()221N N --+。
(1) 编制按从大到小的顺序222111+2131N 1N S =++---…,计算N S 的通用程序; (2) 编制按从小到大的顺序222111+N 1N-1121N S =++---…(),计算N S 的通用程序; (3) 按两种顺序分别计算246101010S ,S ,S ,并指出有效位数(编制程序时用单精度);(4) 通过本上机题你明白了什么?Matlab 代码:Sb=single(0); %定义数据类型为单精度Ss=single(0);y=single(0);Y=single(0);N=single(2);a=1000000;while(1) %从大到小相加Y=1/(N^2-1);Sb=Sb+Y;if(N>=a)break;endN=N+1;endfprintf('Sb[%d]=%10.9f\n',N,Sb)n=single(a);while(1) %从小到大相加y=1/(n^2-1);Ss=Ss+y;if(n<=2)break;endn=n-1;endfprintf('Ss[%d]=%10.9f\n',a,Ss)St=(3/2-1/a-1/(1+a))/2; %准确值fprintf('St[%d]=%10.9f\a',a,St)分别计算246101010S ,S ,S 值为:Sb[100]=0.740049481Ss[100]=0.740049541St[100]=0.740049505从大到小S 计算有效位数为6位,从小到大为7位;Sb[10000]=0.749852121Ss[10000]=0.749899983St[10000]=0.749900005从大到小S 计算有效位数为3位,从小到大为3位;Sb[1000000]=0.749852121Ss[1000000]=0.749999046St[1000000]=0.749999000从大到小S 计算有效位数为3位,从小到大为7位;心得:按从小到大计算的有效数字要多与按从大到小计算所得。
数值分析上机答案
第六章 2、证明:对于矩阵A 进行分解有:000300002000020001210002000A L D U=++-⎛⎫⎛⎫⎛⎫ ⎪ ⎪ ⎪=++ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪-⎝⎭⎝⎭⎝⎭那么:对于Jacobi 迭代其迭代矩阵为:11()20033000021020001020022101102J B D L U --=+⎛⎫- ⎪-⎛⎫⎛⎫ ⎪ ⎪ ⎪⎪=+= ⎪ ⎪⎪ ⎪ ⎪- ⎪⎝⎭⎝⎭⎪- ⎪⎝⎭对于Gauss-Seidel 迭代其迭代矩阵为:11()20033000021020001002212000110012g s J B B D L U---==-⎛⎫- ⎪-⎛⎫⎛⎫ ⎪ ⎪ ⎪ ⎪=+= ⎪ ⎪ ⎪ ⎪ ⎪- ⎪⎝⎭⎝⎭ ⎪ ⎪⎝⎭(1)对于B J 我们求()J B ρ有:223111det(I )0()212112J B λλλλλλ-=-=--所以12,30,λλ==则有:()1J B ρ=< ,所以Jacobi 迭代收敛。
对于Gauss-Seidel 迭代,求其()g s B ρ-有:11()112g s g sB B ρ--∞<=< 所以Gauss-seidel 迭代收敛。
(2)并且有11()()12g s J B B ρρ-=<= 所以Gauss-Seidel 迭代收敛速度更快。
3、解:求取系数矩阵并进行分解有:4101143,50143A b -⎛⎫⎛⎫ ⎪ ⎪=--= ⎪ ⎪ ⎪ ⎪--⎝⎭⎝⎭那么SOR 迭代公式为:取初始值为(0,0,0)有:(0)1(1)()(1)()1(0,0,0)()/1,2,3T i n k k k k ii i ij i ij i ii j j i x x x b a x a x a i ω-++==⎧=⎪⎪=+--⎨⎪⎪=⎩∑∑ 那么有:对于ω=1.03有:3(1)(0)(0)111113(1)(0)(1)(0)22221122222(1)(0)(1)(0)33333333311.03()/40.25751.03()/ 1.353806251.03()/0.423894890625j j j j j j j j j x x b a x x x b a x a x a x x b a x a x a ===⎧=+-=⎪⎪⎪⎪=+--=⎨⎪⎪=+--=-⎪⎪⎩∑∑∑ 那么*(1)0.35380625x x ∞-=,条件不满足,继续迭代有:6次。
- 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 。