数值分析作业一
- 格式:doc
- 大小:43.50 KB
- 文档页数:3
数 值 分 析(B ) 大 作 业(一)姓名: 学号: 电话:1、算法设计:①求1λ、501λ和s λ的值:s λ:s λ表示矩阵的按模最小特征值,为求得s λ直接对待求矩阵A 应用反幂法即可。
1λ、501λ:若矩阵A 的特征值满足关系 1n λλ<<且1n λλ≠,要求1λ、及501λ时,可按如下方法求解: a . 对矩阵A 用幂法,求得按模最大的特征值1m λ。
b . 按平移量1m λ对矩阵A 进行原点平移得矩阵1m BA I λ=+,对矩阵B 用反幂法求得B 的按模最小特征值2m λ。
c . 321m m m λλλ=-则:113min(,)m m λλλ=,13max(,)n m m λλλ=即为所求。
②求和A 的与数5011140k k λλμλ-=+最接近的特征值ik λ(k=0,1,…39):求矩阵A 的特征值中与P 最接近的特征值的大小,采用原点平移的方法:先求矩阵 B=A-PI 对应的按模最小特征值k β,则k β+P 即为矩阵A 与P 最接近的特征值。
在本次计算实习中则是先求平移矩阵k B A I μ=-,对该矩阵应用反幂法求得s λ,则与k μ最接近的A 的特征值为:s P λ+重复以上过程39次即可求得ik λ(k=0,1,…39)的值。
③求A 的(谱范数)条件数2cond()A 和行列式det A :在(1)中用反幂法求矩阵A 的按模最小特征值时,要用到Doolittle 分解方法,在Doolittle 分解完成后得到的两个矩阵分别为L 和U ,则A 的行列式可由U 阵求出,即:det(A)=det(U)。
求得det(A)不为0,因此A 为非奇异的实对称矩阵,则: max 2()scond A λλ=,max λ和s λ分别为模最大特征值与模最小特征值。
2、程序源代码:#include "Stdio.h"#include "Conio.h"#include "math.h"//****************************************************************************// // 在存储带状矩阵时,下面的几个量在程序中反复用到,为方便编程故把它们定义成宏.// // M :转换后的矩阵的行数,M=R+S+1。
数值分析第一次作业及参考答案1. 设212S gt =,假定g 是准确的,而对t 的测量有0.1±秒的误差,证明当t 增加时S 的绝对误差增加,而相对误差却减少。
解:2**22211()0.122()0.10.2()1122,(),().r r e S S S gt gt gt e S gt e S t gt gt t e S e S =-=-====∴↑↑↓2. 设2()[,]f x C a b ∈且()()0f a f b ==,求证2''1max ()()max ().8a x ba xb f x b a f x ≤≤≤≤≤-解:由112,0),(,0)()()0()00.a b L x l x l x =⨯+⨯=(两点线性插值 插值余项为"111()()()()()()[,]2R x f x L x f x a x b a b ξξ=-=--∈ [,].x a b ∴∀∈有12211()()"()()()max "()[()()]221()()1max "()[]()max "().228a x ba xb a x b f x R x f x a x b f x x a b x x a b x f x b a f x ξ≤≤≤≤≤≤==--≤---+-≤=-21max ()()max "()8a xb a x b f x b a f x ≤≤≤≤∴≤-3. 已测得函数()y f x =的三对数据:(0,1),(-1,5),(2,-1),(1)用Lagrange 插值求二次插值多项式。
(2)构造差商表。
(3)用Newton 插值求二次插值多项式。
解:(1)Lagrange 插值基函数为0(1)(2)1()(1)(2)(01)(02)2x x l x x x +-==-+-+-同理 1211()(2),()(1)36l x x x l x x x =-=+ 故2202151()()(1)(2)(2)(1)23631i i i p x y l x x x x x x x x x =-==-+-+-++=-+∑(2)令0120,1,2x x x ==-=,则一阶差商、二阶差商为0112155(1)[,]4,[,]20(1)12f x x f x x ---==-==-----0124(2)[,,]102f x x x ---==-22()1(4)(0)1*(0)(1)31P x x x x x x =+--+-+=-+4. 在44x -≤≤上给出()xf x e =的等距节点函数表,若用二次插值求x e 的近似值,要使截断误差不超过610-,问使用函数表的步长h 应取多少?解:()40000(),(),[4,4],,,, 1.x k x f x e f x e e x x h x x h x x th t ==≤∈--+=+≤考察点及(3)200044343()()[(()]()[()]3!(1)(1)(1)(1)3!3!.(4,4).6f R x x x h x x x x h t t t e t h th t h e h e ξξ=----+-+≤+⋅⋅-=≤∈-则436((1)(1)100.006.t t t h --+±<< 在点 得5. 求2()f x x =在[a,b ]上的分段线性插值函数()h I x ,并估计误差。
数值分析大作业一一、算法设计方案1、求λ1和λ501的值:思路:采用幂法求出按模最大特征值λmax,该值必为λ1或λ501,若λmax小于0,则λmax=λ1;否则λmax=λ501。
再经过原点平移,使用幂法迭代出矩阵A-λmax I的特征值,此时求出的按模最大特征值即为λ1和λ501的另一个值。
2、求λs的值:采用反幂法求出按模最小的特征值λmin即为λs,其中的方程组采用LU分解法进行求解。
3、求与μk最接近的特征值:对矩阵A采用带原点平移的反幂法求解最小特征值,其中平移量为:μk。
4、A的条件数cond(A)=| λmax/λmin|;5、A的行列式的值:先将A进行LU分解,再求U矩阵对角元素的乘积即为A 行列式的值。
二、源程序#include<iostream>#include<iomanip>#include<math.h>#define N 501#define E 1.0e-12 //定义精度常量#define r 2#define s 2using namespace std;double a[N];double cc[5][N];void init();double mifa();double fmifa();int max(int aa,int bb);int min(int aa,int bb);int max_3(int aa,int bb,int cc);void LU();void main(){double a1,a2,d1,d501=0,ds,det=1,miu[39],lamta,cond;int i,k;init();/*************求λ1和λ501********************/a1=mifa();if(a1<0)d1=a1; //若小于0则表示λ1的值elsed501=a1; //若大于0则表示λ501的值for(i=0;i<N;i++)a[i]=a[i]-a1;a2=mifa()+a1;if(a2<0)d1=a2; //若小于0则表示λ1的值elsed501=a2; //若大于0则表示λ501的值cout<<"λ1="<<setiosflags(ios::scientific)<<setprecision(12)<<d1<<"\t";cout<<"λ501="<<setiosflags(ios::scientific)<<setprecision(12)<<d501<<endl;/**************求λs*****************/init();ds=fmifa();cout<<"λs="<<setiosflags(ios::scientific)<<setprecision(12)<<ds<<endl;/**************求与μk最接近的特征值λik**************/cout<<"与μk最接近的特征值λik:"<<endl;for(k=0;k<39;k++){miu[k]=d1+(k+1)*(d501-d1)/40;init();for(i=0;i<N;i++)a[i]=a[i]-miu[k];lamta=fmifa()+miu[k];cout<<"λi"<<k+1<<"\t\t"<<setiosflags(ios::scientific)<<setprecision(12)<<lamta<<en dl;}/**************求A的条件数**************/cout<<"矩阵A的条件式";cond=abs(max(abs(d1),abs(d501))/ds);cout<<"cond="<<setiosflags(ios::scientific)<<setprecision(12)<<cond<<endl;/**************求A的行列式**************/cout<<"矩阵A的行列式";init();LU();for(i=0;i<N;i++){det*=cc[2][i];}cout<<"det="<<setiosflags(ios::scientific)<<setprecision(12)<<det<<endl;system("pause");}/**************初始化函数,给a[N]赋值*************/void init(){int i;for(i=1;i<=501;i++)a[i-1]=(1.64-0.024*i)*sin((double)(0.2*i))-0.64*exp((double)(0.1/i)); }/**************幂法求最大绝对特征值**************/double mifa(){int i,k=0;double u[N],y[N]={0},b=0.16,c=-0.064,Beta_=0,error;for(i=0;i<501;i++)u[i]=1; //令u[N]=1for(k=1;k<2000;k++) //控制最大迭代次数为2000{/***求y(k-1)***/double sum_u=0,gh_sum_u;for(i=0;i<N;i++){sum_u+=u[i]*u[i]; }gh_sum_u=sqrt(sum_u);for(i=0;i<N;i++){y[i]=u[i]/gh_sum_u;}/****求新的uk****/u[0]=a[0]*y[0]+b*y[1]+c*y[2];u[1]=b*y[0]+a[1]*y[1]+b*y[2]+c*y[3]; //前两列和最后两列单独拿出来求中D间的循环求for(i=2;i<N-2;i++){u[i]=c*y[i-2]+b*y[i-1]+a[i]*y[i]+b*y[i+1]+c*y[i+2];}u[N-2]=c*y[N-4]+b*y[N-3]+a[N-2]*y[N-2]+b*y[N-1];u[N-1]=c*y[N-3]+b*y[N-2]+a[N-1]*y[N-1];/***求beta***/double Beta=0;for(i=0;i<N;i++){Beta+=y[i]*u[i];}//cout<<"Beta"<<k<<"="<<Beta<<"\t"; 输出每次迭代的beta /***求误差***/error=abs(Beta-Beta_)/abs(Beta);if(error<=E) //若迭代误差在精度水平内则可以停止迭代{return Beta;} //控制显示位数Beta_=Beta; //第个eta的值都要保存下来,为了与后个值进行误差计算 }if(k==2000){cout<<"error"<<endl;return 0;} //若在最大迭代次数范围内都不能满足精度要求说明不收敛}/**************反幂法求最小绝对特¬征值**************/double fmifa(){int i,k,t;double u[N],y[N]={0},yy[N]={0},b=0.16,c=-0.064,Beta_=0,error;for(i=0;i<501;i++)u[i]=1; //令u[N]=1for(k=1;k<2000;k++){double sum_u=0,gh_sum_u;for(i=0;i<N;i++){sum_u+=u[i]*u[i]; }gh_sum_u=sqrt(sum_u);for(i=0;i<N;i++){y[i]=u[i]/gh_sum_u;yy[i]=y[i]; //用重新赋值,避免求解方程组的时候改变y的值}/****LU分解法解方程组Au=y,求新的***/LU();for(i=2;i<=N;i++){double temp_b=0;for(t=max(1,i-r);t<=i-1;t++)temp_b+=cc[i-t+s][t-1]*yy[t-1];yy[i-1]=yy[i-1]-temp_b;}u[N-1]=yy[N-1]/cc[s][N-1];for(i=N-1;i>=1;i--){double temp_u=0;for(t=i+1;t<=min(i+s,N);t++)temp_u+=cc[i-t+s][t-1]*u[t-1];u[i-1]=(yy[i-1]-temp_u)/cc[s][i-1];}double Beta=0;for(i=0;i<N;i++){Beta+=y[i]*u[i];}error=abs(Beta-Beta_)/abs(Beta);if(error<=E){return (1/Beta);}Beta_=Beta;}if(k==2000){cout<<"error"<<endl;return 0;} }/**************求两数最大值的子程序**************/int max(int aa,int bb){return(aa>bb?aa:bb);}/**************求两数最小值的子程序**************/int min(int aa,int bb){return(aa<bb?aa:bb);}/**************求三数最大值的子程序**************/int max_3(int aa,int bb,int cc){ int tt;if(aa>bb)tt=aa;else tt=bb;if(tt<cc) tt=cc;return(tt);}/**************LU分解**************/void LU(){int i,j,k,t;double b=0.16,c=-0.064;/**赋值压缩后矩阵cc[5][501]**/for(i=2;i<N;i++)cc[0][i]=c;for(i=1;i<N;i++)cc[1][i]=b;for(i=0;i<N;i++)cc[2][i]=a[i];for(i=0;i<N-1;i++)cc[3][i]=b;for(i=0;i<N-2;i++)cc[4][i]=c;for(k=1;k<=N;k++){for(j=k;j<=min(k+s,N);j++){double temp=0;for(t=max_3(1,k-r,j-s);t<=k-1;t++)temp+=cc[k-t+s][t-1]*cc[t-j+s][j-1];cc[k-j+s][j-1]=cc[k-j+s][j-1]-temp;}//if(k<500){for(i=k+1;i<=min(k+r,N);i++){double temp2=0;for(t=max_3(1,i-r,k-s);t<=k-1;t++)temp2+=cc[i-t+s][t-1]*cc[t-k+s][k-1];cc[i-k+s][k-1]=(cc[i-k+s][k-1]-temp2)/cc[s][k-1];}}}}三、程序结果。
数值分析上机作业(一)一、算法的设计方案1、幂法求解λ1、λ501幂法主要用于计算矩阵的按模最大的特征值和相应的特征向量,即对于|λ1|≥|λ2|≥.....≥|λn|可以采用幂法直接求出λ1,但在本题中λ1≤λ2≤……≤λ501,我们无法判断按模最大的特征值。
但是由矩阵A的特征值条件可知|λ1|和|λ501|之间必然有一个是最大的,通过对矩阵A使用幂法迭代一定次数后得到满足精度ε=10−12的特征值λ0,然后在对矩阵A做如下的平移:B=A-λ0I由线性代数(A-PI)x=(λ-p)x可得矩阵B的特征值为:λ1-λ0、λ2-λ0…….λ501-λ0。
对B矩阵采用幂法求出B矩阵按模最大的特征值为λ∗=λ501-λ0,所以λ501=λ∗+λ0,比较λ0与λ501的大小,若λ0>λ501则λ1=λ501,λ501=λ0;若λ0<λ501,则令t=λ501,λ1=λ0,λ501=t。
求矩阵M按模最大的特征值λ的具体算法如下:任取非零向量u0∈R nηk−1=u T(k−1)∗u k−1y k−1=u k−1ηk−1u k=Ay k−1βk=y Tk−1u k(k=1,2,3……)当|βk−βk−1||βk|≤ε=10−12时,迭终终止,并且令λ1=βk2、反幂法计算λs和λik由已知条件可知λs是矩阵A 按模最小的特征值,可以应用反幂法直接求解出λs。
使用带偏移量的反幂法求解λik,其中偏移量为μk=λ1+kλ501−λ140(k=1,2,3…39),构造矩阵C=A-μk I,矩阵C的特征值为λik−μk,对矩阵C使用反幂法求得按模最小特征值λ0,则有λik=1λ0+μk。
求解矩阵M按模最小特征值的具体算法如下:任取非零向量u 0∈R n ηk−1= u T (k−1)∗u k−1y k−1=u k−1ηk−1 Au k =y k−1βk =y T k−1u k (k=1,2,3……)在反幂法中每一次迭代都要求解线性方程组Au k =y k−1,当K 足够大时,取λn =1βk 。
问题1:20.给定数据如下表:试求三次样条插值S(x),并满足条件 (1)S`(0.25)=1.0000,S`(0.53)=0.6868; (2)S ’’(0.25)=S ’’(0.53)=0。
分析:本问题是已知五个点,由这五个点求一三次样条插值函数。
边界条件有两种,(1)是已知一阶倒数,(2)是已知自然边界条件。
对于第一种边界(已知边界的一阶倒数值),可写出下面的矩阵方程。
⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡432104321034322110d M M M M M 200020000020022d d d d λμμλμλμλ其中μj =j1-j 1-j h h h +,λi=j1-j j h h h +,dj=6f[x j-1,x j ,x j+1], μn =1,λ0=1对于第一种边界条件d 0=0h 6(f[x 0,x 1]-f 0`),d n =1-n h 6(f`n-f `[x n-1,x n ]) 解:由matlab 计算得:由此得矩阵形式的线性方程组为:⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡ 2.1150-2.4286-3.2667-4.3143-5.5200-M M M M M 25714.00001204286.000004000.026000.0006429.023571.0001243210解得 M 0=-2.0286;M 1=-1.4627;M 2= -1.0333; M 3= -0.8058; M 4=-0.6546S(x)=⎪⎪⎩⎪⎪⎨⎧∈-+-+-∈-+-+-∈-+-+-∈-+-+-]53.0,45.0[x 5.40x 9.1087x 35.03956.8.450-x 1.3637-x .5301.67881- ]45.0,39.0[x 9.30x 11.188x 54.010.418793.0-x 2.2384-x .450(2.87040-]39.0,30.0[x 03.0x 6.9544x 9.30 6.107503.0-x 1.9136-x .3902.708779-]30.0,25.0[x 5.20x 10.9662x 0.3010.01695.20-x 4.8758-x .3006.76209-33333333),()()()(),()()()),()()()(),()()()(Matlab 程序代码如下:function tgsanci(n,s,t) %n代表元素数,s,t代表端点的一阶导。
MATLAB作业1. 判断如下命题是否正确(a) 一个问题的病态性如何,与求解它的算法有关系。
(错) (b) 无论问题是否病态,好的算法都会得到它好的近似解。
(错) (c) 计算中使用更高的精度,可以改善问题的病态性。
(错) (d) 用一个稳定的算法计算一个良态的问题,一定会得到它好的近似解。
(错) (e) 浮点数在整个数轴上是均匀分布的 (错) (f) 浮点数的加法满足结合律 (错) (g) 浮点数的加法满足交换律 (错) (h) 浮点数构成有限集合 (对) (i) 用一个收敛的算法计算一个良态的问题,一定会得到它好的近似解 (错)2. 函数sinx 有幂级数展开利用幂级数计算sinx 的Matlab 程序为 function s = powersin(x)% POWERSIN. Power series for sin(x).% POWERSIN(x) tries to compute sin(x) from a power series s = 0; t = x; n = 1;while s + t ~= s; s = s + t;t = -x^2/((n+1)*(n+2))*t; n = n + 2; end(a) 解释上述程序的终止准则;(b) 对于,计算的精度是多少?分别需要计算多少项?答:(a )当t 小于计算机的计算精度时,上述程序将终止。
(b ) x=/2π; n=23; s=1.0000x=11/2π; n=75; s= -1.0000x =21/2π; n=121; s= 0.9999/2,11/2,21/2x πππ=3. 考虑数列 ,它的统计平均值定义为它的标准差数学上等价于作为标准差的两种算法,你如何评价它们的得与失?第一种算法共进行了n 次乘方运算,2n 次求和运算,第二种算法进行了2n 次乘方和2n 次求和,运算次数较多。
而且第二种算法中2i x 与误差较为接近,易造成舍入2x n 。
习题(一)1. 指出四舍五入得到的下列各数有几位有效数字:x 1∗=7.8673,x 2∗=8.0916,x 3∗=0.06213,x 4∗=0.07800,x 5∗=90×103,x 6∗=2.0×10−4解:由有效数字定义得:x 1∗,x 2∗具有5位有效数字x 3∗,x 4∗具有4位有效数字x 5∗,x 6∗具有2位有效数字.2. 设准确值为x=3.78695,y=10,它们的近似值分别为x 1∗=3.7869,x 2∗=3.7870及y 1∗=9.9999,y 2∗=10.1,y 3∗=10.0001,试分析x 1∗,x 2∗,y 1∗,y 2∗,y 3∗分别具有几位有效数字. 解:x 1∗=3.7869=x 1∗=0.37869×101,k 1=1|x 1∗−x|=|3.7869−3.78695|=0.00005≤0.5×10−4=0.5×101−5, 即x 1∗具有5位有效数字;同理,x 2∗=3.7870=0.37870×101,k 2=1|x 2∗−x|=|3.7870−3.78695|=0.00005≤0.5×101−5,所以x 2∗具有5位有效数字; 将y 1∗,y 2∗,y 3∗分别写成y=±10k ×0.α1α2...αn 的表示形式,有:y 1∗=9.9999=0.99999×101,k 3=1;y 2∗=10.1=y 2∗=0.101×102,k 4=2;y 3∗=10.0001=0.100001×102,k 5=2;|y 1∗−y |=|9.9999−10|=0.0001=0.1×10−3≤0.5×101−4,n=4;|y 2∗−y |=|10.1−10|=0.1≤0.5×102−2,n=2;|y 3∗−y |=|10.0001−10|=0.0001=0.1×10−3≤0.5×102−5,n=5;所以y 1∗,y 2∗,y 3∗分别具有4,2,5位有效数字.8.为了使√11的近似值的相对误差不超过0.1%,问至少应取几位有效数字. 解:√11=0.3316624…=0.α1α2...αn ×10k ,α1=3,设x ∗有n 位有效数字,又因为|E x ∗|比值比较小, 故可用E r ∗(x ∗)= |E(x ∗)x ∗|代替相对误差E r ∗(x ∗),用εr ∗=εx ∗代替相对误差限εr 所以εr ∗≤12α1×10−n+1=16×10−n+1 令16×10−n+1≤0.1%,解得n ≥3.22即至少应取4位有效数字.12.如何计算下列函数值才比较精确.(1)11+2x −11+x ,对|x|≪1; (2)√x +1x −√x −1x ,对x ≫1;(3)∫dx 1+x 2N+1N,其中N 充分大; (4)1−cos xsin x ,对|x|≪1;(5)ln(30−√302−1)(开平方用6位函数表);解:(1)原式=1+x−(1+2x)(1+2x)(1+x)=−x (1+2x)(1+x); (2)原式=x+1x −(x−1x )√x+1x +√x−1x =2x √x+1x +√x−1x ;(3)原式=arc tan x|NN+1=arc tan N +1−arc tan N =arc tan N+1−N 1+N(N+1)=arc tan 11+N(N+1); (4)原式=2sinx 222sin x 2cos x 2=tan x2; (5)原式=30+√302−1=−ln(30+√302−1)令f(x)=ln(x −√x 2−1),则f(30)=ln(30−√302−1)=ln(30−√899),记a=30−√899 若用6位开方函数表,则有a ∗=30−29.9833=0.0167,故有ε(a ∗)=0.5×10−4, 而f(30)≈ln a ∗,于是ε(f (30))=ε(ln a ∗)≈|1a ∗|ε(a ∗)=0.50.0167×10−4≈0.003; 又因为f(x)等价于f(x)=-ln(x +√x 2−1),则f (30)=-ln(30+√899),记b=30+√899 同理b ∗=59.9833,进而ε(b ∗)=(2×10−4)−1,对f (30)≈ln b ∗ε(f (30))=ε(ln b ∗)≈|1b ∗|ε(b ∗)=0.559.9833×10−4≈0.834×10−6。
数值分析期末考试一、 设80~=x ,若要确保其近似数的相对误差限为0.1%,则它的近似数x 至少取几位有效数字?(4分)解:设x 有n 位有效数字。
因为98180648=<<=,所以可得x 的第一位有效数字为8(1分) 又因为21101011000110821--⨯=<⨯⨯≤n ε,令321=⇒-=-n n ,可知x 至少具有3位有效数字(3分)。
二、求矩阵A 的条件数1)(A Cond (4分)。
其中⎥⎦⎤⎢⎣⎡=4231A 解:⎥⎦⎤⎢⎣⎡--=-5.05.1121A (1分) 1A =7(1分) 2711=-A (1分)249)(1=A Cond (1分)三、用列主元Gauss 消元法法求解以下方程组(6分)942822032321321321=++-=++--=+-x x x x x x x x x解:→⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---→⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡----→⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡----5.245.2405.35.230914220321821191429142821120321 ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---→⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---8175835005,245.24091425.33.2305.245.2409142(4分) 等价三角方程组为:⎪⎪⎩⎪⎪⎨⎧-=-=+-=++,8175835,5.245.24,942332321x x x x x x (1分)回代得1,3,5123==-=x x x (1分)四、设.0,2,3,1,103)(3210234=-===-+-=x x x x x x x x f 1)求以3210,,,x x x x 为节3次Lagrange 多项式;(6分) 2)求以3210,,,x x x x 为节3次Newton 多项式;(6分)3)给出以上插值多项式的插值余项的表达式(3分)解:由0,2,3,13210=-===x x x x 可得10)(,34)(,1)(,11)(3210-==-=-=x f x f x f x f即得: +------+------=))()(())()(()())()(())()(()()(312101320130201032103x x x x x x x x x x x x x f x x x x x x x x x x x x x f x L=------+------))()(())()(()())()(())()(()(23130321033212023102x x x x x x x x x x x x x f x x x x x x x x x x x x x f+-+--+-⨯-+-+--+-⨯-)03)(23)(13()0)(2)(1()1()01)(21)(31()0)(2)(3(11x x x x x x326610.)20)(30)(10()2)(3)(1()10()02)(32)(12()0)(3)(1(34x x x x x x x x x -+--=+--+--⨯-+---------⨯2)计算差商表如下:i x )(i x f 一阶差商 二阶差商 三阶差商1 -11 3 -1 5 -2 34 -7 4 0-10-225-1则=+-----+-+-=)2)(3)(1()3)(1(4)1(511)(3x x x x x x x N326610x x x -+--3))2)(3)(1())()()((!4)()(3210)4(3+--=----=x x x x x x x x x x x x f x R ξ五、给定方程组b Ax =,其中⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=100131w w w w A 。
北京航空航天大学数值分析大作业一学院名称自动化专业方向控制工程学号ZY*******学生姓名许阳教师孙玉泉日期2021 年11月26 日设有501501⨯的实对称矩阵A ,⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=5011A a b c b c c b c b a其中,064.0,16.0),501,,2,1(64.0)2.0sin()024.064.1(1.0-==⋅⋅⋅=--=c b i e i i a ii 。
矩阵A 的特征值为)501,,2,1(⋅⋅⋅=i i λ,并且有||min ||,501150121i i s λλλλλ≤≤=≤⋅⋅⋅≤≤1λ,501λ和s λ的值。
A 的与数4015011λλλμ-+=kk 最接近的特征值)39,,2,1(⋅⋅⋅=k k i λ。
A 的(谱范数)条件数2)A (cond 和行列式detA 。
一 方案设计1 求1λ,501λ和s λ的值。
s λ为按模最小特征值,||min ||5011i i s λλ≤≤=。
可使用反幂法求得。
1λ,501λ分别为最大特征值及最小特征值。
可使用幂法求出按模最大特征值,如结果为正,即为501λ,结果为负,那么为1λ。
使用位移的方式求得另一特征值即可。
2 求A 的与数4015011λλλμ-+=kk 最接近的特征值)39,...,2,1(=k k i λ。
题目可看成求以k μ为偏移量后,按模最小的特征值。
即以k μ为偏移量做位移,使用反幂法求出按模最小特征值后,加上k μ,即为所求。
3 求A 的(谱范数)条件数2)(A cond 和行列式detA 。
矩阵A 为非奇异对称矩阵,可知,||)(min max2λλ=A cond(1-1)其中m ax λ为按模最大特征值,min λ为按模最小特征值。
detA 可由LU 分解得到。
因LU 均为三角阵,那么其主对角线乘积即为A 的行列式。
二 算法实现1 幂法使用如下迭代格式:⎪⎪⎩⎪⎪⎨⎧⋅===⋅⋅⋅=------||max |)|sgn(max ||max /),,(111111)0()0(10k k k k k k k k Tn u u Ay u u u y u u u β任取非零向量 (2-1)终止迭代的控制理论使用εβββ≤--||/||1k k k , 实际使用εβββ≤--||/||||||1k k k(2-2)由于不保存A 矩阵中的零元素,只保存主对角元素a[501]及b,c 值。
第一章 误差与算法1. 误差分为有__模型误差___, _观测误差___, __方法误差____, ___舍入误差____, Taylor 展开式近似表达函数产生的误差是_方法误差 .2. 插值余项是插值多项式的 方法误差。
0.2499作为1/4的近似值, 有几位有效数字?00.24990.249910,0m =⨯=即,031|0.2499|0.00010.5100.510,34m n n ---=<⨯=⨯=即22 3.1428751...,7=作为圆周率的近似值,误差和误差限分别是多少,有几位有效数字?2133.142875 3.14159260.00126450.5100.510---=<⨯=⨯有3位有效数字.* 有效数字与相对误差的关系3. 利用递推公式计算积分110,1,2,...,9n x n I x e dx n -==⎰错误!未找到引用源。
, 建立稳定的数值算法。
该算法是不稳定的。
因为:11()()...(1)!()n n n I n I n I εεε-=-==-111n n I I n n -=-, 10110I =4. 衡量算法优劣的指标有__时间复杂度,__空间复杂度_.时间复杂度是指: , 两个n 阶矩阵相乘的乘法次数是 , 则称两个n 阶矩阵相乘这一问题的时间复杂度为 .二 代数插值1.根据下表数据建立不超过二次的Lagrange 和Newton 插值多项式, 并写出误差估计式, 以及验证插值多项式的唯一性。
x 0 1 4f(x) 1 9 3Lagrange:设0120120,1,4;()1()9()3x x x f x f x f x ======则,, 对应 的标准基函数 为:1200102()()(1)(x 4)1()(1)(x 4)()()(01)(04)4x x x x x l x x x x x x ----===------ 1()...l x =2()...l x =因此, 所求插值多项式为:220()()()....i i i P x f x l x ===∑ (3)2()()(0)(1)(x 4)3!f R x x x ξ=--- Newton:构造出插商表:xi f(xi ) 一 二 三0 11 9 84 3 -2 -5/2所以, 所求插值多项式为:2001001201()()[,]()[,,]()()518(0)(0)(1)2...P x f x f x x x x f x x x x x x x x x x =+-+--=+----=插值余项: 2()[0,1,4,](0)(1)(x 4)R x f x x x =---2. 已知函数f(0)=1,f(1)=3,f(2)=7,则f[0,1]=___2________, f[0,1,2]=____1______)('],[000x f x x f =3.过0,1两节点构造三次Hermite 插值多项式, 使得满足插值条件: f(0)=1. .’(0)=... f(1.=2. .’(1)=1设0101010,1,()1()2'()0,'()1x x f x f x f x f x ======则,, 写出插商表:xi f(xi) 一 二 三0 10 1 01 a 1 11 a 1 0 a-1因此, 所求插值多项式为:插值余项:222()[0,0,1,1,](1)R x f x x x =-4.求f(x)=sinx 在[a,b]区间上的分段线性插值多项式, 并写出误差估计式。
数值分析作业一
习题 9:
解:求1
0(arccos )n I x dx =⎰的稳定递推公式 21/20/2/2
100n 1n 2~00001()/221101221y=x=cosy dx=-sinydy
x [0,/2]
I siny.cos .n.cosy..(/2)-n(n-1)I =(1)!E (n )(1)(n 1)!E (n n n n n n n n n y dy
y y y dy
n I E I I E n E πππππ---+∈==-+=-=-=--⎰⎰令arccosx ,则有,其中则的误差可以设为,根据误差的传递可得:
其中为偶数;同理,其中22n 2n )n 11I =I +(/2)(n 1)1
n n n π-----为奇数。
所以误差随着的变大而逐渐累加,顾不是稳定递推公式。
可求得稳定递推公式为:
习题10:
求 的稳定递推公式: 解: 1n 1011......(1)44c =-(-)44
1)c>4n 41c c 2c<4n c=n n n n n n n c I n
c E E I n
---+==+=求的递推公式为I 则有E ,根据误差的传递可得E 讨论:当时,递推公式(1)属于病态问题,即误差随增加而增加,所以递推公式要变为I )当时,误差随增加而变小,所以递推公式(1)是稳定的
3)当4时,误差不变,递推公式(1)是稳定的。
n
n x I dx x c
1
04=+⎰
实验题
程序:
ess=input('Enter the number of ess:');
ve=zeros(1,21);
ve(2)=ess;
y=roots(poly(1:20)+ve)
plot(y)
1.当ess取值大于0.00000000001时会出现“复数”根。
表明有些解对如此扰动敏感性较大。
2.当将方程(1.2)中的扰动项改成18x 或其它形式,实验中不会出现“复数”根,各跟的抗干扰性变强。
思考题一程序如下
ess=input('Enter the number of ess:');
ve=zeros(1,21);
ve(3)=ess;
y=solve(poly2sym(poly(1:20)+ve),'x')
plot(y)
输入不同的ess值发现各根的精确度变高,干扰也变大。
思考题二程序如下:
Y=0.1;i=1;
n=input('Enter the limit value:');
while i<n
Y=Y+0.1;
i=i+1;
end
E=Y-100;
fprintf('The result of E is: %d\n',E)
思考题三程序如下:
n=1:1:10000000;
E=abs((1+n.^-1).^n-exp(1));
[Emax,nmax]=max(E)。