西南交大数值分析第二次大作业(可以运行)

西南交大数值分析第二次大作业(可以运行)
西南交大数值分析第二次大作业(可以运行)

数值分析第二次大作业

1

(1)用Lagrange插值法

程序:

function f=Lang(x,y,x0)

syms t;

f=0;

n=length(x);

for(i=1:n)

l=y(i);

for(j=1:i-1)

l=l*(t-x(j))/(x(i)-x(j));

end;

for(j=i+1:n)

l=l*(t-x(j))/(x(i)-x(j));

end

f=f+l;

simplify(f);

if(i==n)

if(nargin==3)

f=subs(f,'t',x0);

else

f=collect(f);

f=vpa(f,6);

end

end

end

x=[1,2,3,-4,5];y=[2,48,272,1182,2262]; t=[-1];

disp('插值结果')

yt=Lang(x,y,t)

disp('插值多项式')

yt=Lang(x,y)

ezplot(yt,[-1,5]);

运行结果:

插值结果:

Yt= 12.0000

插值多项式:

yt =4.0*t^4 - 2.0*t^3 + t^2 - 3.0*t + 2.0

(2)构造arctan x在[1,6]基于等距节点的10次插值多项式

程序:

function f=New(x,y,x0)

syms t;

if(length(x)==length(y))

n=length(x);

c(1:n)=0.0;

else

disp('xoíy??êy2?μè£?');

return;

end

f=y(1);

y1=0;

xx=linspace(x(1),x(n),(x(2)-x(1)));

for(i=1:n-1)

for(j=1:n-i)

y1(j)=y(j+1)-y(j);

end

c(i)=y1(1);

l=t;

for(k=1:i-1)

l=l*(t-k);

end;

f=f+c(i)*l/factorial(i);

simplify(f);

y=y1;

if(i==n-1)

if(nargin==3)

f=subs(f,'t',(x0-x(1))/(x(2)-x(1)));

else

f=collect(f);

f=vpa(f,6);

end

end

end

>>x=[1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6];

y=[atan(1),atan(1.5),atan(2),atan(2.5),atan(3),atan(3.5),atan(4),atan(4.5),atan(5),atan (5.5),atan(6)];

disp('插值多项式')

yt=New(x,y)

ezplot(yt,[1,6]);

hold on

ezplot('atan(t)',[1,6])

grid on

运行结果:

插值多项式

yt =

1.34684*10^(-10)*t^10 - 6.61748*10^(-9)*t^9 + 1.28344*10^(-7)*t^8 - 0.00000104758*t^7 - 0.00000243837*t^6 + 0.000149168*t^5 - 0.00176296*t^4 + 0.0125826*t^3 - 0.0640379*t^2 + 0.250468*t + 0.785398

2

(1)用MATLAB自带spline函数用于进行三次样条插值

程序:

>>x=[-5,-4,-3,-2,-1,0,1,2,3,4,5];

y=[0.03846,0.05882,0.10000,0.20000,0.50000,1.00000,0.50000,0.20000,0.10000,0.0 5882,0.03846];

xi=linspace(-5,5)

yi=spline(x,y,xi);

plot(x,y,'rp',xi,yi);

hold on;

syms x

fx=1/(1+x^2);

ezplot(fx);

grid on

运行结果:

由图可知,三次样条插值多项式图像与原函数图像基本一致。(2)取第一类边界条件,用三弯矩法编写MATLAB程序

程序

function yi=cubic_spline(x,y,ydot,xi)

n=length(x);ny=length(y);

h=zeros(1,n);lambda=ones(1,n);mu=ones(1,n);

M=zeros(n,1);d=zeros(n,1);

for k=2:n

h(k)=x(k)-x(k-1);

end

for k=2:n-1

lambda(k)=h(k+1)/(h(k)+h(k+1));mu(k)=1-lambda(k);

d(k)=6/(h(k)+h(k+1))...

*((y(k+1)-y(k))/h(k+1)-(y(k)-y(k-1))/h(k));

end

d(1)=6/h(2)*((y(2)-y(1))/h(2)-ydot(1));

d(n)=6/h(n)*(ydot(2)-(y(n)-y(n-1))/h(n));

A=diag(2*ones(1,n));

for i=1:n-1

A(i,i+1)=lambda(i);A(i+1,i)=mu(i+1);

end

M=A\d;

for k=2:n

if x(k-1)<=xi & xi<=x(k)

yi=M(k-1)/6/h(k)*(x(k)-xi)^3 ...

+M(k)/6/h(k)*(xi-x(k-1))^3 ...

+1/h(k)*(y(k)-M(k)*h(k)^2/6)*(xi-x(k-1))...

+1/h(k)*(y(k-1)-M(k-1)*h(k)^2/6)*(x(k)-xi); return;

end

end

>>a = -5;b = 5;n = 10;h = (b-a)/n;

x=a:h:b;y=1./(1+x.^2);

ydot=[-5/338,5/338];

xx=a:0.01:b;yy=1./(1+xx.^2);

m = length(xx);z = zeros(1,m);

for i=1:m

z(i)=cubic_spline(x,y,ydot,xx(i));

end

plot(x,y,'o',xx,yy,'k:',xx,z,'k-');

运行结果:

3

本题直接利用MATLAB自带的cftool曲线拟合工具箱完成。拟合结果:

(1)用多项式拟合:

Linear model Poly1:

f(x) = p1*x + p2

Coefficients (with 95% confidence bounds):

p1 = -0.8685 (-0.8815, -0.8556)

p2 = 30.61 (30.48, 30.73)

Goodness of fit:

SSE: 0.1733

R-square: 0.9993

Adjusted R-square: 0.9993

RMSE: 0.1112

(2)最小二乘法插值:

Linear interpolant:

f(x) = piecewise polynomial computed from p Coefficients:

p = coefficient structure

Goodness of fit:

SSE: 0

R-square: 1

Adjusted R-square: NaN

RMSE: NaN

R-square(确定系数)

SSR:Sum of squares of the regression,即预测数据与原始数据均值之差的平方和,公式为:

SST:Total sum of squares,即原始数据和均值之差的平方和,公式为:

“确定系数”是定义为SSR和SST的比值,故

其实“确定系数”是通过数据的变化来表征一个拟合的好坏。由上面的表达式可以知道“确定系数”的正常取值范围为[0 1],越接近1,表明方程的变量对y的解释能力越强,这个模型对数据拟合的也较好

4.

(1)16点复合梯形公式:

程序:

function I =T_quad(x,y)

n=length(x);m=length(y);

h=(x(n)-x(1))/(n-1);a=[1 2*ones(1,n-2) 1];

I=h/2*sum(a.*y);

End

运行结果:

(1)x=0:0.0625:1

y=exp(x)

