当前位置:文档之家› 《数值分析》实验指导书(附代码-2011年)

《数值分析》实验指导书(附代码-2011年)

《数值分析》实验指导书(附代码-2011年)
《数值分析》实验指导书(附代码-2011年)

中南林业科技大学《数值分析》实验指导书

一、本实验课程教学目的

《数值分析》实验课程是其理论课程的辅助手段,通过实验课程,让学生更好地理解相关理论和算法思想,并加强学生的实际动手能力。

二、实验项目

实验一Lagrange插值算法实现

1、实验目的

熟悉Lagrange插值算法,并能用计算机语言实现。

2、实验环境

TC3.0/VC++ 6.0编程环境。

3、相关理论

见教材

4、实验内容

1.用C/C++语言实现Lagrange插值算法。

5、实验步骤

1.认真熟悉教材关于Lagrange算法的理论分析;

2.以书中P.28 例2为实例进行数据测试。

[附:参考程序]

#include "stdio.h" // 输入输出scanf(), printf(),可改成输入输出流cin,cout

#include "conio.h" // 清除屏幕clrscr()

//定义并输入各个初始数据,根据各个题目不同修改

double x[]={0.32,0.34,0.36};

double y[]={0.314567,0.333487,0.352274};

double xx=0.3367;

double Lagrange(double xxx)

{

//采用算法计算出近似函数(多项式)

//此处采用Lagrange插值法,利用循环计算对称的基函数和最终结果

double result=0,temp;

for(int i=0;i<=2;i++)

{

temp=1;

for(int j=0;j<=2;j++)

{

if(j!=i)

{

temp=temp*(xxx-x[j])/(x[i]-x[j]);

}

}

result=result+temp*y[i];

}

return result;

}

void main()

{

printf("Sin(%f) = %f \n",xx,Lagrange(xx));

}

实验二Newton均差插值算法的实现

1、实验目的

熟悉Newton均差插值算法,并能用计算机语言实现。

2、实验环境

TC3.0/VC++ 6.0编程环境。

3、相关理论

见教材

4、实验内容

用C/C++语言实现Newton均差插值算法

5、实验步骤

1.认真熟悉教材关于Newton均差插值的理论分析;

2.以书中P.32 例4为实例进行数据测试。

[附:参考程序]

#include "stdio.h"

#include "conio.h"

#define N 10

double f[N][N];

double x[]={0.4,0.55,0.65,0.80,0.90,1.05};

double y[]={0.41075,0.57815,0.69675,0.88811,1.02652,1.25382};

double fx(int i,int j);

double S(int start,int end,double xx);

main()

