数值分析上机作业参考答案交14789

数值分析上机作业参考答案交14789
数值分析上机作业参考答案交14789

数值分析上机作业

学院:专业:

学号:姓名

第一题

一、理论依据及算法

1:Household 法

(1) 令A 0=A, a ij (1)

=a ij ,已知A r-1 即A r-1=(a ij (r)

) (2) S r =(

+=n

r i 1

(a ir (r ))2)1/2

(3) αr =S r 2

+|a

(r)

r+1,r |S r

u r =[0,0,a (r)

r+1,r

+Sign(a (r)r+1,r )S r ,a (r)r+2,r ,…,a nr (r)]T

(4) y r =A r-1u r /αr

(5) k r = u r T

y r /2αr (6) q r =y r -k r u r

(7) A r =A r-1-(q r u r T +u r q r T

) r=(1,2,……n-2)

2:超松弛法

其基本思想是在高斯方法已求出x (m)

,x (m-1)

的基础上,组合新的序列,从而

加快收敛速度。其算式是: x i (m)

=(1-ω)x i

(m-1)

+ω(

-=1

1

i j b ij x i (m)

+

+=n

i j 1

x j

(m-1)

+g i )

其中ω是超松弛因子,当ω>1时,可以加快收敛速度。

3:主元消去法:

对矩阵作恰当的调整,选取绝对值尽量大的元素作为主元素。然后把矩阵化为上三角阵,再进行回代,求出方程的解。

二、程序清单:

#include "math.h" main( ) {

int i,j,r,h;

double s, sum,m,m1,n,k,u[9],q[9],y[9],w[9][9], A[9][9]={

{12.38412,2.115237,-1.061074,1.112336,-0.113584,0.718719,1.742382,3.067813,-2.031743}, {2.115237,19.141823,-3.125432,-1.012345,2.189736,1.563849,-0.784165,1.112348,3.123124}, {-1.061074,-3.125432,15.567914,3.123848,2.031454,1.836742,-1.056781,0.336993,-1.010103}, {1.112336,-1.012345,3.123848,27.108437,4.101011,-3.741856,2.101023,-0.71828,-0.037585}, {-0.113584,2.189736,2.031454,4.101011,19.897918,0.431637,-3.111223,2.121314,1.784317}, {0.718719,1.563849,1.836742,-3.741856,0.431637,9.789365,-0.103458,-1.103456,0.238417}, {1.742382,-0.784165,-1.056781,2.101023,-3.111223,-0.103458,14.713846,3.123789,-2.213474} {3.067813,1.112348,0.336993,-0.71828,2.121314,-1.103456,3.123789,30.719334,4.446782}, {-2.031743,3.123124,-1.010103,-0.037585,1.784317,0.238417,-2.213474,4.446782,40.0001}}; double y1; r=0;

while(r<7)

{ /*控制循环次数*/

sum=0;

for(h=r+1;h<9;h++) /*求s和n的值*/

sum=sum+A[h][r]*A[h][r];

s=sqrt(sum);

n=s*(s+fabs(A[r+1][r]));

if (A[r+1][r]>=0)

y1=1;

else

y1=-1;

for(i=0;i

u[i]=0;

for(i=r+2;i<9;i++)

u[i]=A[i][r];

u[r+1]=A[r+1][r]+y1*s;

for(j=0;j<9;j++) /*求出y向量*/

{

m=0;

for(i=0;i<9;i++)

m=m+A[i][j]*u[i];

y[j]=m/n;

}

for (i=0;i<9;i++) /*求k和q的值*/

{

m1=0;

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

m1=m1+u[j]*y[j];

k=m1/(2*n);

q[i]=y[i]-k*u[i];

}

for(i=0;i<9;i++) /*求结果*/

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

{

w[i][j]=q[i]*u[j]+u[i]*q[j];

A[i][j]=A[i][j]-w[i][j];

}

r++;

}

printf("转化后的矩阵为:B[9][9]=:\n"); /*打印转化后的矩阵*/ for(i=0;i<=8;i++)

{

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

printf("%4.4f ",A[i][j]);

printf("\n");

}

}

用超松弛法解方程组

#include"math.h"

main( )

{

int i,j,k,r,m;

double w=1.4,g1[9],B1[9][9],b[9][9],x[9]={0},

g[9]={2.1874369,33.992318,-25.173417,0.84671695,1.784317,

-86.612343,1.1101230,4.719345,-5.6784392},

B[9][9]={{12.384120,-4.893077},{-4.893077,25.398416,6.494097},

{0,6.494097,20.611499,8.243925},{0,0,8.243925,23.422838,-13.880071},

{0,0,0,-13.880071,29.698278,4.534502},{0,0,0,0,4.534502,16.00617,4.881435},

{0,0,0,0,0,4.881435,26.013315,-4.503635},{0,0,0,0,0,0,-4.503635,21.254061,4.504498}, {0,0,0,0,0,0,0,4.504498,14.534122}},

e[9][9]={{1},{0,1},{0,0,1},{0,0,0,1},{0,0,0,0,1},{0,0,0,0,0,1},{0,0,0,0,0,0,1},

{0,0,0,0,0,0,0,1},{0,0,0,0,0,0,0,0,1}};

i=0;

j=0;

while(i<9) /*求出矩阵b和g1的值*/

{

while(j<9)

{

B1[i][j]=B[i][j]/B[i][i];

b[i][j]=e[i][j]-B1[i][j];

j++;

}

g1[i]=g[i]/B[i][i];

i++;

}

k=0;

while(k<9) /*执行本算法*/

{

x[0]=(1-w)*x[0]+w*(b[0][1]*x[1]+g1[0]);

for(r=1;r<8;r++)

x[r]=(1-w)*x[r]+w*(b[r][r-1]*x[r-1]+b[r][r+1]*x[r+1]+g1[r]);

x[8]=(1-w)*x[8]+w*(b[8][7]*x[7]+g1[8]);

k++;

}

for(m=0;m<9;m++) /*输出结果*/

printf("%f\n",x[m]);

}

用消去法解方程组

#include"math.h"

main( )

{

int i,j,k,n;

double x[9],m[9],l[9],h[9],

b[9]={2.1874369,33.992318,-25.173417,0.84671695,1.784317,-86.612343,

1.1101230,4.719345,-5.6784392},

B[9][9]={{12.3841,-4.8931,},{-4.8931,25.3984,6.4941,},{0,6.4941,20.6116,8.2440,},

{0,0,8.2440,23.4231,-13.8802,},{0,0,0,-13.8802,29.6980,4.5344,},{0,0,0,0,4.5344,16.0061, 4.8814,},{0,0,0,0,0,4.8814,26.0133,-4.5036,},{0,0,0,0,0,0,-4.5036,21.2541,4.5045},{0,0,0,0,0, 0,0,4.5045,14.5341}};

i=0;

while(i<8) /*迭代次数*/

{

l[i]=B[i+1][i]/B[i][i];

for(j=0;j<8;j++) /*求矩阵B和b的值*/

{

h[j]=B[i][j]*l[i];

B[i+1][j]=B[i+1][j]-h[j];

}

b[i+1]=b[i+1]-b[i]*l[i];

i++;

}

k=7;

while(k>0) /*求出x的值*/

{

x[8]=b[8]/B[8][8];

m[k]=b[k]-B[k][k+1]*x[k+1];

x[k]=m[k]/B[k][k];

m[0]=b[0]-B[0][1]*x[1];

x[0]=m[0]/B[0][0];

k--;

}

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

printf("%f\n",x[n]);

}