I=T_quad(x,y)

x =

Columns 1 through 7

0 0.0625 0.1250 0.1875 0.2500 0.3125 0.3750 Columns 8 through 14

0.4375 0.5000 0.5625 0.6250 0.6875 0.7500 0.8125 Columns 15 through 17

0.8750 0.9375 1.0000

y =

Columns 1 through 7

1.0000 1.0645 1.1331 1.2062 1.2840 1.3668 1.4550 Columns 8 through 14

1.5488 1.6487 1.7551 1.8682 1.9887

2.1170 2.2535 Columns 15 through 17

2.3989 2.5536 2.7183

I =

1.7188

(2)x=1:0.0625:2

y=sin(x)/x

I=T_quad(x,y)

x =

Columns 1 through 7

1.0000 1.0625 1.1250 1.1875 1.2500 1.3125 1.3750 Columns 8 through 14

1.4375 1.5000 1.5625 1.6250 1.6875 1.7500 1.8125 Columns 15 through 17

1.8750 1.9375

2.0000

y =

0.6116

I =

0.6116

(2)8点的复合simpson公式:

程序:

function I=S_quad(x,y)

n=length(x);m=length(y)

N=(n-1)/2;h=(x(n)-x(1))/N;a=zeros(1,n);

for k=1:N

a(2*k-1)=a(2*k-1)+1;a(2*k)=a(2*k)+4;

a(2*k+1)=a(2*k+1)+1

end

I= h/6*sum(a.*y)

end

运行结果:

(1)x=0:0.0625:1

y=exp(x)

I=S_quad(x,y)

I =

1.7183

(2)x=1:0.0625:2

y=sin(x)/x

I=S_quad(x,y)

I =

0.6116

(3)三点的Gauss-Legendre积分公式

程序:

function I=G_quad(fun,a,b,N)

h=(b-a)/N;I=0;

for k=1:N

t=[-sqrt(3/5) 0 sqrt(3/5)];A=[5/9 8/9 5/9];

F=feval(fun,h/2*t+a+(k-1/2)*h);

I=I+sum(A.*F)

end

I=h/2*I;

end

运行结果:

(1)fun=inline('exp(x)')

I=G_quad(fun,0,1,4)

I =

2.2722

I =

5.1898

I =

8.9360

I =

13.7463

I =

1.7183

(2)fun=inline('sin(x)/x')

I=G_quad(fun,1,2,4)

I =

1.5954

I =

3.0143

I =

4.2363

I =

5.2479

I =

0.6560

5、给定初值问题y’=-1000(y-x^2)+2x,与y(0)=0,请分别用Euler 和预测-矫正Euler算法按步长h=0.1 ,0.01,0.001,0.0001计算其数值,分析其中遇到的现象及问题

解:首先根据可计算出原函数为:y=Ce(-1000x)+x2,其中C为常量,为简便计算取C=1,计算初值x0=0,y0=0。

(1)Euler算法

程序:

function[x,y]=Euler_f(ydot_fun,x0,y0,h,N)

x=zeros(1,N+1);

x(1)=x0;y(1)=y0;

for n=1:N

x(n+1)=x(n)+h;

y(n+1)=y(n)+h*feval(ydot_fun,x(n),y(n));

end

format short e

ydot_fun=inline('-1000*(y-x*x)+2*x','x','y')

[x,y]=Euler_f(ydot_fun,0,0,0.1,10)

xx=0:0.1:1

yy=exp(-1000*xx)+xx.*xx

d=abs(y-yy)

plot(xx,d)

title('Eular方法误差趋势图h=0.1')

运行结果:

h=0.1

x =

Columns 1 through 6

0 1.0000e-001 2.0000e-001 3.0000e-001 4.0000e-001 5.0000e-001 Columns 7 through 11

6.0000e-001

7.0000e-001

8.0000e-001

9.0000e-001 1.0000e+000

y =

Columns 1 through 6

0 0 1.0200e+000 -9.6940e+001 9.6061e+003 -9.5099e+005

Columns 7 through 11

9.4148e+007 -9.3207e+009 9.2274e+011 -9.1352e+013 9.0438e+015

yy =

Columns 1 through 6

1.0000e+000 1.0000e-002 4.0000e-002 9.0000e-002 1.6000e-001

2.5000e-001

Columns 7 through 11

3.6000e-001

4.9000e-001 6.4000e-001 8.1000e-001 1.0000e+000

d =

Columns 1 through 6

1.0000e+000 1.0000e-002 9.8000e-001 9.7030e+001 9.6060e+003 9.5099e+005

Columns 7 through 11

9.4148e+007 9.3207e+009 9.2274e+011 9.1352e+013 9.0438e+015

h=0.01

x =

Columns 1 through 6

0 1.0000e-002 2.0000e-002 3.0000e-002 4.0000e-002 5.0000e-002 Columns 7 through 11

6.0000e-002

7.0000e-002

8.0000e-002

9.0000e-002 1.0000e-001

y =

Columns 1 through 6

0 0 1.2000e-003 -6.4000e-003 6.7200e-002 -5.8800e-001 Columns 7 through 11

5.3180e+000 -4.7825e+001 4.3047e+002 -3.8742e+003 3.4868e+004

xx =

Columns 1 through 6

0 1.0000e-002 2.0000e-002 3.0000e-002 4.0000e-002 5.0000e-002 Columns 7 through 11

6.0000e-002

7.0000e-002

8.0000e-002

9.0000e-002 1.0000e-001

yy =

Columns 1 through 6

1.0000e+000 1.4540e-004 4.0000e-004 9.0000e-004 1.6000e-003

2.5000e-003

Columns 7 through 11

3.6000e-003

4.9000e-003 6.4000e-003 8.1000e-003 1.0000e-002

d =

Columns 1 through 6

1.0000e+000 1.4540e-004 8.0000e-004 7.3000e-003 6.5600e-002 5.9050e-001

Columns 7 through 11

5.3144e+000 4.7830e+001 4.3047e+002 3.8742e+003 3.4868e+004

4.9580e+000 4.8315e+001 4.2983e+002 3.8750e+003 3.4867e+004

h=0.001

x =

Columns 1 through 6

0 1.0000e-003 2.0000e-003 3.0000e-003 4.0000e-003 5.0000e-003 Columns 7 through 11

6.0000e-003

7.0000e-003

8.0000e-003

9.0000e-003 1.0000e-002

y =

Columns 1 through 6

0 0 3.0000e-006 8.0000e-006 1.5000e-005 2.4000e-005

Columns 7 through 11

3.5000e-005

4.8000e-005 6.3000e-005 8.0000e-005 9.9000e-005

xx =

Columns 1 through 6

0 1.0000e-003 2.0000e-003 3.0000e-003 4.0000e-003 5.0000e-003 Columns 7 through 11