{

int loopi,loopj,n;

double result,xx;

scanf("%d",&n);

scanf("%lf",&xx);

for(loopi=0;loopi<=n;loopi++)

{

f[loopi][0]=y[loopi];//零阶均差作为均差表二维数组的第0列}

for(loopi=1;loopi<=n;loopi++)

{

for(loopj=1;loopj<=loopi;loopj++)

{

f[loopi][loopj]=fx(loopi,loopj);

}

}

result=S(0,n,xx);

printf("Result is: %f",result);

getch();

return 1;

}

//求均差表

double fx(int i,int j)

{

if(j==0)

{

return f[i][j];

}

else

{

return (fx(i,j-1)-fx(i-1,j-1))/(x[i]-x[i-j]);//这种表示方法需要注意两个x的下标}

}

//用秦九韶算法计算差值多项式结果

double S(int start,int end,double xx)

{

if(start==end)

{

return f[end][end];

}

else

{

return (S(start+1,end,xx)*(xx-x[start])+f[start][start]);

}

}

实验三 NEWTON 差分插值算法实现

1、实验目的

熟悉NEWTON 差分插值算法,并能用计算机语言实现。

2、实验环境

TC3.0/VC++ 6.0编程环境。

3、相关理论

差分:k k k f f f -=?+1(向前差分)

1--=?k k k f f f (向后差分)

NEWTON 差分插值公式(此处为前插公式)

如果插值节点),2,1,0(0n k kh x x k =+=,要计算0x 附近点x 的函数值)(x f ,则可令10,0≤≤+=t th x x k ,于是相应的公式为: 002000!

)1()1(!2)1()(f n n t t t f t t f t f th x N n n ?+--++?-+?+=+

4、实验内容

1.用C/C++语言实现NEWTON 前插公式

5、实验步骤

1.认真熟悉教材关于NEWTON 差分插值算法的理论分析;

2.以书中P.34 例5为实例进行数据测试。

[附:参考程序]

#include "stdio.h"

#include "conio.h"

float f[10][10];

float fx(int i,int j);

float S(int n,float t,int end);

main()

{

int n=0,loopi,loopj;

float x,a,b,h,t;

float result;

clrscr();

printf("Please input a & b & h (a,b,h):");

scanf("%f,%f,%f",&a,&b,&h);

printf("\n");

printf("Please input ci shu :");

scanf("%d",&n);

printf("\n");

printf("Please input jie dian zhi(>=n+1 ge):\n");

for(loopj=0;loopj<=n;loopj++)

{

scanf("%f",&f[0][loopj]);

}

printf("\n");

printf("**********************************************************");

printf("\n");

printf("Please input the X:");

scanf("%f",&x);

printf("\n**********************************************************");

printf("\n");

t=(x-a)/h;

for(loopi=1;loopi<=n;loopi++)

{

for(loopj=0;loopj<=n-1;loopj++)

{

f[loopi][loopj]=fx(loopi,loopj);

}

}

printf("a=%f\n",a);

printf("b=%f\n",b);

printf("h=%f\n",h);

printf("t=%f\n",t);

printf("x=%f\n",x);

for(loopj=0;loopj<=n;loopj++)

{

for(loopi=0;loopi<=n-loopj;loopi++)

{

printf("%f ",f[loopi][loopj]);

}

printf("\n");

}

result=S(0,t,n);

printf("\n**********************************************************\n");

printf("Result is: %f",result);

getch();

return 1;

}

float fx(int i,int j)

{

if(i==0)

{

return f[i][j];

}

else

{

return (fx(i-1,j+1)-fx(i-1,j));

}

}

float S(int n,float t,int end)

{

if(n==end)

{

return f[n][0];

}

else

{

return S(n+1,t,end)*(t-n)/(n+1)+f[n][0];

}

}

实验四最小二乘法的法方程算法实现

1、实验目的

熟悉最小二乘法的原理和基本思想,理解法方程的构造过程,并能用计算机语言实现。

2、实验环境

TC3.0/VC++ 6.0编程环境。

3、相关理论

见教材

4、实验内容

用C/C++语言依据最小二乘法构造其中的法方程。

(以后学习方程组的数值解法后增加解法方程的模块)

5、实验步骤

1.认真熟悉教材关于最小二乘法的理论分析;理解法方程的构造过程;

2.以书中P.75 例9为实例构造法方程,并输出方程组(不用求解)

[附:参考程序]

#include

#define N 4

#define M 1

double a[N][N],d[N];

double x[]={19.0,25.0,31.0,38.0,44.0},y[]={19.0,32.3,49.0,73.3,97.8},w[]={1.0,1.0,1.0,1.0,1.0}; #include //setw()用于设置输出数据宽度。

double FI(int c,int t)

{

switch (c)

{ //分情况确定FI (k)的表达式

case 0:

return 1;

case 1:

return x[t]*x[t];

}

//....

return 1;

}

void cal()

{

for(int k=0;k<=M;k++)

{

//算K行系数

for(int j=0;j<=M;j++)

{

a[k][j]=0;

for(int t=0;t<=N;t++)

{

a[k][j]=a[k][j]+w[t]*FI(k,t)*FI(j,t);

}

}

d[k]=0;

//算第K个常数

for(j=0;j<=N;j++)

{

d[k]=d[k]+w[j]*FI(k,j)*y[j];

}

}

}

void main()

{

cout<<"The Matrix is:\n";

cal();

//输出方程组

for(int i=0;i<=M;i++)

{

for(int j=0;j<=M;j++)

{

cout<

if(j

else cout<<" = ";

}

cout<

cout<<"\n";

}

}

实验五Romberg求积算法的实现

1、实验目的

熟悉Romberg求积算法,并能用计算机语言实现。

2、实验环境

TC3.0/VC++ 6.0编程环境。

3、相关理论

数值求积的基本思想是通过积分中值定理将积分转化为函数的四则运算。利用梯形公

式、Simpson 公式、Cotes 公式、Romberg 公式间的关系,可构造出由梯形公式计算Romberg 公式的方法。

对于积分?=b

a dx x f I )(,将积分区间[a,b]划分为n 等分,分点

n a b h n k kh x k -=

==),,2,1,0( ,则相应的复化梯形公式为: ∑-=+=1

)]()([2n k k k n x f x f h T , Simpson 公式与复化梯形公式关系: n n n T T S 3

1342-= Cotes 公式与Simpson 公式关系: n n n S S C 15

115162-= Romberg 公式与Cotes 公式关系: n n n C C R 63163642-=

4、实验内容

用C/C++语言实现Romberg 求积算法

5、实验步骤

1.认真熟悉教材关于求积算法的理论分析;

2.以书中P.108 例3为实例进行数据测试。

[附:参考程序]

#include "stdio.h"

#include "math.h"

float T(int n,float a,float b);

float S(int n,float a,float b);

float C(int n,float a,float b);

float R(int n,float a,float b);

float f[100];

main()

{

int n;

float a,b,result;

printf("Please input n,a,b:");

scanf("%d,%f,%f",&n,&a,&b);

printf("\n");

result=R(n,a,b); //求最后的Romberg 公式计算结果

}

float T(int n,float a,float b)

{

float h,s=0;

float x;

h=(b-a)/n;

for (int i=0;i<=n;i++)

{

x=a+i*h;

if(x==0)

{

f[i]=1;

}

else

{

f[i]=sin(x)/x; //此处是计算函数f(x)在xi这点的函数值}

if (i==0 || i==n)

{

s=s+f[i];

}

else

{

s=s+2*f[i]; //除了首尾节点,其他节点计算2次

}

}

return (h/2*s);

}

float S(int n,float a,float b)

{

float temp=0;

temp=4.0/3*T(2*n,a,b)-1.0/3*T(n,a,b);

return temp;

}

float C(int n,float a, float b)

{

float temp=0;

temp=16.0/15*S(2*n,a,b)-1.0/15*S(n,a,b);

return temp;

}

float R(int n,float a, float b)

{

float temp=0;

temp=64.0/63*C(2*n,a,b)-1.0/63*C(n,a,b);

return temp;

}

实验六高斯列主元素消去法算法实现

1、实验目的

熟悉消去法解方程组的原理和基本思想,并能用计算机语言实现。

2、实验环境

TC3.0/VC++ 6.0编程环境。

3、相关理论

高斯消去法解线性方程组是最常用的解线性方程组的方法。而高斯列主元素消去法只是为了避免选用绝对值小的元素作为主元的一种改进方法。

Ax 来说,可以通过将系数矩阵化为上三角形矩阵,从而采用回代对于线性方程组b

过程求解出线性方程组的解来。

4、实验内容

用C/C++语言实现高斯列主元素消去法算法

5、实验步骤

1.认真熟悉教材关于高斯消去法的理论分析;并理解其算法过程描述。

2.以书中P.148 例4为实例进行数据测试。

[附:参考程序]

#include "math.h" // fabs()

#include "stdlib.h" // exit()

#include "stdio.h" // scanf(), printf()

#include "conio.h" // clrscr()

float a[10][10];

float b[10];

float det;

float exchange(int i,int j,int n);

void myexit(int i);

main()

{

int n,loopi,loopj,k,maxi;

float max,sum;

clrscr();

printf("Please input jieshu n:");

scanf("%d",&n);

printf("\nPlease input a[i][j]:");

for(loopi=1;loopi<=n;loopi++)

{

for(loopj=1;loopj<=n;loopj++)

{

scanf("%f",&a[loopi][loopj]);

}

}

printf("\nPlease input b[i]:");

for(loopi=1;loopi<=n;loopi++)

{

scanf("%f",&b[loopi]);

}

printf("\n");

printf("**********************************************************"); printf("\n");

printf("your formuler is:\n");

for(loopi=1;loopi<=n;loopi++)

{

for(loopj=1;loopj<=n;loopj++)

{

if(loopj==n)

{

printf("%6.3f x%d = %6.3f\n",a[loopi][loopj],loopj,b[loopi]);

}

else

{

printf("%6.3f x%d + ",a[loopi][loopj],loopj);

}

}

}

printf("\n");

printf("**********************************************************"); printf("\n");

/***************************************************

now,let's begin to calculate the result!

***************************************************/

det=1.0;

for(k=1;k<=n-1;k++)

{

maxi=k;

max=a[k][k];

for(loopi=k+1;loopi<=n;loopi++)

{

if(fabs(a[loopi][k])>fabs(max))

{

max=a[loopi][k];

maxi=loopi;

}

}

if(max==0)

{

det=0;

myexit(k);

}

if(maxi!=k)

{

exchange(maxi,k,n);

}

for(loopi=k+1;loopi<=n;loopi++)

{

a[loopi][k]=a[loopi][k]/a[k][k];

for(loopj=k+1;loopj<=n;loopj++)

{

a[loopi][loopj]=a[loopi][loopj]-a[loopi][k]*a[k][loopj];

}

b[loopi]=b[loopi]-a[loopi][k]*b[k];

}

det=a[k][k]*det;

}

if(a[n][n]==0)

{

det=0;

myexit(n);

}

b[n]=b[n]/a[n][n];

for(loopi=n-1;loopi>=1;loopi--)

{

sum=0;

for(loopj=loopi+1;loopj<=n;loopj++)

{

sum=sum+a[loopi][loopj]*b[loopj];

}

b[loopi]=(b[loopi]-sum)/a[loopi][loopi];

}

det=a[n][n]*det;

printf("\n**********************************************************\n");

printf("Result is: \n");

for(loopj=1;loopj<=n;loopj++)

{

printf("x%d = %10.5f",loopj,b[loopj]);

printf("\n");

}

printf("det(A) = %10.5f",det);

getch();

return 1;

}

float exchange(int i,int j,int n)

{

int loopk;

float temp;

for(loopk=1;loopk<=n;loopk++)

{

temp=a[i][loopk];

a[i][loopk]=a[j][loopk];

a[j][loopk]=temp;

}

temp=b[i];

b[i]=b[j];

b[j]=temp;

det=-det;

return 0;

}

void myexit(int i)

{

printf("\n The DET(A)=0,some a[%d][%d] is 0!",i,i);

exit(0);

}

实验七追赶法算法实现

1、实验目的

熟悉追赶法解对角占优的三对角线方程组的原理和基本思想,并能用计算机语言实现。

2、实验环境

TC3.0/VC++ 6.0编程环境。

3、相关理论

见教材

4、实验内容

用C/C++语言实现追赶法算法

5、实验步骤

1.认真熟悉教材关于追赶法的理论分析;并理解其算法过程描述。

2.以书中P.177 第9题为实例进行数据测试。

[附:参考程序]

#include "stdio.h" // scanf(), printf()

#define N 10

float a[N],b[N],c[N],f[N],Beta[N],x[N],y[N];

main()

{

int n,i,j;

float temp;

//输入数据

printf("Please input jieshu n:");

scanf("%d",&n);

printf("\nPlease input a[i]:");

for(i=2;i<=n;i++)

{

scanf("%f",&a[i]);

}

printf("\nPlease input b[i]:");

for(i=1;i<=n;i++)

{

scanf("%f",&b[i]);

}

printf("\nPlease input c[i]:");

for(i=1;i<=n-1;i++)

{

scanf("%f",&c[i]);

}

printf("\nPlease input f[i]:");

for(i=1;i<=n;i++)

{

scanf("%f",&f[i]);

}

printf("\n");

printf("**********************************************************");

printf("\n");

//开始计算

//1、计算BETA(i)

Beta[1]=c[1]/b[1];

for(i=2;i<=n-1;i++)

{

Beta[i]=c[i]/(b[i]-a[i]*Beta[i-1]);

}

//2、求解y[i]

y[1]=f[1]/b[1];

for(i=2;i<=n;i++)

{

y[i]=(f[i]-a[i]*y[i-1])/(b[i]-a[i]*Beta[i-1]);

}

//3、求解x[i]

x[n]=y[n];

for(i=n-1;i>=1;i--)

{

x[i]=y[i]-Beta[i]*x[i+1];

}

printf("Result is: \n");

for(i=1;i<=n;i++)

{

printf("x%d = %6.3f",i,x[i]);

printf("\n");

}

return 1;

}

实验八高斯-塞德尔迭代法算法实现

1、实验目的

熟悉迭代法解线性方程组的原理和基本思想,并能用计算机语言实现。

2、实验环境

TC3.0/VC++ 6.0编程环境。

3、相关理论

见教材

4、实验内容

用C/C++语言实现高斯-塞德尔迭代法算法

5、实验步骤

1.认真熟悉教材关于高斯-塞德尔迭代法的理论分析;

2.以书中P.189 例6为实例进行数据测试。

[附:参考程序]

#include "iostream.h"

#include "math.h"

#define N 10

#define MaxN 1000

#define eps 0.00001

float a[N][N],b[N],xk[N],xk1[N];

void main()

{

int n,i,j,k;

float temp,max;

cout<<"Please input n:";

cin>>n;

cout<

cout<<"please input a[i][j]:"<

for(i=1;i<=n;i++)

{

for(j=1;j<=n;j++)

{

cin>>a[i][j];

}

}

cout<<"please input b[i]:"<

for(i=1;i<=n;i++)

{

cin>>b[i];

}

cout<<"********************************************************"<

cout<<"your formuler is:\n";

for(i=1;i<=n;i++)

{

for(j=1;j<=n;j++)

{

if(j==n)

{

cout<

}

{

cout<

}

}

}

cout<

cout<<"********************************************************"<

for(i=1;i<=n;i++)

{

xk[i]=xk1[i]=0.0;

}

for(k=1;k<=MaxN;k++)

{

for(i=1;i<=n;i++)

{

temp=0.0;

for(j=1;j<=n;j++)

{

if(j

{

temp=temp+a[i][j]*xk1[j];

}

else if(j>i)

{

temp=temp+a[i][j]*xk[j];

}

}

xk1[i]=(b[i]-temp)/a[i][i];

}

max=fabs((double)(xk1[1]-xk[1]));

for(i=1;i<=n;i++)

{

if(fabs((double)(xk1[i]-xk[i]))>max)

{

max=fabs((double)(xk1[i]-xk[i]));

}

}

if(max

{

}

else

{

for(i=1;i<=n;i++)

{

xk[i]=xk1[i];

}

}

}

if(k

{

cout<<"Result is:"<

for(i=1;i<=n;i++)

{

cout<<"X["<

}

cout<<"die dai ci shu k = "<

}

else

{

cout<<"Error!";

}

}

实验九SOR迭代法算法实现

1、实验目的

熟悉迭代法解线性方程组的原理和基本思想,并能用计算机语言实现。

2、实验环境

TC3.0/VC++ 6.0编程环境。

3、相关理论

见教材

4、实验内容

用C/C++语言实现SOR迭代法算法

5、实验步骤

1.认真熟悉教材关于SOR迭代法的理论分析;

2.以书中P.195例9为实例进行数据测试。

[附:参考程序]

#include "iostream.h"

#include "math.h"

#define N 10

#define MaxN 1000

#define eps 0.00001

#define w 1.4 //修改此处松弛因子,看迭代次数(0.6-17次,0.8-11次,0.9-9次,0.95-9次,1.0-7次,1.05-8次,1.1-9次,1.3-17次)

float a[N][N],b[N],xk[N],xk1[N],xtemp;

void main()

{

int n,i,j,k;

float temp,max;

cout<<"Please input n:";

cin>>n;

cout<

cout<<"please input a[i][j]:"<

for(i=1;i<=n;i++)

{

for(j=1;j<=n;j++)

{

cin>>a[i][j];

}

}

cout<<"please input b[i]:"<

for(i=1;i<=n;i++)

{

cin>>b[i];

}

cout<<"********************************************************"<

cout<<"your formuler is:\n";

for(i=1;i<=n;i++)

{

for(j=1;j<=n;j++)

{

if(j==n)

{

cout<

}

else

{

cout<

}

数值分析典型习题

特别声明:考试时需带计 算器作辅助计算 1.2015x *=是经四舍五入得到的近似值,则其相对误差* r e ≤-31 104 ?. 2. 01(),(), ,()n l x l x l x 是以01,, ,n x x x 为节点的拉格朗日插值基函数,则 3.设(0)1(1)3(2)4(3)2f =,f =,f =,f =,[0123]f =,,,1 3 - . 4. 利用Simpson 公式求?2 1 2dx x = 7.3 5. 设求积公式1 0()d (),(1)n k k k f x x A f x n ≈≥∑?=是Gauss 型求积公式,则3 n k k k A x == ∑1 .4 6. 数值微分公式(2)(2) ()i i i f x h f x h f x h +≈ --'的截断误差为 2().O h 7. 设1101A ?? = ??? ,则A 的谱半径()A ρ= 1 ,A 的条件数1cond ()A = 4. 8. 用牛顿下山法求解方程3 03 x x -=根的迭代公式是 2 13 3(1),3n n n n x x x x x λ+-=-- 下山条件是 1()().n n f x f x +< 9.对任意初始向量(0)x 及任意向量f ,线性方程组的迭代公式(1)()(0,1,2,)k k k +=+=x Bx f ,迭代序列()k x 收敛于方程组的精确解x *的充分必要条件是()1.ρ

数值分析课后题答案

数值分析 第二章 2.当1,1,2x =-时,()0,3,4f x =-,求()f x 的二次插值多项式。 解: 0120121200102021101201220211,1,2, ()0,()3,()4;()()1 ()(1)(2)()()2()()1 ()(1)(2) ()()6 ()()1 ()(1)(1) ()()3 x x x f x f x f x x x x x l x x x x x x x x x x x l x x x x x x x x x x x l x x x x x x x ==-===-=--==-+-----==------= =-+-- 则二次拉格朗日插值多项式为 2 20 ()()k k k L x y l x ==∑ 0223()4() 14 (1)(2)(1)(1)23 537623 l x l x x x x x x x =-+=---+ -+= +- 6.设,0,1,,j x j n =L 为互异节点,求证: (1) 0()n k k j j j x l x x =≡∑ (0,1,,);k n =L (2)0 ()()0n k j j j x x l x =-≡∑ (0,1,,);k n =L 证明 (1) 令()k f x x = 若插值节点为,0,1,,j x j n =L ,则函数()f x 的n 次插值多项式为0 ()()n k n j j j L x x l x == ∑。 插值余项为(1)1() ()()()()(1)! n n n n f R x f x L x x n ξω++=-= + 又,k n ≤Q

(1)()0 ()0 n n f R x ξ+∴=∴= 0()n k k j j j x l x x =∴=∑ (0,1,,);k n =L 0 000 (2)()() (())()()(()) n k j j j n n j i k i k j j j i n n i k i i k j j i j x x l x C x x l x C x x l x =-==-==-=-=-∑∑∑∑∑ 0i n ≤≤Q 又 由上题结论可知 ()n k i j j j x l x x ==∑ ()()0 n i k i i k i k C x x x x -=∴=-=-=∑原式 ∴得证。 7设[]2 (),f x C a b ∈且()()0,f a f b ==求证: 21 max ()()max ().8 a x b a x b f x b a f x ≤≤≤≤''≤- 解:令01,x a x b ==,以此为插值节点,则线性插值多项式为 10 101010 ()() ()x x x x L x f x f x x x x x --=+-- =() () x b x a f a f b a b x a --=+-- 1()()0()0 f a f b L x ==∴=Q 又 插值余项为1011 ()()()()()()2 R x f x L x f x x x x x ''=-= -- 011 ()()()()2 f x f x x x x x ''∴= --

数值分析习题集及答案[1].(优选)

数值分析习题集 (适合课程《数值方法A 》和《数值方法B 》) 长沙理工大学 第一章 绪 论 1. 设x >0,x 的相对误差为δ,求ln x 的误差. 2. 设x 的相对误差为2%,求n x 的相对误差. 3. 下列各数都是经过四舍五入得到的近似数,即误差限不超过最后一位的半个单位,试指出 它们是几位有效数字: *****123451.1021,0.031,385.6,56.430,7 1.0.x x x x x =====? 4. 利用公式(3.3)求下列各近似值的误差限: ********12412324(),(),()/,i x x x ii x x x iii x x ++其中**** 1234 ,,,x x x x 均为第3题所给的数. 5. 计算球体积要使相对误差限为1%,问度量半径R 时允许的相对误差限是多少? 6. 设028,Y =按递推公式 1n n Y Y -=( n=1,2,…) 计算到100Y .27.982(五位有效数字),试问计算100Y 将有多大误差? 7. 求方程2 5610x x -+=的两个根,使它至少具有四位有效数字27.982). 8. 当N 充分大时,怎样求2 1 1N dx x +∞+?? 9. 正方形的边长大约为100㎝,应怎样测量才能使其面积误差不超过1㎝2 ? 10. 设 212S gt = 假定g 是准确的,而对t 的测量有±0.1秒的误差,证明当t 增加时S 的绝对 误差增加,而相对误差却减小. 11. 序列 {}n y 满足递推关系1101n n y y -=-(n=1,2,…),若0 1.41y =≈(三位有效数字), 计算到 10y 时误差有多大?这个计算过程稳定吗? 12. 计算6 1)f =, 1.4≈,利用下列等式计算,哪一个得到的结果最好? 3 -- 13. ()ln(f x x =,求f (30)的值.若开平方用六位函数表,问求对数时误差有多大?若

数值分析典型例题

第一章典型例题 例3 ln2=0.…,精确到10-3的近似值是多少 解 精确到10-3=,即绝对误差限是=, 故至少要保留小数点后三位才可以。ln2 第二章典型例题 例1 用顺序消去法解线性方程组 ??? ??1 -=4+2+4=+2+31 -=4++2321 321321x x x x x x x x x 解 顺序消元 ?? ?? ??????---???→???????????---????→???????????--=-?+-?+-?+1717005.555.00141 25.025.105.555.001412142141231412]b A [)3()2/1()2/3(231312r r r r r r M 于是有同解方程组 ?? ? ??-==--=++17175.555.0142332321x x x x x x 回代得解 x 3=-1, x 2=1,x 1=1,原线性方程组的解为X =(1,1,-1)T 例2 取初始向量X (0)=(0,0,0)T ,用雅可比迭代法求解线性方程组 ??? ??5 =+2+23=++1=2-2+321 321321x x x x x x x x x 解 建立迭代格式 ???????+--=+--=++-=+++5223122) (2)(1)1(3 ) (3)(1)1(2 ) (3)(2)1(1k k k k k k k k k x x x x x x x x x (k =1,2,3,…)

第1次迭代,k =0 X (0)=0,得到X (1)=(1,3,5)T 第2次迭代,k =1 ???????-=+?-?-=-=+--==+?+?-=3 532123 351515232)2(3) 2(2)2(1x x x X (2)=(5,-3,-3)T 第3次迭代,k =2 ???????=+-?-?-==+---==+-?+-?-=1 5)3(2521 3)3(511)3(2)3(2)2(3) 3(2)3(1x x x X (3)=(1,1,1)T 第4次迭代,k =3 ???????=+?-?-==+--==+?+?-=1 512121 311111212)2(3) 2(2)2(1x x x X (4)=(1,1,1)T 例4 证明例2的线性方程组,雅可比迭代法收敛,而高斯-赛德尔迭代法发散。 证明 例2中线性方程组的系数矩阵为 A =?? ?? ? ?????-122111221 于是 D =?? ?? ??????100010001 D -1=D ??????????=022001000L ~ ????? ?????-=000100220U ~ 雅可比迭代矩阵为

数值分析实验报告1

实验一误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 其中ε(1.1)和(1.221,,,a a 的输出b ”和“poly ε。 (1(2 (3)写成展 关于α solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。 实验过程: 程序: a=poly(1:20); rr=roots(a); forn=2:21 n form=1:9 ess=10^(-6-m);

ve=zeros(1,21); ve(n)=ess; r=roots(a+ve); -6-m s=max(abs(r-rr)) end end 利用符号函数:(思考题一)a=poly(1:20); y=poly2sym(a); rr=solve(y) n

很容易的得出对一个多次的代数多项式的其中某一项进行很小的扰动,对其多项式的根会有一定的扰动的,所以对于这类病态问题可以借助于MATLAB来进行问题的分析。 学号:06450210 姓名:万轩 实验二插值法

数值分析习题集及答案

(适合课程《数值方法A 》和《数值方法B 》) 第一章 绪 论 1. 设x >0,x 的相对误差为δ,求ln x 的误差. 2. 设x 的相对误差为2%,求n x 的相对误差. 3. 下列各数都是经过四舍五入得到的近似数,即误差限不超过最后一位的半个单位,试指出它们是几位 有效数字: ***** 123451.1021,0.031,385.6,56.430,7 1.0.x x x x x =====? 4. 利用公式(3.3)求下列各近似值的误差限: * * * * * * * * 12412324(),(),()/,i x x x ii x x x iii x x ++其中* * * * 1234,,,x x x x 均为第3题所给的数. 5. 计算球体积要使相对误差限为1%,问度量半径R 时允许的相对误差限是多少? 6. 设028,Y =按递推公式 11783 100 n n Y Y -=- ( n=1,2,…) 计算到100Y .若取783≈27.982(五位有效数字),试问计算100Y 将有多大误差? 7. 求方程2 5610x x -+=的两个根,使它至少具有四位有效数字(783≈27.982). 8. 当N 充分大时,怎样求 2 11N dx x +∞+?? 9. 正方形的边长大约为100㎝,应怎样测量才能使其面积误差不超过1㎝2 ? 10. 设2 12S gt = 假定g 是准确的,而对t 的测量有±0.1秒的误差,证明当t 增加时S 的绝对误差增加, 而相对误差却减小. 11. 序列{}n y 满足递推关系1101 n n y y -=-(n=1,2,…),若02 1.41y =≈(三位有效数字),计算到10 y 时误差有多大?这个计算过程稳定吗? 12. 计算6 (21)f =-,取 2 1.4≈,利用下列等式计算,哪一个得到的结果最好? 3 6 3 11,(322), ,9970 2. (21) (322) --++ 13. 2 ()ln(1)f x x x =- -,求f (30)的值.若开平方用六位函数表,问求对数时误差有多大?若改用另一等 价公式 2 2 ln(1)ln(1)x x x x - -=-+ + 计算,求对数时误差有多大? 14. 试用消元法解方程组{ 10 10 12121010; 2. x x x x +=+=假定只用三位数计算,问结果是否可靠? 15. 已知三角形面积 1sin , 2 s ab c = 其中c 为弧度, 02c π << ,且测量a ,b ,c 的误差分别为,,.a b c ???证 明面积的误差s ?满足 . s a b c s a b c ????≤ ++ 第二章 插值法 1. 根据( 2.2)定义的范德蒙行列式,令

数值分析典型习题资料

数值分析典型习题

特别声明:考试时需带计 算器作辅助计算 1.2015x *=是经四舍五入得到的近似值,则其相对误差* r e ≤ -31 104 ?. 2. 01(),(),,()n l x l x l x L 是以01,,,n x x x L 为节点的拉格朗日插值基函数,则 3.设(0)1(1)3(2)4(3)2f =,f =,f =,f =,[0123]f =,,,1 3 - . 4. 利用Simpson 公式求?2 1 2dx x = 7.3 5. 设求积公式1 0()d (),(1)n k k k f x x A f x n ≈≥∑?=是Gauss 型求积公式,则3 n k k k A x == ∑1 .4 6. 数值微分公式(2)(2) ()i i i f x h f x h f x h +≈ --'的截断误差为 2().O h 7. 设1101A ?? = ??? ,则A 的谱半径()A ρ= 1 ,A 的条件数1cond ()A = 4. 8. 用牛顿下山法求解方程3 03 x x -=根的迭代公式是 2 13 3(1),3n n n n x x x x x λ+-=-- 下山条件是 1()().n n f x f x +< 9.对任意初始向量(0)x 及任意向量f ,线性方程组的迭代公式(1)()(0,1,2,)k k k +=+=L x Bx f ,迭代序列()k x 收敛于方程组的精确解x *的充分必要条件是()1.ρ

数值分析实验报告1

实验一 误差分析 实验(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对()中19x 的系数作一个小的扰动。我们希望比较()和()根的差别,从而分析方程()的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b =

的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve = ))20:1((ve poly roots + 上述简单的Matlab 程序便得到()的全部根,程序中的“ess ”即是()中的ε。 实验要求: (1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。 如果扰动项的系数ε很小,我们自然感觉()和()的解应当相差很小。计算中你有什么出乎意料的发现表明有些解关于如此的扰动敏感性如何 (2)将方程()中的扰动项改成18x ε或其它形式,实验中又有怎样的现象 出现 (3)(选作部分)请从理论上分析产生这一问题的根源。注意我们可以将 方程()写成展开的形式, ) 3.1(0 ),(1920=+-= x x x p αα 同时将方程的解x 看成是系数α的函数,考察方程的某个解关于α的扰动是否敏感,与研究它关于α的导数的大小有何关系为什么你发现了什么现象,哪些根关于α的变化更敏感 思考题一:(上述实验的改进) 在上述实验中我们会发现用roots 函数求解多项式方程的精度不高,为此你可以考虑用符号函数solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。

数值分析课后答案

1、解:将)(x V n 按最后一行展开,即知)(x V n 是n 次多项式。 由于 n i i i n n n n n i n x x x x x x x x x x V ...1...1... ......... ...... 1 )(21110 20 0---= ,.1,...,1,0-=n i 故知0)(=i n x V ,即110,...,,-n x x x 是)(x V n 的根。又)(x V n 的最高 次幂 n x 的系数为 )(...1...1... ...... .........1),...,,(101 1 21 11 2 2221 02001101j n i j i n n n n n n n n n n n x x x x x x x x x x x x x x V -== ∏-≤<≤-----------。 故知).)...()()(,...,,()(1101101------=n n n n x x x x x x x x x V x V 6、解:(1)设 .)(k x x f =当n k ,...,1,0=时,有.0)()1(=+x f n 对 )(x f 构造Lagrange 插值多项式, ),()(0 x l x x L j n j k j n ∑== 其 0)()! 1() ()()()(1)1(=+=-=++x w n f x L x F x R n n n n ξ, ξ介于j x 之间,.,...,1,0n j = 故 ),()(x L x f n =即 .,...,1,0,)(0 n k x x l x k j n j k j ==∑= 特别地,当0=k 时, 10) (=∑=n j x j l 。 (2) 0)()1(1) ()1()()(0000=-=??? ? ??-??? ? ??-=--=-===∑∑∑∑k j j i j i k j k i i j i i k j n j k i i j k n j j x x x x i k x l x x i k x l x x )利用(。 7、证明:以b a ,为节点进行线性插值,得 )()()(1 b f a b a x a f b a b x x P --+--= 因 0)()(==b f a f ,故0)(1=x P 。而 ))()(("2 1 )()(1b x a x f x P x f --= -ξ,b a <<ξ。 故)("max )(8 122)("max )(max 2 2 x f a b a b x f x f b x a b x a b x a ≤≤≤≤≤≤-=??? ??-≤。 14、解:设 ))...()(()(21n n x x x x x x a x f ---=, k x x g =)(,记)() (1 ∏=-=n j j n x x x w ,则 ),()(x w a x f n n =).()(' j n n j x w a x f = 由差商的性质知 [])! 1()(1,..,,1) (' 1 )(')('1 211 11 -== ==-===∑∑∑ n g a x x x g a x w x a x w a x x f x n n n n n j j n k j n n j j n n k j n j j k j ξ, ξ介于n x x ,...,1之间。 当20-≤≤ n k 时,0)()1(=-ξn g , 当 1-=n k 时,)!1()(1-=-n g n ξ, 故 ???-=-≤≤=-= --=∑1,,20,0)!1()(1) ('1 11 n k a n k n g a x f x n n n n j j k j ξ 16、解:根据差商与微商的关系,有 [] 1! 7! 7!7)(2,...,2,2)7(7 10===ξf f , [ ] 0! 80 !8)(2,...,2,2)8(8 1 ===ξf f 。 ( 13)(47+++=x x x x f 是7次多项式, 故 ,!7)()7(=x f 0)()8(=x f )。 25、解:(1) 右边= [][]dx x S x f x S dx x S x f b a b a ??-+-)(")(")("2)(")("2 = [] d x x S x f x S x S x S x f x f b a ?-++-)("2)(")("2)(")(")("2)(" 222 = [] d x x S x f b a ?-)(")(" 22 = [][]dx x S dx x f b a b a 2 2 )(")("??- =左边。 (2)左边= ? -b a dx x S x f x S ))(")(")(("

数值分析典型例题

第一章典型例题 例3…,精确到10-3的近似值是多少? 解 精确到10-3=,即绝对误差限是?=, 故至少要保留小数点后三位才 可以。ln2? 第二章典型例题 例1 用顺序消去法解线性方程组 解 顺序消元 于是有同解方程组 回代得解 x 3=-1, x 2=1,x 1=1,原线性方程组的解为X =(1,1,-1)T 例2 取初始向量X (0)=(0,0,0)T ,用雅可比迭代法求解线性方程组 解 建立迭代格式 ??? ????+--=+--=++-=+++5223122)(2)(1)1(3) (3)(1)1(2 )(3)(2)1(1k k k k k k k k k x x x x x x x x x (k =1,2,3,…) 第1次迭代,k =0 X (0)=0,得到X (1)=(1,3,5)T 第2次迭代,k =1 X (2)=(5,-3,-3)T 第3次迭代,k =2 X (3)=(1,1,1)T 第4次迭代,k =3

X (4)=(1,1,1)T 例4 证明例2的线性方程组,雅可比迭代法收敛,而高斯-赛德尔迭 代法发散。 证明 例2中线性方程组的系数矩阵为 A =?? ?? ? ?????-122111221 于是 D =?? ?? ??????100010001 D -1 =D ?? ?? ? ?????=022001000L ~ ?? ?? ? ?????-=000100220U ~ 雅可比迭代矩阵为 B 0=?? ?? ? ?????--=??????????-??????????-=+--022101220022101220100010001)U ~L ~(D 1 得到矩阵B 0的特征根03,2,1=λ,根据迭代基本定理4,雅可比迭代法收敛。 高斯-赛德尔迭代矩阵为 G =-U ~ )L ~D (1-+ =-?? ?? ??????----=??????????-??????????---=??????????-??????????-2003202200001002201200110010001002201220110011 解得特征根为?1=0,?2,3=2。由迭代基本定理4知,高斯-赛德尔迭代发散。 例5 填空选择题: 1. 用高斯列主元消去法解线性方程组 作第1次消元后的第2,3个方程分别为 。

数值分析课后题答案

数值分析 2?当x=1,—1,2时,f(x)=O, 一3,4,求f(x)的二次插值多项式。解: X 0 =1,x j = — 1,x 2 = 2, f(X。)= 0, f (xj = -3, f (x2)= 4; l o(x)=(x-xi^~x2\=-1(x 1)(x-2) (x o -X/X o _x2) 2 (x -x0)(x -x2) 1 l i(x) 0 2(x-1)(x-2) (x i ~x0)(x i ~x2) 6 (x—x0)(x—x,) 1 l2(x) 0 1(x-1)(x 1) (X2 -X°)(X2 - X i) 3 则二次拉格朗日插值多项式为 2 L 2(X)= ' y k 1 k ( x) kz0 = -3l°(x) 4l2(x) 1 4 =(x_1)(x—2) 4 (x-1)(x 1) 2 3 5 2 3 7 x x - 6 2 3 6?设Xj, j =0,1,||(,n 为互异节点,求证: n (1 )7 x:l j(x) =x k(k =0,1川,n); j=0 n (2 )7 (X j -x)k l j(x)三0 (k =0,1川,n); j £ 证明 (1)令f(x)=x k

n 若插值节点为X j, j =0,1,|l(, n,则函数f (x)的n次插值多项式为L n(x)八x k l j(x)。 j=0 f (n 十)(?) 插值余项为R n(X)二f(X)-L n(X) n1(X) (n +1)!

.f(n1)( ^0 R n(X)=O n 二瓦x k l j(x) =x k(k =0,1川,n); j :o n ⑵、(X j -x)k l j(x) j卫 n n =為(' C?x j(—x)k_L)l j(x) j =0 i =0 n n i k i i =為C k( -x) (、X j l j(x)) i =0 j=0 又70 _i _n 由上题结论可知 n .原式二''C k(-x)k_L x' i=0 =(X -X)k =0 -得证。 7设f (x) c2 la,b 1且f (a) =f (b)二0,求证: max f(x)兰一(b-a) max a $至小一*丘f (x). 解:令x^a,x^b,以此为插值节点,则线性插值多项式为 L i(x^ f(x o) x x f (xj X o —人x -X o X —X o x-b x-a ==f(a) f(b)- a - b x -a 又T f (a) = f (b)二0 L i(x) = 0 1 插值余项为R(x)二f (x) - L,(x) f (x)(x - X Q)(X - xj 1 f(x) = 2 f (x)(x -X g)(X -xj

数值分析实验报告模板

数值分析实验报告模板 篇一:数值分析实验报告(一)(完整) 数值分析实验报告 1 2 3 4 5 篇二:数值分析实验报告 实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。利用二分法求解给定非线性方程的根,在给定的范围内,假设f(x,y)在[a,b]上连续,f(a)xf(b) 直接影响迭代的次数甚至迭代的收敛与发散。即若x0 偏离所求根较远,Newton法可能发散的结论。并且本实验中还利用利用改进的Newton法求解同样的方程,且将结果与Newton法的结果比较分析。 前言:(目的和意义) 掌握二分法与Newton法的基本原理和应用。掌握二分法的原理,验证二分法,在选对有根区间的前提下,必是收

敛,但精度不够。熟悉Matlab语言编程,学习编程要点。体会Newton使用时的优点,和局部收敛性,而在初值选取不当时,会发散。 数学原理: 对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。 对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b) Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式xk?1?xk?f(xk) f'(xk) 产生逼近解x*的迭代数列{xk},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 xk?1?xk?rf(xk) 'f(xk) 其中r为要求的方程的根的重数,这就是改进的Newton 法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x);

数值分析典型例题

数值分析典型例题 例1 对下列各数写出具有5位有效数字的近似值。236.478, 0.00234711, 9.000024, 9.0000343 10?. 解:按照定义,以上各数具有5位有效数字的近似值分别为:236.478, 0.0023471, 9.0000, 9.0000310?。 注意: *x =9.000024的5位有效数字是9.0000而不是9,因为9 是1位有效数字。 例2 指出下列各数具有几位有效数字。2.0004, -0.00200, -9000, 9310?, 23 10-?。 解:按照定义,以上各数的有效数字位数分别为5, 3, 4,1,1 例3 已测得某物体行程* s 的近似值s=800m ,所需时间* s 的近似值为t=35s ,若已知m s s s t t 5.0||,05.0||**≤-≤-,试求平均速度v 的绝对误差和相对误差限。 解:因为t s v /=,所以)()(1)()()(2t e t s s e t t e t v s e s v v e -=??+??≈ 从 而 05.00469.035 800 5.0351|)(||||)(|1|)(|22≤≈+?≤+≤t e t s s e t v e 同样v v e v e r )()(≈)()()()(t e s e t e v t t v s e v s s v r r r -=??+??= 所以00205.035 05 .08005.0|)(||)(||)(|≈+≤+≤t e s e v e r r r 因此绝对误差限和相对误差限分别为0.05和0.00205。 例4试建立积分20,,1,05 =+=n dx x x I n n 的递推关系,并研究它的误差 传递。 解:151 --= n n I n I ……………………………………………..…...(1) 5ln 6ln 0-=I ,计算出0I 后可通过(1)依次递推计算出1I ,…,20I 。 但是计算0I 时有误差0e ,由此计算出的1I ,…,20I 也有误差,由(1)可 知近似值之间的递推关系为 151 --= n n I n I ……………………………………………….…..(2) (1)-(2)可得 01)5(5e e e n n n -=-=-,由0I 计算n I 时误差被放大了n 5倍。所以(1)不稳 定。 (1) 可以改写为 n I I n n 51 511+ -=- ……………………………………… (3) 如果能先求出20I ,则依次可以求出19I ,…,0I ,计算20I 时有误差,这样根据(3)计算19I ,…,0I 就有误差,误差传播为 n n n e e ?? ? ??-=-511 ,误差依次减少。 例5 用二分法求解方程012)(23=+--=x x x x f 在区间[0,1]内的1个实根,要求有3为有效数字。 解:因为0)1()0(>','s') %%%求解f(x)的导数 df=diff(f);

数值分析实验报告

实验一、误差分析 一、实验目的 1.通过上机编程,复习巩固以前所学程序设计语言及上机操作指令; 2.通过上机计算,了解误差、绝对误差、误差界、相对误差界的有关概念; 3.通过上机计算,了解舍入误差所引起的数值不稳定性。 二.实验原理 误差问题是数值分析的基础,又是数值分析中一个困难的课题。在实际计算中,如果选用了不同的算法,由于舍入误差的影响,将会得到截然不同的结果。因此,选取算法时注重分析舍入误差的影响,在实际计算中是十分重要的。同时,由于在数值求解过程中用有限的过程代替无限的过程会产生截断误差,因此算法的好坏会影响到数值结果的精度。 三.实验内容 对20,,2,1,0 =n ,计算定积分 ?+=10 5dx x x y n n . 算法1:利用递推公式 151--=n n y n y , 20,,2,1 =n , 取 ?≈-=+=1 00182322.05ln 6ln 51dx x y . 算法2:利用递推公式 n n y n y 51511-= - 1,,19,20 =n . 注意到 ???=≤+≤=10 10202010201051515611261dx x dx x x dx x , 取 008730.0)12611051(20120≈+≈y .: 四.实验程序及运行结果 程序一: t=log(6)-log(5);

n=1; y(1)=t; for k=2:1:20 y(k)=1/k-5*y(k-1); n=n+1; end y y =0.0884 y =0.0581 y =0.0431 y =0.0346 y =0.0271 y =0.0313 y =-0.0134 y =0.1920 y =-0.8487 y =4.3436 y =-21.6268 y =108.2176 y =-541.0110 y =2.7051e+003 y =-1.3526e+004 y =6.7628e+004 y =-3.3814e+005 y =1.6907e+006 y =-8.4535e+006 y =4.2267e+007 程序2: y=zeros(20,1); n=1; y1=(1/105+1/126)/2;y(20)=y1; for k=20:-1:2 y(k-1)=1/(5*k)-(1/5)*y(k); n=n+1; end 运行结果:y = 0.0884 0.0580 0.0431 0.0343 0.0285 0.0212 0.0188 0.0169

最新数值分析课程第五版课后习题答案(李庆扬等)1

第一章 绪论(12) 1、设0>x ,x 的相对误差为δ,求x ln 的误差。 [解]设0*>x 为x 的近似值,则有相对误差为δε=)(*x r ,绝对误差为**)(x x δε=,从而x ln 的误差为δδεε=='=* ****1)()(ln )(ln x x x x x , 相对误差为* * ** ln ln ) (ln )(ln x x x x r δ εε= = 。 2、设x 的相对误差为2%,求n x 的相对误差。 [解]设*x 为x 的近似值,则有相对误差为%2)(*=x r ε,绝对误差为**%2)(x x =ε,从而n x 的误差为n n x x n x n x x n x x x ** 1 *** %2%2) ()()()(ln * ?=='=-=εε, 相对误差为%2) () (ln )(ln *** n x x x n r == εε。 3、下列各数都是经过四舍五入得到的近似数,即误差不超过最后一位的半个单位,试指出它们是几位有效数字: 1021.1*1=x ,031.0*2=x ,6.385*3=x ,430.56*4=x ,0.17*5 ?=x 。 [解]1021.1*1 =x 有5位有效数字;0031.0* 2=x 有2位有效数字;6.385*3=x 有4位有效数字;430.56* 4 =x 有5位有效数字;0.17*5?=x 有2位有效数字。 4、利用公式(3.3)求下列各近似值的误差限,其中* 4*3*2*1,,,x x x x 均为第3题所给 的数。 (1)* 4*2*1x x x ++; [解]3 334* 4*2*11** *4*2*1*1005.1102 1 10211021)()()()()(----=?=?+?+?=++=? ??? ????=++∑x x x x x f x x x e n k k k εεεε; (2)* 3*2 *1x x x ;

相关主题
文本预览