三、运行结果:

第一题(1)结果为:B[9][9]=

12.3841 –4.8931 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000

-4.8931 25.3984 6.4941 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000

0.0000 6.4941 20.6116 8.2440 0.0000 0.0000 0.0000 0.0000 0.0000

0.0000 0.0000 8.2440 23.4231 -13.8802 0.0000 0.0000 0.0000 0.0000

0.0000 0.0000 0.0000 -13.8802 29.6980 4.5344 0.0000 0 .000 0.0000

0.0000 0.0000 0.0000 0.0000 4.5344 16.0061 4.8814 0.0000 0.0000

0.0000 0.0000 0.0000 0.0000 0.0000 4.8814 26.0133 -4.5036 0.0000

0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -4.5036 21.2541 4.5045

0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 4.5045 14.5341

第一题(2) 结果为:

x[0]=1.073409 x[1]=2.272579 x[2]=-2.856599 x[3]=2.292510 x[4]=2.112159 x[5]=-6.422562 x[6]=1.357798 x[7]=0.634258 x[8]=-0.587041 第一题(3) 结果为:

x[0]=1.075802 x[1]=2.275736 x[2]=–2.855472 x[3]=2.293009 x[4]=2.112517 x[5]=–6.423293 x[6]= 1.356278 x[7]=0.625385 x[8]=–0.547122

四、问题讨论

如果所解方程系数矩阵B 是三对角阵,SOR 方法的矩阵形式为: X (m)=(E-ωL)-1((1-ω)E+ωR)x (m-1)+(E-ωL)-1

ωg

若记 L ω=(E-ωL)-1

((1-ω)E+ωR),SOR 收敛的充要条件是S(L ω)<1.且若A 为对称正定阵,则当松弛因子ω满足0<ω<2时,SOR 方法收敛。用SOR 方法解时,收敛速度很快。用消去法解时,可以用特殊的解法,效果较好。

第三题

1. 题目: 用三次样条插值求)563

.4(f 及)563.4(f '的近似值。 2. 算法:

∑∑∑-==-=-+Ω=-Ω=-Ω

=

101

12

1

3310

1

3

)2()()(

)(j j j j j j

j

j x x j x c h

x x c x s

∑+=++-++

-=

Ω10

1!)2

1