6.0000e-003

7.0000e-003

8.0000e-003

9.0000e-003 1.0000e-002

yy =

Columns 1 through 6

1.0000e+000 3.6788e-001 1.3534e-001 4.9796e-002 1.8332e-002 6.7629e-003

Columns 7 through 11

2.5148e-003 9.6088e-004

3.9946e-004 2.0441e-004 1.4540e-004

d =

Columns 1 through 6

1.0000e+000 3.6788e-001 1.3534e-001 4.9788e-002 1.8317e-002 6.7389e-003

Columns 7 through 11

2.4798e-003 9.1288e-004

3.3646e-004 1.2441e-004

4.6400e-005

h=0.0001

x =

Columns 1 through 6

0 1.0000e-003 2.0000e-003 3.0000e-003 4.0000e-003 5.0000e-003 Columns 7 through 11

6.0000e-003

7.0000e-003

8.0000e-003

9.0000e-003 1.0000e-002

y =

Columns 1 through 6

0 0 3.0000e-006 8.0000e-006 1.5000e-005 2.4000e-005 Columns 7 through 11

3.5000e-005

4.8000e-005 6.3000e-005 8.0000e-005 9.9000e-005

xx =

Columns 1 through 6

0 1.0000e-004 2.0000e-004 3.0000e-004 4.0000e-004 5.0000e-004 Columns 7 through 11

6.0000e-004

7.0000e-004

8.0000e-004

9.0000e-004 1.0000e-003

yy =

Columns 1 through 6

1.0000e+000 9.0484e-001 8.1873e-001 7.4082e-001 6.7032e-001 6.0653e-001

Columns 7 through 11

5.4881e-001 4.9659e-001 4.4933e-001 4.0657e-001 3.6788e-001

d =

Columns 1 through 6

1.0000e+000 9.0484e-001 8.1873e-001 7.4081e-001 6.7031e-001 6.0651e-001

Columns 7 through 11

5.4878e-001 4.9654e-001 4.4927e-001 4.0649e-001 3.6778e-001

(2)预测-矫正Euler算法

程序:

function[x,y]=Euler_r(ydot_fun,x0,y0,h,N)

x=zeros(1,N+1);y=zeros(1,N+1);

x(1)=x0;y(1)=y0;

for n=1:N

x(n+1)=x(n)+h;

ybar=y(n)+ h*feval(ydot_fun,x(n),y(n))

y(n+1)=y(n)+h/2*feval(ydot_fun,x(n),y(n))+ feval(ydot_fun,x(n+1),ybar)

end

format short e

ydot_fun=inline('-1000*(y-x*x)+2*x','x','y')

[x,y]=Euler_r(ydot_fun,0,0,0.001,10)

xx=0:0.0001:0.001

yy=exp(-1000*xx)+xx.*xx

d=abs(y-yy)

plot(xx,d)

title('Eular矫正方法误差趋势图h=0.001')

运行结果:

h=0.1

x =

Columns 1 through 6

0 1.0000e-001 2.0000e-001 3.0000e-001 4.0000e-001 5.0000e-001 Columns 7 through 11

6.0000e-001

7.0000e-001

8.0000e-001

9.0000e-001 1.0000e+000

y =

Columns 1 through 6

0 1.0200e+001 1.0083e+006 9.9774e+010 9.8728e+015 9.7692e+020 Columns 7 through 11

9.6667e+025 9.5653e+030 9.4650e+035 9.3657e+040 9.2675e+045

xx =

Columns 1 through 6

0 1.0000e-001 2.0000e-001 3.0000e-001 4.0000e-001 5.0000e-001 Columns 7 through 11

6.0000e-001

7.0000e-001

8.0000e-001

9.0000e-001 1.0000e+000

yy =

Columns 1 through 6

1.0000e+000 1.0000e-002 4.0000e-002 9.0000e-002 1.6000e-001

2.5000e-001

Columns 7 through 11

3.6000e-001

4.9000e-001 6.4000e-001 8.1000e-001 1.0000e+000

d =

Columns 1 through 6

1.0000e+000 1.0190e+001 1.0083e+006 9.9774e+010 9.8728e+015 9.7692e+020

Columns 7 through 11

9.6667e+025 9.5653e+030 9.4650e+035 9.3657e+040 9.2675e+045

h=0.01

x =

Columns 1 through 6

0 1.0000e-002 2.0000e-002 3.0000e-002 4.0000e-002 5.0000e-002 Columns 7 through 11

6.0000e-002

7.0000e-002

8.0000e-002

9.0000e-002 1.0000e-001

y =

Columns 1 through 6

0 1.2000e-001 1.0788e+003 9.7045e+006 8.7302e+010 7.8537e+014 Columns 7 through 11

7.0652e+018 6.3558e+022 5.7177e+026 5.1436e+030 4.6272e+034

xx =

Columns 1 through 6

0 1.0000e-002 2.0000e-002 3.0000e-002 4.0000e-002 5.0000e-002 Columns 7 through 11

6.0000e-002

7.0000e-002

8.0000e-002

9.0000e-002 1.0000e-001

yy =

Columns 1 through 6

1.0000e+000 1.4540e-004 4.0000e-004 9.0000e-004 1.6000e-003

2.5000e-003

Columns 7 through 11

西南交大 数值分析题库

考试目标及考试大纲 本题库的编纂目的旨在给出多套试题,每套试题的考查范围及难度配置均基于“水平测试”原则,按照教学大纲和教学内容的要求,通过对每套试题的解答,可以客观公正的评定出学生对本课程理论体系和应用方法等主要内容的掌握水平。通过它可以有效鉴别和分离不同层次的学习水平,从而可以对学生的学习成绩给出客观的综合评定结果。 本题库力求作到能够较为全面的覆盖教学内容,同时突显对重点概念、重点内容和重要方法的考查。考试内容包括以下部分: 绪论与误差:绝对误差与相对误差、有效数字、误差传播分析的全微分法、相对误差估计的条件数方法、数值运算的若干原则、数值稳定的算法、常用数值稳定技术。 非线性方程求解:方程的近似解之二分法、迭代法全局收敛性和局部收敛定理、迭代法误差的事前估计法和事后估计法、迭代过程的收敛速度、r 阶收敛定理、Aitken加速法、Ne w to n法与弦截法、牛顿局部收敛性、Ne w to n收敛的充分条件、单双点割线法(弦截法)、重根加速收敛法。 解线性方程组的直接法:高斯消元法极其充分条件、全主元消去法、列主元消去法、高斯-若当消元法、求逆阵、各种消元运算的数量级估计与比较、矩阵三角分解法、Doolittle 和Crout三角分解的充分条件、分解法的手工操作、平方根法、Cholesky分解、改进的平方根法(免去开方)、可追赶的充分条件及适用范围、计算复杂性比较、严格对角占优阵。 解线性方程组迭代法:向量和矩阵的范数、常用向量范数的计算、范数的等价性、矩阵的相容范数、诱导范数、常用范数的计算;方程组的性态和条件数、基于条件数误差估计与迭代精度改善方法;雅可比(Jacobi)迭代法、Gauss-Seidel迭代法、迭代收敛与谱半径的关系、谱判别法、基于范数的迭代判敛法和误差估计、迭代法误差的事前估计法和事后估计法;严格对角占优阵迭代收敛的有关结论;松弛法及其迭代判敛法。 插值法:插值问题和插值法概念、插值多项式的存在性和唯一性、插值余项定理;Lagrange插值多项式;差商的概念和性质、差商与导数之间的关系、差商表的计算、牛顿(Newton)插值多项式;差分、差分表、等距节点插值公式;Hermite插值及其插值基函数、误差估计、插值龙格(Runge)现象;分段线性插值、分段抛物插值、分段插值的余项及收敛性和稳定性;样条曲线与样条函数、三次样条插值函数的三转角法和三弯矩法。 曲线拟合和函数逼近:最小二乘法原理和多项式拟合、函数线性无关概念、法方程有唯一解的条件、一般最小二乘法问题、最小二乘拟合函数定理、可化为线性拟合问题的常见函数类;正交多项式曲线拟合、离散正交多项式的三项递推法。最佳一致逼近问题、最佳一致逼近多项式、切比雪夫多项式、切比雪夫最小偏差定理、切比雪夫多项式的应用(插值余项近似极小化、多项式降幂)。本段加黑斜体内容理论推导可以淡化,但概念需要理解。 数值积分与微分:求积公式代数精度、代数精度的简单判法、插值型求积公式、插值型求积公式的代数精度;牛顿一柯特斯(Newton-Cotes)公式、辛卜生(Simpson)公式、几种低价牛顿一柯特斯求积公式的余项;牛顿一柯特斯公式的和收敛性、复化梯形公式及其截断误差、复化Simpson公式及其截断误差、龙贝格(Romberg)求积法、外推加速法、高斯型求积公式、插值型求积公式的最高代数精度、高斯点的充分必要条件。正交多项式的构造方法、高斯公式权系数的建立、Gauss-Legendre公式的节点和系数。本段加黑斜体内容理论推导可以淡化,但概念需要理解。 常微分方程数值解:常微分方程初值问题数值解法之欧拉及其改进法、龙格—库塔法、阿当姆斯方法。

数值分析作业答案

数值分析作业答案 插值法 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次的多项式,使它满足,,。

西南交大数值分析题库填空

一. 填空 2.Gauss型求积公式不是插值型求积公式。(限填“是”或“不是”) 3. 设l k(x)是关于互异节点x0, x1,…, x n, 的Lagrange 插值基函数,则 0 m=1,2,…,n 5.用个不同节点作不超过次的多项式插值,分别采用Lagrange插值方法与Newton插值方法所得多项式相等(相等, 不相等)。 。 7. n个不同节点的插值型求积公式的代数精度一定会超过n-1次 8.f(x)=ax7+x4+3x+1,f[20, 21,…,27]= a,f [20, 21,…,28]= 0 10设 (i=0,1,…,n),则= _x_ , 这里(x i x j,ij, n2)11.设称为柯特斯系数 则=______1____ 12采用正交多项式拟合可避免最小二乘或最佳平方逼近中常见的_法方程组病态___问题。 13辛卜生(Simpson)公式具有___3____次代数精度。 14 牛顿插商与导数之间的关系式为: 15试确定[0,1]区间上2x3的不超过二次的最佳一致逼近多项式p(x), 该多项式唯一否?答:p(x)=(3/2)x, ; 唯一。 17.给定方程组记此方程组的Jacobi迭代矩阵为B J=(a ij)33,则a23= -1; ,且相应的Jacobi迭代序列是__发散_____的。 18.欧拉预报--校正公式求解初值问题的迭代格式(步长为h) ,此方法是阶方法。 ,此方法是 2阶方法。 19. 2n阶Newton-Cotes公式至少具有2n+1次代数精度。 20.设,则关于的 ||f|| =1 21矩阵的LU分解中L是一个 _为单位下三角阵,而U是一个上三角阵____。 22.设y=f (x1,x2) 若x1,x2,的近似值分别为x1*, x2*,令y*=f(x1*,x2*)作为y的近似值,其绝对误差限的估计式为: ||f(x1*,x2*)|x1-x*1|+ |f(x1*,x2*)|x2- x*2| 23设迭代函数(x)在x*邻近有r(1)阶连续导数,且x* = (x*),并且有(k) (x*)=0 (k=1,…,r-1),但(r) (x*)0,则x n+1=(x n)产生的序列{ x n }的收敛阶数为___r___ 24设公式为插值型求积公式,则, 且=b-a 25称微分方程的某种数值解法为p阶方法指的是其局部截断误差 为O(h p+1)。 26.设x0, x1,x2是区间[a, b]上的互异节点,f(x)在[a, b]上具有各阶导数,过

西南交大数值分析题库积分微分方程

用复化梯形公式计算积分 1 ()f x dx ?,要把区间[0,1]一般要等分 41 份才能保 证满足误差小于0.00005的要求(这里(2) () 1f x ∞ ≤) ;如果知道(2) ()0f x >,则 用复化梯形公式计算积分1 ()f x dx ? 此实际值 大 (大,小)。 在以1 0((),())()(),(),()[0,1]g x f x xf x g x dx f x g x C = ∈?为内积的空间C[0,1] 中,与非零常数正交的最高项系数为1的一次多项式是 2 3 x - 3. (15分)导出用Euler 法求解 (0)1y y y λ'=??=? 的公式, 并证明它收敛于初值问题的精确解 解 Euler 公式 11,1,,,k k k x y y h y k n h n λ--=+== L -----------(5分) ()()1011k k k y h y h y λλ-=+==+L ------------------- (10分) 若用复化梯形求积公式计算积分1 x I e dx = ? 区间[0,1]应分 2129 等分,即要 计算个 2130 点的函数值才能使截断误差不超过 71 102 -?;若改用复化Simpson 公式,要达到同样精度区间[0,1]应分12 等分,即要计算个 25 点的函数值 1.用Romberg 法计算积分 2 3 2 x e dx -? 解 []02()()2b a T f a f b -= += 9.6410430E-003 10221()222 b a a b T T f -+=+= 5.1319070E-003 10 022243 T T S -= = 4.6288616E-003 22T = 4.4998E-003 21 122243 T T S -= = 4.E-003 10 02221615 S S C -= = 4.6588636E-003 32T = 4.7817699E-003 32 222243 T T S -= = 4.1067038E-003