()1()(k j k j k j k k j k x C x 其中j c 必须的方程 :

???

??

?

??

?????

?

??

?

?

?

??=??????????????????? ?????????????????????

??---01551.1481551.1318338.1347667.12675460.11750557.106566268.93177664.85916738.6158839.402241411411411411411

41141141141141421098765432101c c c c c c c c c c c c

q[0]=0 , u[0]=0 ,

1,,2,1]),[][][(][][-???=?+-=n i i q i a i b i c i q

n i i q i a i b i u i a i d i u ,,2,1]),1[][][(])[][][(}[???=-?+?-=

x[9]=u[9]

1,,2,1],[]1[][][???--=++?=n n i i u i x i q i x []

3

33333)2()1(46)1(4)2(6

1)(+++++-+--++-+=

Ωx x x x x x s '(x)= ∑∑-=-=--Ω--+Ω10

1

210

12)21

()21(j j j j j x c j x c

2

)3(2

4c c s -=

' 3.程序清单:

#include "math.h" #include "stdio.h" #define M 12

void zhuigan(double coeff[M][M],double b[M],double c[M],int n) {

int i,j,m=n+3; double s1,s2,q[M],u[M+1]; s1=coeff[0][0];s2=b[0]; i=1;

do {if(fabs(s1)<=1e-6){printf("\nThe diagral element is zero!");return;} else {q[i]=-coeff[i-1][i]/s1; u[i]=s2/s1;} i++;

s1=coeff[i-1][i-1]+coeff[i-1][i-2]*q[i-1]; s2=b[i-1]-coeff[i-1][i-2]*u[i-1];} while(i

if(fabs(s1)<=1e-6){printf("\nThe yangtiao element is zero!"); return;} else u[m]=s2/s1; c[m-1]=u[m];

for(i=m-2;i>=0;i--) c[i]=q[i+1]*c[i+1]+u[i+1];} double Bas_3(double x)

{double t,a,y; t=fabs(x); a=x*x; if(t>=2.0) y=0;

else if(t>1.0&&t<2.0) y=-a*t/6+a-2*t+4.0/3; else y=a*t/2-a+2.0/3; return y;}

double Bas_2(double x) {double y,t; t=fabs(x); if(t>=3.0/2) y=0;

else if(t>1.0/2&&t<3.0/2) y=t*t/2-3*t/2+9.0/8; else y=-t*t+3.0/4; return y;}

double DBas_3(double x)

{return (Bas_2(x+1.0/2)-Bas_2(x-1.0/2));} main()

{int i,j,n,m; double h,t,x,dx,s,ds,x0, coeff[M][M],b[M],c[M],

a[10]={0,0.69314718,1.0986123,

1.3862944,1.6094378,1.7917595,1.9459101,

2.079445,2.1972246,2.3025851},da[2]={ 1,0.1};

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

printf("\n输入初始等分区间个数:n="); scanf("%d",&n); /*n+3为插值条件数*/ printf("\n输入步长:h="); scanf("%lf",&h);

printf("\n输入函数自变量起始值:x0=");scanf("%lf",&x0);

coeff[0][0]=2;coeff[0][1]=4; coeff[n+2][n+2]=2;coeff[n+2][n+1]=4;

for(i=1;i

b[0]=da[0]*2*h; b[n+2]=da[1]*2*h;

for(i=1;i

b[0]=b[1]-b[0];b[n+2]=b[n+1]+b[n+2];

zhuigan(coeff,b,c,n);

printf("\n输入f(x)插值点:x="); scanf("%lf",&x);

for(j=0,s=0;j

printf("\n输入f'(x)插值点:dx="); scanf("%lf",&dx);

for(j=0,ds=0;j

ds/=h;

printf("\n结果为:f(%.4f)=%.8f\nf'(%.4f)=%.8f\n",x,s,dx,ds);}

运行结果:

输入初始等分区间个数:n=9

输入步长:h=1

输入函数自变量起始值:x0=1

输入f(x)插值点:x=4.563

输入f'(x)插值点:dx=4.563

结果为: f(4.5630)=1.51793242 f'(4.5630)=0.21928608

5.问题讨论

样条插值效果比Lagrange插值好,没有Runge现象.

第四题

一、理论依据及算法

设函数在有限区间[a,b]上二阶导数存在,且满足条件

ⅰ f(a)f(b)<0

ⅱ f”(x)在区间[a,b]上不变号.

ⅲ f’(x)≠0

ⅳ |f(c)|/b-a≤|f’(c)|其中c是a,b中使min[|f’(a),f’(b)]达到的一个,则对任意时近似值x0€[a,b],Newton迭代过程为

x k+1=φ(x k)=x-f(x k)/f’(x k),k=1,2,3…

)9.1()9.1(0)8(4233642)(0

)16(71127)(0

)9.1(,0)1.0(,1428)(3

2

2

5

333647>?''<-=-=''<-=-='<>+-=f f x x x x x f x x x x x f f f x x x f

故以1.9为起点

??

???

='-

=+9.1)()(01x x f x f x x k k k k

二、程序清单

#include

double f(double x) /*定义函数f(x)*/ {

return (x*x*x*x*(x*x*x-28)+14); }

double f1(double x) /*定义一阶导函数*/ {

return (x*x*x*(7*x*x*x-28*4)); }

double f2(double x) /*定义二阶导函数*/ {

return (x*x*(42*x*x*x-28*4*3)); }

main() {

double x0,x1;

if (f(1.9)*f2(1.9)>0) /*判断条件*/ x0=1.9;

else x0=0.1; do {

x1=x0;

x0=x0-f(x0)/f1(x0); }

while (fabs(x1-x0)>=1.0e-5); /*设定停机条件*/ printf("x=%f",x0); }

三、 运行结果

x=0.845497

第五题

一 程序要求 用Romberg 算法求

?=+3

1

24.1)00001.0(,sin )75(3

εdx x x x x

二 程序算法

引入记号T m (k)称为Romberge 序列,当|T i (0)-T i+1(0)

|< 0.00001就停止计算:

T 1(0)

=(b-a)(f(a)-f(b))/2

T 1(l)

=1/2[T 1

(l-1)

+b-a/2

l-1

=2

1

i f(a+(2i-1)b-a/2)]

T m+1(k-1)

=4m

T m (k)-T m (k-1)

/4m

-1

三 程序

#define N 12

#include "math.h" #include "stdio.h"

#define Epxilun 0.00001 /*允许误差*/ float f(float x) {

float sum=0.0;

sum=pow(3,x)*pow(x,1.4)*sin(x*x)*(5*x+7); return(sum); }

main() {

float T[N][N];

float a=1,b=3,sum=0.0; int j,i;

T[0][0]=(b-a)*(f(a)+f(b))/2; j=1; do {

sum=0.0;

for(i=1;i<=pow(2,j-1);i++)

sum=sum+f(a+(2*i-1)*(b-a)/pow(2,j)); sum=sum*(b-a)/pow(2,j-1); T[j][0]=(T[j-1][0]+sum)/2; for(i=1;i<=j;i++)

T[j-i][i]=(pow(4,i)*T[j-i+1][i-1]-T[j-i][i-1])/(pow(4,i)-1); j++; }

while(fabs(T[0][j-1]-T[0][j-2])>=Epxilun);

printf("\n THE romberg result is: T0=%f T1=%f ",T[0][j-1],T[0][j-2]); getch(); }

四 运行结果:

T0=440.536011, T1=440.536011

∫313xx1.4(5x+7)sinx2dx=440.536011

五 问题讨论

Romberge 算法的优点是:

1. 把积分化为代数运算,而实际上只需求T1(i),以后用递推可得.

2. 算法简单且收敛速度快,一般4或5次即能达到要求.

3. 节省存储量.

Romberge 算法的缺点是:

1. 对函数的光滑性要求较高.

第六题

1. 用定步长四Runge-Kutta 求解常微分方程组。

1/1=dt dy

32/y dt dy =

32310010001000/y y dt dy --= ()001=y ()002=y

()003=y

()()()()()3,2,1,1.0,085.0,045.0,025.0,0005.0==i y y y y h i i i 打印

2. 算法:

][j y i 表示3,2,1),(=i hj y i

????

?

??????

++=++=++==++++=+])[][,(][])

[21][,21(][])

[21][,21(][][])[][2][2][(6

1][]1[34231214321i hk n y h t f i k i hk n y h t f i k i hk n y h t f i k f i k i k i k i k i k n y n y i in i in i in in i i

3.程序清单:

#include "stdio.h"

void F(double Y[3],double K[3])

{

K[0]=1;

K[1]=Y[2];

K[2]=1000-1000*Y[1]-100*Y[2];

}

main()

{

double Y[4][3],h=0.0005,m,K1[3],K2[3],K3[3],K4[3],z[3];

double y[4]={0.025,0.045,0.085,0.1};

int i,j,k;

for(i=0;i<3;i++)

Y[0][i]=0;

m=0;

k=0;

while(k<5)

{

for(;m

{

for(i=0;i<3;i++)

z[i]=Y[k][i];

F(z,K1);

for(i=0;i<3;i++)

z[i]=Y[k][i]+0.5*h*K1[i];

F(z,K2);

for(i=0;i<3;i++)

z[i]=Y[k][i]+0.5*h*K2[i];

F(z,K3);

for(i=0;i<3;i++)

z[i]=Y[k][i]+h*K3[i];

F(z,K4);

for(i=0;i<3;i++)

Y[k][i]+=h/6*(K1[i]+2*K2[i]+2*K3[i]+K4[i]);

}

if(k!=4)

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

Y[k+1][j]=Y[k][j];

k++;

}

printf("结果为:\n");

for(i=0;i<4;i++)

{

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

printf("y%d(%4.3f)=%f\n",j+1,y[i],Y[i][j]);

printf("\n");

}

}

计算结果如下:

y1(0.025)=0.025000

y2(0.025)=0.151599

y2(0.025)=8.335426

y1(0.045)=0.045000

y2(0.045)=0.312860

y3(0.045)=7.536280

y1(0.085)=0.085000

y2(0.085)=0.560581

y3(0.085)=4.946353

y1(0.100)= 0.10000

y2(0.100)=0.628881

y3(0.100)=4.180993

5.问题讨论

Runge_Kutta方的优点:

1.精度高,不必用别的方法求开始几点的函数值.

2.可根据f’(t,y)变化的情况与需要的精度自动修改步长.

3.程序简单,存储量少.

4.方法稳定.

Runge_Kutta方的缺点:

每步要计算函数值f(t,y)四次,在f(t,y),较复杂时,工作量大, 且每一步缺乏可靠的检查.

数值分析上机作业

昆明理工大学工科研究生《数值分析》上机实验 学院:材料科学与工程学院 专业:材料物理与化学 学号:2011230024 姓名: 郑录 任课教师:胡杰

P277-E1 1.已知矩阵A= 10787 7565 86109 75910 ?? ?? ?? ?? ?? ??,B= 23456 44567 03678 00289 00010 ?? ?? ?? ?? ?? ?? ?? ?? ,错误!未找到引用源。 = 11/21/31/41/51/6 1/21/31/41/51/61/7 1/31/41/51/61/71/8 1/41/51/61/71/81/9 1/51/61/71/81/91/10 1/61/71/81/91/101/11?????????????????? (1)用MA TLAB函数“eig”求矩阵全部特征值。 (2)用基本QR算法求全部特征值(可用MA TLAB函数“qr”实现矩阵的QR分解)。解:MA TLAB程序如下: 求矩阵A的特征值: clear; A=[10 7 8 7;7 5 6 5;8 6 10 9;7 5 9 10]; E=eig(A) 输出结果: 求矩阵B的特征值: clear; B=[2 3 4 5 6;4 4 5 6 7;0 3 6 7 8;0 0 2 8 9;0 0 0 1 0]; E=eig(B) 输出结果:

求矩阵错误!未找到引用源。的特征值: clear; 错误!未找到引用源。=[1 1/2 1/3 1/4 1/5 1/6; 1/2 1/3 1/4 1/5 1/6 1/7; 1/3 1/4 1/5 1/6 1/7 1/8; 1/4 1/5 1/6 1/7 1/8 1/9;1/5 1/6 1/7 1/8 1/9 1/10; 1/6 1/7 1/8 1/9 1/10 1/11]; E=eig(错误!未找到引用源。) 输出结果: (2)A= 10 7877565861097 5 9 10 第一步:A0=hess(A);[Q0,R0]=qr(A0);A1=R0*Q0 返回得到: 第二部:[Q1,R1]=qr(A1);A2=R1*Q1

数值分析上机作业

数值分析上机实验报告 选题:曲线拟合的最小二乘法 指导老师: 专业: 学号: 姓名:

课题八曲线拟合的最小二乘法 一、问题提出 从随机的数据中找出其规律性,给出其近似表达式的问题,在生产实践和科学实验中大量存在,通常利用数据的最小二乘法求得拟合曲线。 在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量y 与时间t 的拟合曲线。 二、要求 1、用最小二乘法进行曲线拟合; 2、近似解析表达式为()33221t a t a t a t ++=?; 3、打印出拟合函数()t ?,并打印出()j t ?与()j t y 的误差,12,,2,1 =j ; 4、另外选取一个近似表达式,尝试拟合效果的比较; 5、*绘制出曲线拟合图*。 三、目的和意义 1、掌握曲线拟合的最小二乘法; 2、最小二乘法亦可用于解超定线代数方程组; 3、探索拟合函数的选择与拟合精度间的关系。 四、计算公式 对于给定的测量数据(x i ,f i )(i=1,2,…,n ),设函数分布为 ∑==m j j j x a x y 0)()(? 特别的,取)(x j ?为多项式 j j x x =)(? (j=0, 1,…,m )

则根据最小二乘法原理,可以构造泛函 ∑∑==-=n i m j i j j i m x a f a a a H 1 10))((),,,(? 令 0=??k a H (k=0, 1,…,m ) 则可以得到法方程 ???? ??????? ?=????????????????????????),(),(),(),(),(),(),(),(),(),(),(),(1010101111000100m m m m m m m m f f f a a a ????????????????????? 求该解方程组,则可以得到解m a a a ,,,10 ,因此可得到数据的最小二乘解 ∑=≈m j j j x a x f 0)()(? 曲线拟合:实际工作中,变量间未必都有线性关系,如服药后血药浓度与时间的关系;疾病疗效与疗程长短的关系;毒物剂量与致死率的关系等常呈曲线关系。曲线拟合是指选择适当的曲线类型来拟合观测数据,并用拟合的曲线方程分析两变量间的关系。 五、结构程序设计 在程序结构方面主要是按照顺序结构进行设计,在进行曲线的拟合时,为了进行比较,在程序设计中,直接调用了最小二乘法的拟合函数polyfit ,并且依次调用了plot 、figure 、hold on 函数进行图象的绘制,最后调用了一个绝对值函数abs 用于计算拟合函数与原有数据的误差,进行拟合效果的比较。

数值分析第四章数值积分与数值微分习题答案

第四章 数值积分与数值微分 1.确定下列求积公式中的特定参数,使其代数精度尽量高,并指明所构造出的求积公式所具有的代数精度: 101210121 12120 (1)()()(0)(); (2)()()(0)(); (3)()[(1)2()3()]/3; (4)()[(0)()]/2[(0)()]; h h h h h f x dx A f h A f A f h f x dx A f h A f A f h f x dx f f x f x f x dx h f f h ah f f h -----≈-++≈-++≈-++''≈++-?? ?? 解: 求解求积公式的代数精度时,应根据代数精度的定义,即求积公式对于次数不超过m 的多项式均能准确地成立,但对于m+1次多项式就不准确成立,进行验证性求解。 (1)若101(1) ()()(0)()h h f x dx A f h A f A f h --≈-++? 令()1f x =,则 1012h A A A -=++ 令()f x x =,则 110A h Ah -=-+ 令2 ()f x x =,则 3 221123 h h A h A -=+ 从而解得 011431313A h A h A h -?=?? ? =?? ?=?? 令3 ()f x x =,则 3()0h h h h f x dx x dx --==? ? 101()(0)()0A f h A f A f h --++=

令4()f x x =,则 455 1012()5 2 ()(0)()3 h h h h f x dx x dx h A f h A f A f h h ---== -++=? ? 故此时, 101()()(0)()h h f x dx A f h A f A f h --≠-++? 故 101()()(0)()h h f x dx A f h A f A f h --≈-++? 具有3次代数精度。 (2)若 21012()()(0)()h h f x dx A f h A f A f h --≈-++? 令()1f x =,则 1014h A A A -=++ 令()f x x =,则 110A h Ah -=-+ 令2 ()f x x =,则 3 2211163 h h A h A -=+ 从而解得 1143 8383A h A h A h -?=-?? ? =?? ?=?? 令3 ()f x x =,则 22322()0h h h h f x dx x dx --==? ? 101()(0)()0A f h A f A f h --++=

东南大学数值分析上机作业汇总

东南大学数值分析上机作业 汇总 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

数值分析上机报告 院系: 学号: 姓名:

目录 作业1、舍入误差与有效数 (1) 1、函数文件cxdd.m (1) 2、函数文件cddx.m (1) 3、两种方法有效位数对比 (1) 4、心得 (2) 作业2、Newton迭代法 (2) 1、通用程序函数文件 (3) 2、局部收敛性 (4) (1)最大δ值文件 (4) (2)验证局部收敛性 (4) 3、心得 (6) 作业3、列主元素Gauss消去法 (7) 1、列主元Gauss消去法的通用程序 (7) 2、解题中线性方程组 (7) 3、心得 (9) 作业4、三次样条插值函数 (10) 1、第一型三次样条插值函数通用程序: (10) 2、数据输入及计算结果 (12)

作业1、舍入误差与有效数 设∑ =-=N j N j S 2 2 11 ,其精确值为?? ? ??---1112321N N . (1)编制按从小到大的顺序1 1 131121222-? ??+-+-=N S N ,计算N S 的通用程序; (2)编制按从大到小的顺序()1 21 11111222-???+--+-=N N S N ,计算N S 的通用程序; (3)按两种顺序分别计算642101010,,S S S ,并指出有效位数; (4)通过本上机你明白了什么? 程序: 1、函数文件cxdd.m function S=cxdd(N) S=0; i=2.0; while (i<=N) S=S+1.0/(i*i-1); i=i+1; end script 运行结果(省略>>): S=cxdd(80) S= 0.737577 2、函数文件cddx.m function S=cddx (N) S=0; for i=N:-1:2 S=S+1/(i*i-1); end script 运行结果(省略>>): S=cddx(80) S= 0.737577 3、两种方法有效位数对比

数值分析作业答案

数值分析作业答案 插值法 1、当x=1,-1,2时,f(x)=0,-3,4,求f(x)的二次插值多项式。 (1)用单项式基底。 (2)用Lagrange插值基底。 (3)用Newton基底。 证明三种方法得到的多项式是相同的。 解:(1)用单项式基底 设多项式为: , 所以: 所以f(x)的二次插值多项式为: (2)用Lagrange插值基底 Lagrange插值多项式为: 所以f(x)的二次插值多项式为: (3) 用Newton基底: 均差表如下: xk f(xk) 一阶均差二阶均差 1 0 -1 -3 3/2 2 4 7/ 3 5/6 Newton插值多项式为: 所以f(x)的二次插值多项式为: 由以上计算可知,三种方法得到的多项式是相同的。 6、在上给出的等距节点函数表,若用二次插值求ex的近似值,要使截断误差不超过10-6,问使用函数表的步长h应取多少? 解:以xi-1,xi,xi+1为插值节点多项式的截断误差,则有 式中 令得 插值点个数

是奇数,故实际可采用的函数值表步长 8、,求及。 解:由均差的性质可知,均差与导数有如下关系: 所以有: 15、证明两点三次Hermite插值余项是 并由此求出分段三次Hermite插值的误差限。 证明:利用[xk,xk+1]上两点三次Hermite插值条件 知有二重零点xk和k+1。设 确定函数k(x): 当或xk+1时k(x)取任何有限值均可; 当时,,构造关于变量t的函数 显然有 在[xk,x][x,xk+1]上对g(x)使用Rolle定理,存在及使得 在,,上对使用Rolle定理,存在,和使得 再依次对和使用Rolle定理,知至少存在使得 而,将代入,得到 推导过程表明依赖于及x 综合以上过程有: 确定误差限: 记为f(x)在[a,b]上基于等距节点的分段三次Hermite插值函数。在区间[xk,xk+1]上有 而最值 进而得误差估计: 16、求一个次数不高于4次的多项式,使它满足,,。

Matlab作业3(数值分析)答案

Matlab作业3(数值分析) 机电工程学院(院、系)专业班组 学号姓名实验日期教师评定 1.计算多项式乘法(x2+2x+2)(x2+5x+4)。 答: 2. (1)将(x-6)(x-3)(x-8)展开为系数多项式的形式。(2)求解在x=8时多项 式(x-1)(x-2) (x-3)(x-4)的值。 答:(1) (2)

3. y=sin(x),x从0到2π,?x=0.02π,求y的最大值、最小值、均值和标准差。 4.设x=[0.00.30.8 1.1 1.6 2.3]',y=[0.500.82 1.14 1.25 1.35 1.40]',试求二次多项式拟合系数,并据此计算x1=[0.9 1.2]时对应的y1。解:x=[0.0 0.3 0.8 1.1 1.6 2.3]'; %输入变量数据x y=[0.50 0.82 1.14 1.25 1.35 1.40]'; %输入变量数据y p=polyfit(x,y,2) %对x,y用二次多项式拟合,得到系数p x1=[0.9 1.2]; %输入点x1 y1=polyval(p,x1) %估计x1处对应的y1 p = -0.2387 0.9191 0.5318 y1 = a) 1.2909

5.实验数据处理:已知某压力传感器的测试数据如下表 p为压力值,u为电压值,试用多项式 d cp bp ap p u+ + + =2 3 ) ( 来拟 合其特性函数,求出a,b,c,d,并把拟合曲线和各个测试数据点画在同一幅图上。解: >> p=[0.0,1.1,2.1,2.8,4.2,5.0,6.1,6.9,8.1,9.0,9.9]; u=[10,11,13,14,17,18,22,24,29,34,39]; x=polyfit(p,u,3) %得多项式系数 t=linspace(0,10,100); y=polyval(x,t); %求多项式得值 plot(p,u,'*',t,y,'r') %画拟和曲线 x = 0.0195 -0.0412 1.4469 9.8267

数值分析第一次作业及参考答案

数值计算方法第一次作业及参考答案 1. 已测得函数()y f x =的三对数据:(0,1),(-1,5),(2,-1), (1)用Lagrange 插值求二次插值多项式。(2)构造差商表。(3)用Newton 插值求二次插值多项式。 解:(1)Lagrange 插值基函数为 0(1)(2)1 ()(1)(2)(01)(02)2 x x l x x x +-= =-+-+- 同理 1211 ()(2),()(1)36 l x x x l x x x = -=+ 故 2 20 2151 ()()(1)(2)(2)(1) 23631 i i i p x y l x x x x x x x x x =-==-+-+-++=-+∑ (2)令0120,1,2x x x ==-=,则一阶差商、二阶差商为 011215 5(1) [,]4, [,]20(1) 12 f x x f x x ---= =-= =----- 0124(2) [,,]102 f x x x ---= =- 实际演算中可列一张差商表: (3)用对角线上的数据写出插值多项式 2 2()1(4)(0)1*(0)(1)31P x x x x x x =+--+-+=-+ 2. 在44x -≤≤上给出()x f x e =的等距节点函数表,若用二次插值求x e 的近似值,要使 截断误差不超过6 10-,问使用函数表的步长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) 2000 4 43 4 3 () ()[(()]()[()] 3! (1)(1) (1)(1) 3!3! .(4,4). 6 f R x x x h x x x x h t t t e t h th t h e h e ξ ξ =----+ -+ ≤+??-= ≤∈- 则 4 36 ((1)(1) 100.006. t t t h - -+± << Q在点 得 3.求2 () f x x =在[a,b]上的分段线性插值函数() h I x,并估计误差。 解: 22 22 11 1 111 22 11 11 1 () () k k k k h k k k k k k k k k k k k k k k k k k x x x x x x I x x x x x x x x x x x x x x x x x x x x x ++ + +++ ++ ++ + --- =+= --- ?-? -=+- - [] 2 11 22 11 ()()()[()] 11 ()() 44 h h k k k k k k k k R x f x I x x x x x x x x x x x x x h ++ ++ =-=-+- =--≤-= 4.已知单调连续函数() y f x =的如下数据 用插值法计算x约为多少时() 1. f x=(小数点后至少保留4位) 解:作辅助函数()()1, g x f x =-则问题转化为x为多少时,()0. g x=此时可作新 的关于() i g x的函数表。由() f x单调连续知() g x也单调连续,因此可对() g x的数值进行反插。的牛顿型插值多项式为 1()0.110.097345( 2.23)0.451565( 2.23)( 1.10) 0.255894( 2.23)( 1.10)(0.17) x g y y y y y y y - ==-+++++ -++-

数值分析参考答案(第四章)

第四章 数值积分与数值微分 1.确定下列求积公式中的特定参数,使其代数精度尽量高,并指明所构造出的求积公式所具有的代数精度: 101210121 12120 (1)()()(0)(); (2)()()(0)(); (3)()[(1)2()3()]/3; (4)()[(0)()]/2[(0)()]; h h h h h f x dx A f h A f A f h f x dx A f h A f A f h f x dx f f x f x f x dx h f f h ah f f h -----≈-++≈-++≈-++''≈++-?? ?? 解: 求解求积公式的代数精度时,应根据代数精度的定义,即求积公式对于次数不超过m 的多项式均能准确地成立,但对于m+1次多项式就不准确成立,进行验证性求解。 (1)若101(1) ()()(0)()h h f x dx A f h A f A f h --≈-++? 令()1f x =,则 1012h A A A -=++ 令()f x x =,则 110A h Ah -=-+ 令2 ()f x x =,则 3 221123 h h A h A -=+ 从而解得 01 1431313A h A h A h -?=?? ?=?? ?=?? 令3 ()f x x =,则 3()0h h h h f x dx x dx --==? ? 101()(0)()0A f h A f A f h --++= 故 101()()(0)()h h f x dx A f h A f A f h --=-++? 成立。 令4 ()f x x =,则

数值分析作业答案part

6.4.设??? ? ? ??=5010010a b b a A ,0det ≠A ,用a ,b 表示解线性方程组f Ax =的雅可比迭代与 高斯—塞德尔迭代收敛的充分必要条件。 解 雅可比迭代法的迭代矩阵 ? ??? ??? ? ??----=???? ? ??----????? ??=-050100100100000001010101 a b b a a b b a B J , ?? ? ?? -=-1003||2ab B I J λλλ,10||3)(ab B J = ρ。 雅可比迭代法收敛的充分必要条件是3 100 ||

数值分析作业答案(第4章) part2

4.6.若用复化梯形公式计算积分1 x I e dx =? , 问区间[0,1]应人多少等分才能使截断误差不超过 51 102 -??若改用复化辛普森公式,要达到同样精度区间[0,1]应分多少等分? 解:采用复化梯形公式时,余项为 2 ()(),(,)12 n b a R f h f a b ηη-''=- ∈ 又 1 x I e dx =? 故 (),(),0, 1.x x f x e f x e a b ''==== 221()()1212 n e R f h f h η''∴= ≤ 若51 ()102 n R f -≤ ?,则 256 10h e -≤? 当对区间[0,1]进行等分时, 1,h n = 故有 212.85n ≥ = 因此,将区间213等分时可以满足误差要求。 采用复化辛普森公式时,余项为 4(4) ()()(),(,)1802 n b a h R f f a b ηη-=- ∈ 又 (),x f x e = (4)4(4)4 (), 1()|()|28802880 x n f x e e R f h f h η∴=∴=-≤ 若51 ()102 n R f -≤ ?,则 451440 10h e -≤ ?

当对区间[0,1]进行等分时 1n h = 故有 1 54 1440(10) 3.71n e ≥?= 因此,将区间8等分时可以满足误差要求。 4.10.试构造高斯型求积公式 )()()(1 11001 x f A x f A dx x f x +≈? 。 解 令公式对32,,,1)(x x x x f =准确成立,得 ??? ?? ? ??? ??=+=+=+=+,72,52, 32,213103012 1020110010A x A x A x A x A x A x A A ) 4()3()2() 1( 由于 1011001100)()(A x x A A x A x A x -++=+, 利用方程(1),方程(2)可化为 3 2 )(21010= -+A x x x (5) 同样,用方程(2)化方程(3),方程(3)化方程(4),分别得 52 )(3211010=-+A x x x x (6) 7 2 )(52121010=-+A x x x x (7) 用方程(5)消去方程(6)中的101)(A x x -,即将101)(A x x -用023 2 x -代替,得 5 2 )32(32100=-+x x x (8) 用方程(6)消去方程(7)中的1101)(A x x x -,即将1101)(A x x x -用03 2 52x -代替,得

东南大学-数值分析上机题作业-MATLAB版

2015.1.9 上机作业题报告 JONMMX 2000

1.Chapter 1 1.1题目 设S N =∑1j 2?1 N j=2 ,其精确值为 )1 1 123(21+--N N 。 (1)编制按从大到小的顺序1 1 131121222-+ ??+-+-=N S N ,计算S N 的通用程序。 (2)编制按从小到大的顺序1 21 1)1(111222-+ ??+--+-= N N S N ,计算S N 的通用程序。 (3)按两种顺序分别计算64210,10,10S S S ,并指出有效位数。(编制程序时用单精度) (4)通过本次上机题,你明白了什么? 1.2程序 1.3运行结果

1.4结果分析 按从大到小的顺序,有效位数分别为:6,4,3。 按从小到大的顺序,有效位数分别为:5,6,6。 可以看出,不同的算法造成的误差限是不同的,好的算法可以让结果更加精确。当采用从大到小的顺序累加的算法时,误差限随着N 的增大而增大,可见在累加的过程中,误差在放大,造成结果的误差较大。因此,采取从小到大的顺序累加得到的结果更加精确。 2.Chapter 2 2.1题目 (1)给定初值0x 及容许误差ε,编制牛顿法解方程f(x)=0的通用程序。 (2)给定方程03 )(3 =-=x x x f ,易知其有三个根3,0,3321= *=*-=*x x x ○1由牛顿方法的局部收敛性可知存在,0>δ当),(0δδ+-∈x 时,Newton 迭代序列收敛于根x2*。试确定尽可能大的δ。 ○2试取若干初始值,观察当),1(),1,(),,(),,1(),1,(0+∞+-----∞∈δδδδx 时Newton 序列的收敛性以及收敛于哪一个根。 (3)通过本上机题,你明白了什么? 2.2程序

数值分析第四版习题及答案

第四版 数值分析习题 第一章 绪 论 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. 利用公式求下列各近似值的误差限: ********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 -=…) 计算到100Y .(五位有效数字),试问计算100Y 将有多大误差? 7. 求方程2 5610x x -+=的两个根,使它至少具有四位有效数字. 8. 当N 充分大时,怎样求 2 11N dx x +∞ +? ? 9. 正方形的边长大约为100㎝,应怎样测量才能使其面积误差不超过1㎝2 ? 10. 设 212S gt = 假定g 是准确的,而对t 的测量有±秒的误差,证明当t 增加时S 的绝对误 差增加,而相对误差却减小. 11. 序列 {}n y 满足递推关系1101n n y y -=-(n=1,2,…),若0 1.41y =≈(三位有效数字), 计算到 10y 时误差有多大?这个计算过程稳定吗? 12. 计算61)f =, 1.4≈,利用下列等式计算,哪一个得到的结果最好? 3 -- 13. ()ln(f x x =,求f (30)的值.若开平方用六位函数表,问求对数时误差有多大?若改用另一等价公式 ln(ln(x x =- 计算,求对数时误差有多大?

高等数值分析上机作业

高等数值分析上机作业

目录 上机作业1 (1) 上机作业2 (5) 上机作业3 (10) 上机作业4 (13) 上机作业5 (16) 上机作业6 (19) 上机作业7 (20) 上机作业8 (29)

第8章 函数逼近与曲线拟合 上机作业1: 最佳平方逼近 8-11.设()[]1,1,arcsin -∈=x x x f , (1) 在{}32,,,1x x x span =φ中求()x f 的最佳平方逼近多项式; (2) 在{})(),(),(),(3210x T x T x T x T span =φ中求()x f 的最佳平方逼近多项式。 解:(1) 基于幂函数的最佳平方逼近 简单原理: 对于],[)(b a C x f ∈及一个线性无关函数组的集合 {}],,[)(,),(),(10b a C x x x span n ?=???φ 若存在,φ∈*S 使得 ()dx x S x f x x S x f x S x f b a x S x S ?-=-=-∈∈* 2)(2 2)(2 2 )]()([min )()(min )()(ρφ φ ,则称()x S *是 ()x f 在子集[]b a ,?φ中的最佳平方逼近函数。 取(),,,1,0,n j x x j j ==?就有{}n x x x span ,,,,12 =φ。对于任意的()φ∈x S ,有()∑==n j j j x a x S 0,()x S 为次数n ≤的多项式。 令)(x f 在},,,1{32x x x span =φ中的最佳平方逼近函数为 φ∈+++=3 *2**1*0*3 2)(x a x a x a a x S 通过求解法方程 ???? ? ? ? ??=??????? ????????? ??),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),() ,(321032103323130 3322212023121110130201000????????????????????????????????????f f f f a a a a 其中.arcsin )(,)(,)(,)(,1)(332210x x f x x x x x x x =====????

(完整版)数值计算方法上机实习题答案

1. 设?+=1 05dx x x I n n , (1) 由递推公式n I I n n 1 51+-=-,从0I 的几个近似值出发,计算20I ; 解:易得:0I =ln6-ln5=0.1823, 程序为: I=0.182; for n=1:20 I=(-5)*I+1/n; end I 输出结果为:20I = -3.0666e+010 (2) 粗糙估计20I ,用n I I n n 51 5111+- =--,计算0I ; 因为 0095.05 6 0079.01020 201 020 ≈<<≈??dx x I dx x 所以取0087.0)0095.00079.0(2 1 20=+= I 程序为:I=0.0087; for n=1:20 I=(-1/5)*I+1/(5*n); end I 0I = 0.0083 (3) 分析结果的可靠性及产生此现象的原因(重点分析原因)。 首先分析两种递推式的误差;设第一递推式中开始时的误差为000I I E '-=,递推过程的舍入误差不计。并记n n n I I E '-=,则有01)5(5E E E n n n -==-=-Λ。因为=20E 20020)5(I E >>-,所此递推式不可靠。而在第二种递推式中n n E E E )5 1(5110-==-=Λ,误差在缩小, 所以此递推式是可靠的。出现以上运行结果的主要原因是在构造递推式过程中,考虑误差是否得到控制, 即算法是否数值稳定。 2. 求方程0210=-+x e x 的近似根,要求4 1105-+?<-k k x x ,并比较计算量。 (1) 在[0,1]上用二分法; 程序:a=0;b=1.0; while abs(b-a)>5*1e-4 c=(b+a)/2;

数值分析(第五版)计算实习题第四章作业

第四章: 1、(1):复合梯形 建立m文件: function t=natrapz(fname,a,b,n) h=(b-a)/n; fa=feval(fname,a);fb=feval(fname,b); f=feval(fname,a+h:h:b-h+0.001*h); t=h*(0.5*(fa+fb)+sum(f)); 输入: >> syms x >> f=inline('sqrt(x).*log(x);'); >> natrapz(f,eps,1,10) 输出: ans = -0.417062831779470 输入: >> syms x >> f=inline('sqrt(x).*log(x);'); >> natrapz(f,eps,1,100) 输出: ans = -0.443117908008157 输入: >> syms x >> f=inline('sqrt(x).*log(x);'); >> natrapz(f,eps,1,1000) 输出: ans = -0.444387538997162 复合辛普森 建立m文件: function t=comsimpson(fname,a,b,n)

h=(b-a)/n; fa=feval(fname,a);fb=feval(fname,b); f1=feval(fname,a+h:h:b-h+0.001*h); f2=feval(fname,a+h/2:h:b-h+0.001*h); t=h/6*(fa+fb+2*sum(f1)+4*sum(f2)); 输入: >> syms x >> f=inline('sqrt(x).*log(x);'); >> format long; >>comsimpson(f,eps,1,10) 输出: ans = -0.435297890074689 输入: >>syms x >>f=inline('sqrt(x).*log(x);'); >>comsimpson(f,eps,1,100) 输出: ans = -0.444161178415673 输入: >>syms x >>f=inline('sqrt(x).*log(x);'); >>comsimpson(f,eps,1,1000) 输出: ans = -0.444434117614180 (2)龙贝格 建立m文件: function [RT,R,wugu,h]=Romberg(fun,a,b,wucha,m) %RT是龙贝格积分表 %R是数值积分值 %wugu是误差估计 %h是最小步长 %fun是被积函数 %a b是积分下、上限

数值分析上机作业1-1

数值计算方法上机题目1 1、实验1. 病态问题 实验目的: 算法有“优”与“劣”之分,问题也有“好”和“坏”之别。所谓坏问题就是问题本身的解对数据变化的比较敏感,反之属于好问题。希望读者通过本实验对此有一个初步的体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出: 考虑一个高次的代数多项式 ∏=-= ---=20 1)()20)...(2)(1()(k k x x x x x p (E1-1) 显然该多项式的全部根为l ,2,…,20,共计20个,且每个根都是单重的(也称为简 单的)。现考虑该多项式方程的一个扰动 0)(19 =+x x p ε (E1-2) 其中ε是一个非常小的数。这相当于是对(E1-1)中19 x 的系数作一个小的扰动。我们希望比较(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 ,反复进行上述实验,记录结果的变化并分析它们。如果扰动项的系数ε很小,我们自然感觉(E1-1)和(E1-2)的解应当相差很小。计算中你有什么出乎意料的发现?表明有些解关于如此的扰动敏感性如何? (2)将方程(E1-2)中的扰动项改成18 x ε或其他形式,实验中又有怎样的现象出现?

数值分析作业

第二章 1. 题目:运用MATLAB编程实现牛顿迭代 2. 实验操作 1、打开MATLAB程序软件。 2、在MATLAB中编辑如下的M程序。 function [p1,err,k,y]=newton(f,df,p0,delta,max) %f 是要求根的方程(f(x)=0); %df 是f(x)的导数; %p0是所给初值,位于x*附近; %delta是给定允许误差; %max是迭代的最大次数; %p1是newton法求得的方程的近似解; %err是p0的误差估计; %k是迭代次数; p0 for k=1:max p1=p0-feval('f',p0)/feval('df',p0); err=abs(p1-p0); p0=p1; k p1 err y=feval('f',p1) if (err> newton('f','df',1.2,10^(-6),20) 3.实验结果

p0 = 1.2000 k =1 p1=1.1030 err=0.0970 y=0.0329 k= 2 p1=1.0524 err=0.0507 y=0.0084 k =3 p1=1.0264 err=0.0260 y=0.0021 k =4 p1=1.0133 err=0.0131 y=5.2963e-004 k =5 p1=1.0066 err=0.0066 y=1.3270e-004 k =6 p1=1.0033 err=0.0033 y=3.3211e-005 k =7 p1=1.0017 err=0.0017 y=8.3074e-006 k =8 p1=1.0008 err=8.3157e-004 y = 2.0774e-006 k =9 p1=1.0004 err=4.1596e-004 y =5.1943e-007 k=10 p1=1.0002 err=2.0802e-004 y= 1.2987e-007 k=11 p1=1.0001 err=1.0402e-004 y =3.2468e-008 k=12 p1=1.0001 err=5.2014e-005 y=8.1170e-009 k=13 p1=1.0000 err=2.6008e-005 y= 2.0293e-009 k=14 p1=1.0000 err=1.3004e-005 y=5.0732e-010 k=15 p1 =1.0000 err=6.5020e-006 y=1.2683e-010 k=16 p1 =1.0000 err=3.2510e-006 y=3.1708e-011 k=17 p1 =1.0000 err=1.6255e-006 y =7.9272e-012 k=18 p1 =1.0000 err =8.1279e-007 y= 1.9820e-012 ans = 1.0000 结果说明:经过18次迭代得到精确解为1,误差为8.1279e-007。

数值分析作业答案(第5章)

5.1.设A 是对称矩阵且011≠a ,经过一步高斯消去法后,A 约化为 ?? ????21 110 A a a T 证明2A 是对称矩阵。 证明 由消元公式及A 的对称性,有 ,,,3,2,,)2(111 11111 )2(n j i a a a a a a a a a a ji i j ji j i ij ij ==-=- = 故2A 对称。 5.2.设n ij a A )(=是对称正定矩阵,经过高斯消去法一步后,A 约化为 ?? ????21 110 A a a T 其中1)2(2)(-=n ij a A 。证明: (1).A 的对角元素;,,2,1,0n i a ii => (2).2A 是对称正定矩阵。 证明 (1).因为A 对称正定,所以 n i e Ae a i i ii ,,2,1,0),( =>=, 其中T i e )0,,0,1,0,,0( =为第i 个单位向量。 (2).由A 的对称性及消元公式,有 ,,,3,2,,)2(111 11111 )2(n j i a a a a a a a a a a ji i j ji j i ij ij ==-=- = 故2A 也对称。 又由A L A a a T 121110=????? ?,其中

??? ?????- =? ????? ? ?????????--=-111 1 11111 21101 1011n n I a a a a a a L , 可见1L 非奇异,因而对任意0≠x ,由A 的正定性,有 ,0),(),(,011111>=≠x AL x L x AL L x x L T T T T 故T AL L 11正定。 由,000110211 111121111 1?? ? ?? ?=????????-??????=-A a I a a A a a AL L n T T T 而011>a ,故知2A 正定

数值分析第四版习题和答案解析

第四版 数值分析习题 第一章绪论 1.设x>0,x的相对误差为δ,求的误差. 2.设x的相对误差为2%,求的相对误差. 3.下列各数都是经过四舍五入得到的近似数,即误差限不超过最后一位的半个单位,试指 出它们是几位有效数字: 4.利用公式求下列各近似值的误差限: 其中均为第3题所给的数. 5.计算球体积要使相对误差限为1%,问度量半径R时允许的相对误差限是多少 6.设按递推公式 ( n=1,2,…) 计算到.若取≈(五位有效数字),试问计算将有多大误差 7.求方程的两个根,使它至少具有四位有效数字(≈. 8.当N充分大时,怎样求 9.正方形的边长大约为100㎝,应怎样测量才能使其面积误差不超过1㎝ 10.设假定g是准确的,而对t的测量有±秒的误差,证明当t增加时S的绝对误差增加,而 相对误差却减小. 11.序列满足递推关系(n=1,2,…),若(三位有效数字),计算到时误差有多大这个计算过程 稳定吗 12.计算,取,利用下列等式计算,哪一个得到的结果最好 13.,求f(30)的值.若开平方用六位函数表,问求对数时误差有多大若改用另一等价公式 计算,求对数时误差有多大 14.试用消元法解方程组假定只用三位数计算,问结果是否可靠 15.已知三角形面积其中c为弧度,,且测量a ,b ,c的误差分别为证明面积的误差满足 第二章插值法 1.根据定义的范德蒙行列式,令 证明是n次多项式,它的根是,且 . 2.当x= 1 , -1 , 2 时, f(x)= 0 , -3 , 4 ,求f(x)的二次插值多项式. 3.

4.给出cos x,0°≤x ≤90°的函数表,步长h =1′=(1/60)°,若函数表具有5位有效数 字,研究用线性插值求cos x 近似值时的总误差界. 5.设,k=0,1,2,3,求. 6.设为互异节点(j=0,1,…,n),求证: i) ii) 7.设且,求证 8.在上给出的等距节点函数表,若用二次插值求的近似值,要使截断误差不超过,问使用函 数表的步长应取多少 9.若,求及. 10.如果是次多项式,记,证明的阶差分是次多项式,并且为正整数). 11.证明. 12.证明 13.证明 14.若有个不同实根,证明 15.证明阶均差有下列性质: i)若,则; ii)若,则. 16.,求及. 17.证明两点三次埃尔米特插值余项是 并由此求出分段三次埃尔米特插值的误差限. 18.求一个次数不高于4次的多项式,使它满足并由此求出分段三次埃尔米特插值的误差限. 19.试求出一个最高次数不高于4次的函数多项式,以便使它能够满足以下边界条件,,. 20.设,把分为等分,试构造一个台阶形的零次分段插值函数并证明当时,在上一致收敛到. 21.设,在上取,按等距节点求分段线性插值函数,计算各节点间中点处的与的值,并估计误 差. 22.求在上的分段线性插值函数,并估计误差. 23.求在上的分段埃尔米特插值,并估计误差. i) ii) 25.若,是三次样条函数,证明 i); ii)若,式中为插值节点,且,则. 26.编出计算三次样条函数系数及其在插值节点中点的值的程序框图(可用式的表达式). 第三章函数逼近与计算 1.(a)利用区间变换推出区间为的伯恩斯坦多项式. (b)对在上求1次和三次伯恩斯坦多项式并画出图形,并与相应的马克劳林级数部分和误 差做比较. 2.求证: (a)当时,. (b)当时,. 3.在次数不超过6的多项式中,求在的最佳一致逼近多项式.

相关文档
最新文档