北航数值分析大作业第二题精解

目标:使用带双步位移的QR 分解法求矩阵10*10[]ij A a =的全部特征值,并对其中的每一个实特征值求相应的特征向量。已知:sin(0.50.2)() 1.5cos( 1.2)(){i j i j ij i j i j a +≠+== (i,j=1,2, (10) 算法: 以上是程序运作的逻辑,其中具体的函数的算法,大部分都是数值分析课本上的逻辑,在这里特别写出矩阵A 的实特征值对应的一个特征向量的求法: ()[]()() []()[]()111111I 00000 i n n n B A I gause i n Q A I u Bu u λλ-?-?-=-?-?? ?-=????→=??????→= ?? ? 选主元的消元 检查知无重特征值 由于=0i A I λ- ,因此在经过选主元的高斯消元以后,i A I λ- 即B 的最后一行必然为零,左上方变 为n-1阶单位矩阵[]()()11I n n -?-,右上方变为n-1阶向量[]()11n Q ?-,然后令n u 1=-,则 ()1,2,,1j j u Q j n ==???-。

这样即求出所有A所有实特征值对应的一个特征向量。 #include #include #include #define N 10 #define E 1.0e-12 #define MAX 10000 //以下是符号函数 double sgn(double a) { double z; if(a>E) z=1; else z=-1; return z; } //以下是矩阵的拟三角分解 void nishangsanjiaodiv(double A[N][N]) { int i,j,k; int m=0; double d,c,h,t; double u[N],p[N],q[N],w[N]; for(i=0;i

数值分析上机报告

数值分析上机报告 班级:20级学隧2班 姓名:000000000 学号:00000000000

目录 1 序言 (6) 2 题目 (7) 2.1 题2 (7) 2.1.1 题目内容 (7) 2.1.2 MATLAB程序 (8) 2.1.3 计算结果 (8) 2.1.4 图形 (9) 2.1.5 分析 (14) 2.2 题3 (14) 2.2.1 题目内容 (14) 2.2.2 程序 (14) 2.2.3 计算结果 (14) 2.2.4 图形 (15) 2.2.5 分析 (16) 2.3 选做题5 (16) 2.3.1方法介绍 (17) 2.3.2计算结果及分析 (17) 3总结 (18) 4.附录 (19) 4.1 题1程序代码 (19) 4.2 题2程序代码 (22) 4.3 题3程序代码 (26)

数值分析2015上机实习报告要求 1.应提交一份完整的实习报告。具体要求如下: (1)报告要排版,美观漂亮(若是纸质要有封面,封面上)要标明姓名、学号、专业和联系电话; (2)要有序言,说明所用语言及简要优、特点,说明选用的考量; (3)要有目录,指明题目、程序、计算结果,图标和分析等内容所在位置,作到信息简明而完全; (4)要有总结,全方位总结机编程计算的心得体会; (5)尽量使报告清晰明了,一般可将计算结果、图表及对比分析放在前面,程序清单作为附录放在后面,程序中关键部分要有中文说明或标注, 指明该部分的功能和作用。 2.程序需完好保存到期末考试后的一个星期,以便老师索取用于验证、询问或质疑部分内容。 3.认真完成实验内容,可以达到既学习计算方法又提高计算能力的目的,还可以切身体会书本内容之精妙所在,期间可以得到很多乐趣。 4.拷贝或抄袭他人结果是不良行为,将视为不合格。 5.请按任课老师要求的时间和载体(电子或纸质)提交给任课老师。

数值分析第二次大作业

《数值分析》计算实习报告 第二题 院系:机械工程及自动化学院 学号: 姓名: 2017年11月

一、题目要求 试求矩阵A =[a ij ]10×10的全部特征值,并对其中的每一个实特征值求相应的特征向量,已知 a ij ={ sin (0.5i +0.2j ) i ≠j 1.52cos (i +1.2j ) i =j (i,j =1,2, (10) 说明: 1.用带双步位移的QR 方法求矩阵特征值,要求迭代的精度水平为ε=10?12。 2.打印以下内容: (1)全部源程序; (2)矩阵A 经过拟上三角化后所得的矩阵A (n?1); (3)对矩阵A (n?1)实行QR 方法迭代结束后所得的矩阵; (4)矩阵A 的全部特征值λi =(R i ,I i ) (i =1,2,?,10),其中R i =Re(λi ),I i = Im(λi ) 。若λi 是实数,则令I i =0; (5)A 的相应于实特征值的特征向量。 3.采用e 型数输出实型数,并且至少显示12位有效数字。 二、算法设计思路和方案 1. 将矩阵A 拟上三角化得到矩阵A (n?1) 为了减少计算量,一般先利用Householder 矩阵对矩阵A 作相似变换,把A 化为拟上三角矩阵A (n?1),然后用QR 方法计算A (n?1)的全部特征值,而A (n?1)的特征值就是A 的特征值。具体算法如下: 记(1)A A =,()r A 的第r 列至第n 列的元素为(r)(1,2, ,;,1,,)ij a i n j r r n ==+。 对于1,2,,2r n =-执行 (1)若() (2,3,,)r ir a i r r n =++全为零,则令(1)()r r A A +=,转(5);否则转(2)。

西南交通大学2018-2019数值分析Matlab上机实习题

数值分析2018-2019第1学期上机实习题 f x,隔根第1题.给出牛顿法求函数零点的程序。调用条件:输入函数表达式() a b,输出结果:零点的值x和精度e,试取函数 区间[,] ,用牛顿法计算附近的根,判断相应的收敛速度,并给出数学解释。 1.1程序代码: f=input('输入函数表达式:y=','s'); a=input('输入迭代初始值:a='); delta=input('输入截止误差:delta='); f=sym(f); f_=diff(f); %求导 f=inline(f); f_=inline(f_); c0=a; c=c0-f(c0)/f_(c0); n=1; while abs(c-c0)>delta c0=c; c=c0-f(c0)/f_(c0); n=n+1; end err=abs(c-c0); yc=f(c); disp(strcat('用牛顿法求得零点为',num2str(c))); disp(strcat('迭代次数为',num2str(n))); disp(strcat('精度为',num2str(err))); 1.2运行结果: run('H:\Adocument\matlab\1牛顿迭代法求零点\newtondiedai.m') 输入函数表达式:y=x^4-1.4*x^3-0.48*x^2+1.408*x-0.512 输入迭代初始值:a=1 输入截止误差:delta=0.0005 用牛顿法求得零点为0.80072 迭代次数为14 精度为0.00036062 牛顿迭代法通过一系列的迭代操作使得到的结果不断逼近方程的实根,给定一个初值,每经过一次牛顿迭代,曲线上一点的切线与x轴交点就会在区间[a,b]上逐步逼近于根。上述例子中,通过给定初值x=1,经过14次迭代后,得到根为0.80072,精度为0.00036062。

上海大学_王培康_数值分析大作业

数值分析大作业(2013年5月) 金洋洋(12721512),机自系 1.下列各数都是经过四舍五入得到的近似值,试分别指出它 们的绝对误差限, 相对误差限和有效数字的位数。 X1 =5.420, x 2 =0.5420, x 3=0.00542, x 4 =6000, x 5=50.610? 解:根据定义:如果*x 的绝对误差限 不超过x 的某个数位的半个单位,则从*x 的首位非零数字到该位都是有效数字。 显然根据四舍五入原则得到的近视值,全部都是有效数字。 因而在这里有:n1=4, n2=4, n3=3, n4=4, n5=1 (n 表示x 有效数字的位数) 对x1:有a1=5, m1=1 (其中a1表示x 的首位非零数字,m1表示x1的整数位数) 所以有绝对误差限 143 11 (1)101022 x ε--≤ ?=? 相对误差限 31() 0.510(1)0.00923%5.4201 r x x x εε-?= == 对x2:有a2=5, m2=0 所以有绝对误差限 044 11 (2)101022 x ε--≤ ?=? 相对误差限 42() 0.510(2)0.00923%0.54202 r x x x εε-?= == 对x3:有a3=5, m3=-2 所以有绝对误差限 235 11 (3)101022 x ε---≤ ?=? 相对误差限 53() 0.510(3)0.0923%0.005423 r x x x εε-?= == 对x4:有a4=0, m4=4 所以有绝对误差限 4411(4)1022 x ε-≤?= 相对误差限 4() 0.5 (4)0.0083%6000 4 r x x x εε= = = 对x5:有a5=6, m5=5 所以有绝对误差限 514 11(5)101022 x ε-≤ ?=? 相对误差限 45() 0.510(5)8.3%600005 r x x x εε?= ==

数值分析西南交通大学

1.填空 (1). 在等式∑== n k k k n x f a x x x f 0 10)(],,,[ 中, 系数a k 与函数f (x ) 无 关。 (限填“有”或“无”) (2). Gauss 型求积公式不是 插值型求积公式。(限填“是”或“不是”) 或“无”) (3). 设l k (x )是关于互异节点x 0, x 1,…, x n , 的Lagrange 插值基函数,则 ∑=-n k k m k x l x x 0 )()(≡0 m=1,2,…,n (4). ? ? ? ? ??-=3211A ,则=1||||A 4 ,=2||||A 3.6180340 ,=∞||||A 5 ; (5). 用1n +个不同节点作不超过n 次的多项式插值,分别采用Lagrange 插值方法与Newton 插值方法所得多项式 相等 (相等, 不相等)。 (6). 函数3 320, 10(),01(1),12x f x x x x x x -≤=B ρ,故Jacobi 方法发散。 (2)对Gauss-Seidel 方法,迭代矩阵为

北航数值分析大作业第二题

数值分析第二次大作业 史立峰 SY1505327

一、 方案 (1)利用循环结构将sin(0.50.2)() 1.5cos( 1.2)() {i j i j ij i j i j a +≠+==(i,j=1,2,……,10)进行赋值,得到需要变换的 矩阵A ; (2)然后,对矩阵A 利用Householder 矩阵进行相似变换,把A 化为上三角矩阵A (n-1)。 对A 拟上三角化,得到拟上三角矩阵A (n-1),具体算法如下: 记A(1)=A ,并记A(r)的第r 列至第n 列的元素为()n r r j n i a r ij ,,1,;,,2,1) ( +==。 对于2,,2,1-=n r 执行 1. 若 ()n r r i a r ir ,,3,2) ( ++=全为零,则令A(r+1) =A(r),转5;否则转2。 2. 计算 () ∑+== n r i r ir r a d 1 2 )( ()( )r r r r r r r r r r d c a d a c ==-=++则取,0sgn ) (,1)(,1若 )(,12r r r r r r a c c h +-= 3. 令 () n T r nr r r r r r r r r R a a c a u ∈-=++) ()(,2)(,1,,,,0,,0 。 4. 计算 r r T r r h u A p /)(= r r r r h u A q /)(= r r T r r h u p t /= r r r r u t q -=ω T r r T r r r r p u u A A --=+ω)()1( 5. 继续。 (3)使用带双步位移的QR 方法计算矩阵A (n-1)的全部特征值,也是A 的全部特征值,具体算法如下: 1. 给定精度水平0>ε和迭代最大次数L 。 2. 记n n ij n a A A ?-==][) 1()1()1(,令n m k ==,1。

数值分析2016上机实验报告

序言 数值分析是计算数学的范畴,有时也称它为计算数学、计算方法、数值方法等,其研究对象是各种数学问题的数值方法的设计、分析及其有关的数学理论和具体实现的一门学科,它是一个数学分支。是科学与工程计算(科学计算)的理论支持。许多科学与工程实际问题(核武器的研制、导弹的发射、气象预报)的解决都离不开科学计算。目前,试验、理论、计算已成为人类进行科学活动的三大方法。 数值分析是计算数学的一个主要部分,计算数学是数学科学的一个分支,它研究用计算机求解各种数学问题的数值计算方法及其理论与软件实现。现在面向数值分析问题的计算机软件有:C,C++,MATLAB,Python,Fortran等。 MATLAB是matrix laboratory的英文缩写,它是由美国Mathwork公司于1967年推出的适合用于不同规格计算机和各种操纵系统的数学软件包,现已发展成为一种功能强大的计算机语言,特别适合用于科学和工程计算。目前,MATLAB应用非常广泛,主要用于算法开发、数据可视化、数值计算和数据分析等,除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。 本实验报告使用了MATLAB软件。对不动点迭代,函数逼近(lagrange插值,三次样条插值,最小二乘拟合),追赶法求解矩阵的解,4RungeKutta方法求解,欧拉法及改进欧拉法等算法做了简单的计算模拟实践。并比较了各种算法的优劣性,得到了对数值分析这们学科良好的理解,对以后的科研数值分析能力有了极大的提高。

目录 序言 (1) 问题一非线性方程数值解法 (3) 1.1 计算题目 (3) 1.2 迭代法分析 (3) 1.3计算结果分析及结论 (4) 问题二追赶法解三对角矩阵 (5) 2.1 问题 (5) 2.2 问题分析(追赶法) (6) 2.3 计算结果 (7) 问题三函数拟合 (7) 3.1 计算题目 (7) 3.2 题目分析 (7) 3.3 结果比较 (12) 问题四欧拉法解微分方程 (14) 4.1 计算题目 (14) 4.2.1 方程的准确解 (14) 4.2.2 Euler方法求解 (14) 4.2.3改进欧拉方法 (16) 问题五四阶龙格-库塔计算常微分方程初值问题 (17) 5.1 计算题目 (17) 5.2 四阶龙格-库塔方法分析 (18) 5.3 程序流程图 (18) 5.4 标准四阶Runge-Kutta法Matlab实现 (19) 5.5 计算结果及比较 (20) 问题六舍入误差观察 (22) 6.1 计算题目 (22) 6.2 计算结果 (22) 6.3 结论 (23) 7 总结 (24) 附录

北航数值分析第二次大作业--QR分解

《数值分析A》

一、算法设计方案 整个程序主要分为四个函数,主函数,拟上三角化函数,QR分解函数以及使用双步位移求解矩阵特征值、特征向量的函数。因为在最后一个函数中也存在QR分解,所以我没有采用参考书上把矩阵M进行的QR分解与矩阵Ak的迭代合并的方法,而是在该函数中调用了QR分解函数,这样增强了代码的复用性,减少了程序长度;但由于时间关系,对阵中方法的运算速度没有进行深入研究。 1.为了减少QR分解法应用时的迭代次数,首先对给定矩阵进行拟上三角化处理。 2.对经过拟上三角化处理的矩阵进行QR分解。 3.注意到计算特征值与特征向量的过程首先要应用前面两个函数,于是在拟上三角化矩阵的基础上对QR分解函数进行了调用。计算过程中,没有采用goto语句,而是根据流程图采用其他循环方式完成了设计,通过对迭代过程的合并,简化了程序的循环次数,最后在计算特征向量的时候采用了列主元高斯消去法。

二、源程序代码 #include #include #include int i,j,k,l,m; //定义外部变量double d,h,b,c,t,s; double A[10][10],AA[10][10],R[10][10],Q[10][10],RQ[10][10]; double X[10][10],Y[10][10],Qt[10][10],M[10][10]; double U[10],P[10],T[10],W[10],Re[10]={0},Im[10]={0}; double epsilon=1e-12; void main() { void Quasiuppertriangular(double A[][10]); void QRdecomposition(double A[][10]); void DoublestepsQR(double A[][10]); int i,j; for(i=0;i<10;i++) { for(j=0;j<10;j++) { A[i][j]=sin(0.5*(i+1)+0.2*(j+1)); Q[i][j]=0; AA[i][j]=A[i][j]; } A[i][i]=1.5*cos(2.2*(i+1)); AA[i][i]=A[i][i];

数值分析上机实验

目录 1 绪论 (1) 2 实验题目(一) (2) 2.1 题目要求 (2) 2.2 NEWTON插值多项式 (3) 2.3 数据分析 (4) 2.3.1 NEWTON插值多项式数据分析 (4) 2.3.2 NEWTON插值多项式数据分析 (6) 2.4 问答题 (6) 2.5 总结 (7) 3 实验题目(二) (8) 3.1 题目要求 (8) 3.2 高斯-塞德尔迭代法 (8) 3.3 高斯-塞德尔改进法—松弛法 (9) 3.4 松弛法的程序设计与分析 (9) 3.4.1 算法实现 (9) 3.4.2 运算结果 (9) 3.4.3 数据分析 (11) 4 实验题目(三) (13) 4.1 题目要求 (13) 4.2 RUNGE-KUTTA 4阶算法 (13) 4.3 RUNGE-KUTTA 4阶算法运算结果及数值分析 (14) 总结 (16) 附录A (17)

1绪论 数值分析是计算数学的一个主要部分,它主要研究各类数学问题的数值解法,以及分析所用数值解法在理论上的合理性。实际工程中的数学问题非常复杂,所以往往需要借助计算机进行计算。运用数值分析解决问题的过程:分析实际问题,构建数学模型,运用数值计算方法,进行程序设计,最后上机计算求出结果。 数值分析这门学科具有面向计算机、可靠的理论分析、好的计算复杂性、数值实验、对算法进行误差分析等特点。 本学期开设了数值分析课程,该课程讲授了数值分析绪论、非线性方程的求解、线性方程组的直接接法、线性方程组的迭代法、插值法、函数逼近与曲线拟合、数值积分和数值微分、常微分方程初值问题的数值解法等内容。其为我们解决实际数学问题提供了理论基础,同时我们也发现课程中很多问题的求解必须借助计算机运算,人工计算量太大甚至无法操作。所以学好数值分析的关键是要加强上机操作,即利用计算机程序语言实现数值分析的算法。本报告就是基于此目的完成的。 本上机实验是通过用计算机来解答数值分析问题的过程,所用的计算工具是比较成熟的数学软件MATLAB。MATLAB是Matrix Laboratory的缩写,是以矩阵为基础的交互式程序计算语言。MATLAB是一款具有强大的矩阵运算、数据处理和图形显示功能的软件,其输出结果可视化,编程效率极高,用极少的代码即可实现复杂的运行,因此它使工程技术人员摆脱了繁琐的程序代码,以便快速地验证自己的模型和算法。其主要特点包括:强大的数值运算功能;先进的资料视觉化功能高阶但简单的程序环境;开方及可延展的构架;丰富的程式工具箱。 在科学研究和工程计算领域经常会遇到一些非常复杂的计算问题,利用计算器或手工计算是相当困难或无法实现的,只能借助计算机编程来实现。MATLAB将高性能的数值计算和可视化的图形工具集成在一起,提供了大量的内置函数,使其在科学计算领域具有独特的优势。 最后感谢数值分析课程任课教师赵海良老师的悉心指导!

北航数值分析报告大作业第八题

北京航空航天大学 数值分析大作业八 学院名称自动化 专业方向控制工程 学号 学生姓名许阳 教师孙玉泉 日期2014 年11月26 日

一.题目 关于x , y , t , u , v , w 的方程组(A.3) ???? ?? ?=-+++=-+++=-+++=-+++79 .0sin 5.074.3cos 5.007.1cos sin 5.067.2cos 5.0y w v u t x w v u t y w v u t x w v u t (A.3) 以及关于z , t , u 的二维数表(见表A-1)确定了一个二元函数z =f (x , y )。 表A-1 二维数表 t z u 0 0.4 0.8 1.2 1.6 2 0 -0.5 -0.34 0.14 0.94 2.06 3.5 0.2 -0.42 -0.5 -0.26 0.3 1.18 2.38 0.4 -0.18 -0.5 -0.5 -0.18 0.46 1.42 0.6 0.22 -0.34 -0.58 -0.5 -0.1 0.62 0.8 0.78 -0.02 -0.5 -0.66 -0.5 -0.02 1.0 1.5 0.46 -0.26 -0.66 -0.74 -0.5 1. 试用数值方法求出f (x , y ) 在区域}5.15.0,8.00|), {≤≤≤≤=y x y x D (上的近似表达式 ∑∑===k i k j s r rs y x c y x p 00 ),( 要求p (x , y )以最小的k 值达到以下的精度 ∑∑==-≤-=10020 7210)],(),([i j i i i i y x p y x f σ 其中j y i x i i 05.05.0,08.0+==。 2. 计算),(),,(* ***j i j i y x p y x f (i =1,2,…,8 ; j =1,2,…,5) 的值,以观察p (x , y ) 逼 近f (x , y )的效果,其中j y i x j i 2.05.0,1.0**+==。

《数值计算方法》课程教学大纲.

《数值计算方法》课程教学大纲 课程名称:数值计算方法/Mathods of Numerical Calculation 课程代码:0806004066 开课学期:4 学时/学分:56学时/3.5学分(课内教学 40 学时,实验上机 16 学时,课外 0 学时)先修课程:《高等代数》、《数学分析》、《常微分方程》、《C语言程序设计》 适用专业:信息与计算科学 开课院(系):数学与计算机科学学院 一、课程的性质与任务 数值计算方法是数学与应用数学专业的核心课程之一。它是对一个数学问题通过计算机实现数值运算得到数值解答的方法及其理论的一门学科。本课程的任务是架设数学理论与计算机程序设计之间的桥梁,建立解决数学问题的有效算法,讨论其收敛性和数值稳定性并寻找误差估计式,培养学生数值计算的能力。 二、课程的教学内容、基本要求及学时分配 (一)误差分析2学时 1 了解数值计算方法的主要研究内容。 2 理解误差的概念和误差的分析方法。 3 熟悉在数值计算中应遵循的一些基本原则。 重点:数值计算中应遵循的基本原则。 难点:数值算法的稳定性。 (二)非线性方程组的求根8学时 1 理解方程求根的逐步搜索法的含义和思路 2 掌握方程求根的二分法、迭代法、牛顿法及简化牛顿法、非线性方程组求根的牛顿法 3 熟悉各种求根方法的算法步骤,并能编程上机调试和运行或能利用数学软件求非线性方程的近似根。 重点:迭代方法的收敛性、牛顿迭代方法。 难点:迭代方法收敛的阶。 (三)线性方程组的解法10学时 1 熟练掌握高斯消去法 2 熟练地实现矩阵的三角分解:Doolittle法、Crout法、Cholesky法、LDR方法。 3 掌握线性方程组的直接解法:Doolittle法、Crout法、Cholesky法(平方根法)、改进平方根法、追赶法。 4能熟练地求向量和矩阵的1-范数、2-范数、 -范数和条件数。 5 理解迭代法的基本思想,掌握迭代收敛的基本定理。 6 掌握解线性方程组的雅可比(Jacobi)迭代法、高斯-赛德尔(Gauss-Seidel)迭代法、逐次超松驰(SOR)迭代法。

数值分析大作业 三、四、五、六、七

大作业 三 1. 给定初值0x 及容许误差 ,编制牛顿法解方程f (x )=0的通用 程序. 解:Matlab 程序如下: 函数m 文件:fu.m function Fu=fu(x) Fu=x^3/3-x; end 函数m 文件:dfu.m function Fu=dfu(x) Fu=x^2-1; end 用Newton 法求根的通用程序Newton.m clear; x0=input('请输入初值x0:'); ep=input('请输入容许误差:'); flag=1; while flag==1 x1=x0-fu(x0)/dfu(x0); if abs(x1-x0)

while flag1==1 && m<=10^3 x1=x0-fu(x0)/dfu(x0); if abs(x1-x0)=ep flag=0; end end fprintf('最大的sigma 值为:%f\n',sigma); 2.求下列方程的非零根 5130.6651()ln 05130.665114000.0918 x x f x x +?? =- = ?-???解:Matlab 程序为: (1)主程序 clear clc format long x0=765; N=100; errorlim=10^(-5); x=x0-f(x0)/subs(df(),x0); n=1; while nerrorlim n=n+1; else break ; end x0=x; end disp(['迭代次数: n=',num2str(n)]) disp(['所求非零根: 正根x1=',num2str(x),' 负根x2=',num2str(-x)]) (2)子函数 非线性函数f function y=f(x) y=log((513+0.6651*x)/(513-0.6651*x))-x/(1400*0.0918); end

西南交通大学研究生数值分析作业

数值分析上机报告 指导教师:赵海良 班级: 姓名: 学号: 电话: 2011年12月

序 随着计算机技术的迅速发展,数值分析在工程技术领域中的应用越来越广泛,并且成为数学与计算机之间的桥梁。要解决工程问题,往往需要处理很多数学模型,不仅要研究各种数学问题的数值解法,同时也要分析所用的数值解法在理论上的合理性,如解法所产生的误差能否满足精度要求:解法是否稳定、是否收敛及熟练的速度等。 由于工程实际中所遇到的数学模型求解过程迭代次数很多,计算量很大,所以需要借助如MATLAB,C++,VB,JA V A的辅助软件来解决,得到一个满足误差限的解。本文所计算题目,均采用C++编程。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格,在实际工程中得到了广泛应用,对解决一些小型数学迭代问题,C++软件精度已满足相应的精度。 本文使用C++对牛顿法、牛顿-Steffensen法对方程求解,对雅格比法、高斯-赛德尔迭代法求解方程组迭代求解,对Ru n ge-Kutt a 4阶算法进行编程,并通过实例求解验证了其可行性,并使用不同方法对计算进行比较,得出不同方法的收敛性与迭代次数的多少,比较不同方法之间的优缺性,比较各种方法的精确度和解的收敛速度。

目录 第一章牛顿法和牛顿-Steffensen法迭代求解的比较 (1) 1.1 计算题目 (1) 1.2 计算过程和结果 (1) 1.3 结果分析 (2) 第二章 Jacobi迭代法与Causs-Seidel迭代法迭代求解的比较 (2) 2.1 计算题目 (2) 2.2 计算过程与结果 (2) 2.3 结果分析 (3) 第三章 Ru n ge-Kutt a 4阶算法中不同步长对稳定区间的作用 (4) 3.1 计算题目 (4) 3.2 计算过程与结果 (4) 3.3 结果分析 (4) 总结 (5) 附件 (6) 附件 1(1.1第一问牛顿法) (6) 附件 2(1.1第一问牛顿-Steffensen法) (6) 附件 3(1.1第二问牛顿法) (6) 附件 4(1.1第二问牛顿-Steffensen法) (7) 附件 5(2.1 Jacobi迭代法) (7) 附件 6(2.1Causs-Seidel迭代法) (8) 附件 7(3.1 Ru n ge-Kutt a 4阶算法) (9)

相关文档
最新文档