数值计算方法第2章作业

数值计算方法第2章作业
数值计算方法第2章作业

第二章

一.问题综述:

二.问题分析:

依题意,均质梁的最大挠度值在满足dy

dx

=0时达到,即:

dy dx =

ω0

120EIL

(?5x4+6L2x2?L4)=0

简单进行化简可得需要求解的非线性方程:

?5x4+6L2x2?L4=0

其中,由已知,L=600cm。

观察方程,可得:

?5(x2)2+6L2(x2)?L4=0

这样可以解出精确解,由二次方程求根公式:

x2=

?6L2±√36L4?20L4

解得:x2=360000cm2或72000cm2。由于是一个实际问题,所以显然可知x>0,即可求得x=600cm 或120√5cm≈268.328157299975cm。此即为真值,求解本题时可以利用所求出的真值进行迭代过程中的相对误差的计算。

三.问题解决:

1.二分法

二分法是通过不断取求根区间的中点,然后根据中点的函数值与求根区间两端点的函数值的正负关系来判断根的位置,从而逐渐缩小求根区间,最终求得数值方法下精度允许的解。

源程序bisect.m(定义函数):

function [c,count,ea,es,yc]=bisect(a,b,tol)

% - a and b are the left and right endpoints

% - tol is the tolerance

% - c is the zero

% - yc=f(c)

% - ea is the err between the calculated value

% - es is the err between the true value

% - count is the times of iteration

f=@(x)(-5*x^4+2*600^2*3*x^2-600^4);

ya=f(a); yb=f(b);

cn=(a+b)/2; %cn is the zero calculated last time

er=1;count=0;

if ya*yb > 0

disp('invaild input');

er=0;

else

while(b-a)>tol %beyond the tolerance

count=count+1;

c=(a+b)/2;

yc=f(c);

if yc==0

a=c;

b=c;

elseif yb*yc>0

b=c;

yb=yc;

else

a=c;

ya=yc;

end

ea=abs((c-cn)/c);

cn=c; %update the zero

es=abs((c-600)/600); %this is the first root

%es=abs((c-268.328157299975)/268.328157299975);%second root fprintf('root=%g ea=%g es=%g\n',c,ea,es);

yc=f(c);

end

c=vpa(c,15);

end

if er==0

c=0;ea=0;es=0;yc=0; %invalid output

end

使用不同的输入值进行迭代,可得:

表1.二分法计算结果

3 590 620 1e-13 47 600.0 3.7896e-16 0 0

4 590 620 1e-10 39 600.000000000018 9.0949e-14 3.0316e-14 -0.0315

5 590 620 1e-5 22 599.999997615814 1.1921e-08 3.9736e-09 4.1199e+03

迭代过程篇幅过长,此处略去,只保留每次使用函数迭代后的输出结果。从迭代过程中可以看出二分法在处理此类两端异号的连续函数时,能够迅速地找到方程根的范围,但是在要求精度较高的情况下时,根的收敛的速度会大大下降,这个现象可以通过资料中的迭代次数公式:

n=?log2(x r?x l E a,d

)?

求得。但是进行二分法的前提是必须知道每一个根的区间,所以当方程较复杂时,二分法就不是很适用了。从迭代过程中还可以看出,计算值与真实值的相对误差始终小于近似相对误差,这是有相应理论支持的,所以在实际计算过程中,有时可以通过设置近似相对误差限来保证精度要求。

2.试位法

试位法是通过不断求求根区间两端连线与x轴的交点,并比较此交点的函数值与边界点处的函数值,从而判断根的位置,缩小求根区间,最终求得所要求的精度允许的解。

源程序regula.m(定义函数):

function [c,count,ea,es,yc]=regula(a,b,delta,epsilon)

% - a and b are the left and right endpoints

% - tol is the tolerance of right and left

% - epsilon is the tolerance of yc and 0

% - c is the zero

% - yc=f(c)

% - ea is the err between the calculated value

% - es is the err between the true value

% - count is the times of iteration

f=@(x)(-5*x^4+2*600^2*3*x^2-600^4);

ya=f(a);yb=f(b);

cn=b-yb*(a-b)/(ya-yb); %cn is the zero calculated last time

c=cn;yc=f(c);er=1;count=0;

if ya*yb > 0

disp('invaild input');

er=0;

else

while((b-a)>delta && abs(yc)>epsilon)

count=count+1;

c=b-yb*(a-b)/(ya-yb);

yc=f(c);

if yb*yc>0

b=c;

yb=yc;

else

a=c;

ya=yc;

end

ea=abs((c-cn)/c);

cn=c; %update zero

es=abs((c-600)/600); %this is the first root

%es=abs((c-268.328157299975)/268.328157299975);%the second

root

fprintf('root=%g ea=%g es=%g\n',c,ea,es);

end

c=vpa(c,15);

end

if er==0

c=0;ea=0;es=0;yc=0; %invalid output

end

使用不同的输入值进行迭代,可得:

表2.试位法计算结果

3 550 700 1e-2 1e-2 30 600.0 1.2127e-1

4 6.8212e-1

5 0.0071

4 590 620 1e-13 1e-13 14 600.0 7.5791e-16 0 0

5 590 620 1e-10 1e-10 14 600.0 7.5791e-1

6 0 0

6 590 620 1e-2 1e-2 10 600.0 7.2191e-14 7.5791e-15 0.0078

2.4723e-11 6.3553e-16 4.5776e-05 7 200 300 1e-8 1e-8 4 268.3281572

99975

8 200 300 1e-4 1e-4 4 268.3281572

2.4723e-11 6.3553e-16 4.5776e-05

99975

9 200 300 1e-2 1e-2 3 268.3281572

1.3600e-05

2.4724e-11 -5.1266

93341

从迭代过程中可以看出试位法相比于二分法能更迅速找到方程根的范围,有时候甚至迭

代区区几次就能达到相当高的精度。但是试位法有一个很大的缺陷,就是当有一个划界点保

持不动时,可能会导致很差的收敛性,并且会严重影响算法效率。

3.改进试位法

试位法的缺陷就是当一个划界点保持不动时,会由于此方法所利用的原理,导致收敛性极差,会使收敛速度大大地下降。而改进的试位法的原理就是通过计数器来检测划界点是否保持不变。如果出现了连续两次保持不变的情况,就将停滞的划界点的函数值变为原来的一半,再继续带入迭代。基于此思想,这里采用增加一个总计数器和两个划界点计数器的方法来实现检测某划界点是否连续两次保持不变。当总计数器到达2次时,判断是否有某个划界点的计数器也到达2次,若有,对其函数值减半;若无,则判断下次计数器到达2次时,是否有此情况。以下源程序中特别标注的部分就是改进的部分。

源代码regula2.m(定义函数):

function [c,count,ea,es,yc]=regula2(a,b,tol,epsilon)

% - a and b are the left and right endpoints

% - tol is the tolerance of right and left

% - epsilon is the tolerance of yc and 0

% - c is the zero

% - yc=f(c)

% - ea is the err between the calculated value

% - es is the err between the true value

% - count is the times of iteration

f=@(x)(-5*x^4+2*600^2*3*x^2-600^4);

ya=f(a); yb=f(b);

cn=b-yb*(a-b)/(ya-yb); %cn is the zero calculated last time

c=cn;yc=f(c);er=1;count=0;

call=0;ca=0;cb=0; %the counters

if ya*yb > 0

disp('invaild input');

er=0;

else

while((b-a)>tol && abs(yc)>epsilon)

c=b-yb*(a-b)/(ya-yb);

yc=f(c);

if yb*yc>0

b=c;

yb=yc;

call=call+1;

ca=ca+1;

if call==2

if ca==2 %if ca not change two times, let ya be half of ya

ya=ya/2;

end

call=1;

ca=1; %if not change, let it be 1

cb=0; %clear another counter

end

else

a=c;

ya=yc;

call=call+1;

cb=cb+1;

if call==2

if cb==2 %if cb not change two times, let yb be half of yb

yb=yb/2;

end

call=1;

cb=1; %if not change, let it be 1

ca=0; %clear another counter

end

end

ea=abs((c-cn)/c);

cn=c; %update zero

es=abs((c-600)/600); %the first root

%es=abs((c-268.328157299975)/268.328157299975);% the second root

fprintf('root=%g ea=%g es=%g\n',c,ea,es);

count=count+1;

end

c=vpa(c,15);

end

if er==0

c=0;ea=0;es=0;yc=0; %invalid output

end

由于本例中并没有某一个划界点保持不动,所以直接运行改进程序所得的结果和原来的程序基本一致,看不出所改善之处。为验证改动后的函数,采用书上的例子y=x10?1进行尝试,程序中f=@(x)(x^10-1),根区间取课件上所取的[0,1.3]:

表3.改进试位法计算结果与对比

9907

由上表可以看出,改进法对于有某一个划界点保持不动的情况具有很好的优化效果,可以使试位次数大量减少,大量减少所需计算时间,对原算法进行了极好的优化。

4.不动点法

不动点法就是利用所给的函数或方程f(x)=0来构造函数x=g(x),函数g(x)的一个不动点(Fixed point)是指一个实数P,满足P=g(P),利用迭代过程:p n+1=g(p n)解方程f(x)根的过程方法。

源代码fixpt.m(函数定义):

function [k,p,ea,es,P] = fixpt(p0,tol,max1)

% Input- p0 is the initial guess for the fixed-point

% - tol is the tolerance

% - max1 is the maximum number of iterations

% Output - k is the number of iterations that were carried out

% - p is the approximation to the fixed-point

% - ea is the error in the approximation

% - es is the error between the true value

% - P'contains the sequence {pn}

%g=@(x)(600^2/(sqrt(-5*x^2+6*600^2))); %first transformation

%g=@(x)(sqrt((600^4+5*x^4)/(6*600^2))); %second transformation

g=@(x)(sqrt(sqrt((6*600^2*x^2-600^4)/5))); %third transformation

P(1)= p0;

for k=2:max1

P(k)=feval(g,P(k-1));

ea=abs(P(k)-P(k-1));

relerr=ea/(abs(P(k))+eps);

p=P(k);

if (ea

end

es=abs((P(k)-600)/600); %this is the first root

%es=abs((P(k)-268.328157299975)/268.328157299975);%second root

if k == max1

disp('maximum number of iterations exceeded')

end

p=vpa(p,15);

P=P';

代码中使用了三种变换:x=

2

√?5x2+6L2

、x=L

4

?5x3+6L2x

、x=√6L2x2?L4

5

4

,由

于所求非线性方程有两个相异根,而利用不动点法每个不动点只能收敛到其中一个根,所以需要构造大于等于两个g(x),才能分别得到两个根。本程序中,第一个和第二个变换都分别能够收敛到268.328157299975,第三个变换能够收敛到600。下表中method即为使用变换公式的次序。

表4.不动点法计算结果

2 700 1e-8 100 37 600.000000889827 5.9322e-07 1.4830e-09 3

3 100 1e-8 100 37 599.999999549696 5.8136e-06 1.4534e-08 3

4 400 1e-12 100 19 268.328157300037 2.4755e-10 2.3006e-13 1

5 400 1e-8 100 14 268.328157493411 7.7375e-07 7.2090e-10 1

6 800 1e-8 100 15 268.328157121611 7.1345e-0

7 6.6472e-10 1

7 400 1e-12 100 28 268.328157300032 1.1454e-10 2.1269e-13 2

8 400 1e-8 100 19 268.328158427351 2.2548e-06 4.2015e-09 2

从表中可以看出,对于每种变换的g(x),无论输入的初始猜测根p0为多少,都只能收敛到同一个根(2、3或5、6对照),这是不动点法的基本原理造成的。对于收敛到同一个根的两种不同的g(x),同样的p0,其迭代次数也不相同(4、7或5、8对照),在此题中,method1的迭代效果要优于method2。

5. Newton-Raphson方法

由理论分析可知,不动点迭代方法优化后就是Newton-Raphson方法,于是在此仅对Newton-Raphson方法进行讨论。

f(x i+1)?f(x i)+f′(x i)(x i+1?x i)

当其与x轴相交时

f(x i)+f′(x i)(x i+1?x i)=0

所以

x i+1=x i?f(x i) (i)

即为迭代公式。

源代码newton.m(函数定义):

function [p0,c,ea,es,y]=newton(p0,tol,epsilon)

% Input - p0 is the initial guess for the zero

% - tol is the tolerance

% - epsilon is the tolerance of y and 0

% Output - p0 is the zero

% - y=f(p0)

% - c is the times of iteration

% - ea is the error in the approximation

% - es is the error between the true value

f=@(x)(-5*x^4+2*600^2*3*x^2-600^4);

df=@(x)(-20*x^3+4*600^2*3*x); %df is the differential of f p1=p0-feval(f,p0)/feval(df,p0); %newton iteration

y=f(p0);

p=p0; %last estimated zero

c=0;

while (abs(p1-p0)>tol && abs(y)>epsilon)

c=c+1;

p0=p1;

p1=p0-f(p0)/df(p0);

ea=abs((p0-p)/p0);

p=p0; %update zero

es=abs((p0-600)/600); %the first root

%es=abs((p0-268.328157299975)/268.328157299975);%second root

fprintf('root=%g ea=%g es=%g\n',p0,ea,es);

y=f(p0);

end

p0=vpa(p0,15);

表5. Newton-Raphson方法计算结果

由迭代过程可以看出,Newton-Raphson方法相对于之前的几种方法,收敛的速度快得多,前面的几种方法次数动辄十几次几十次,而Newton-Raphson方法一般来说只需要不到十次,而且相对真值的误差减小速度远远快于近似相对误差的减小速度。是一种较优的求根方法。

6.割线法

割线法一方面类似于Newton-Raphson方法,但其不同点是用差分估计斜率。另一方面类似于试位法,都是使用两个初值来计算函数斜率的近似,并将其投射到x轴上获得一个新的估计值。其迭代公式为:

x i+1=x i?f(x i)

x i?x i?1

f(x i)?f(x i?1)

源代码secant.m(函数定义):

function [p1,c,ea,es,y]=secant(p0,p1,tol,epsilon) %input - p0,p1 is the initial guess for the zero

% - tol is the tolerance between the guessed zeros % - epsilon is the tolerance of y and 0

%output - p1 is the zero

% - y=f(p1)

% - c is the times of iteration

% - ea is the error in the approximation

% - es is the error between the true value

f=@(x)(-5*x^4+2*600^2*3*x^2-600^4);

y=f(p1);

p1n=p1; %last estimated zero

c=0;

while (abs(p1-p0)>tol && abs(y)>epsilon)

c=c+1;

p2=p1-f(p1)*(p1-p0)/(f(p1)-f(p0));

p0=p1;

p1=p2;

ea=abs((p1-p1n)/p1);

p1n=p1; %update zero

es=abs((p1-600)/600); %the first root

%es=abs((p1-268.328157299975)/268.328157299975);%second root

fprintf('root=%g ea=%g es=%g\n',p1,ea,es);

y=f(p1);

end

p1=vpa(p1,15);

表6.割线法计算结果

6 200 300 1e-3 1e-3 4 268.3281572 2.4723e-11 6.3553e-16 4.5776e-05

由迭代过程可以看出,割线法收敛到真实根的速度也较快,而且相对真实根的误差减小

速度远远快于近似相对误差的减小速度。相比于Newton-Raphson方法,由于割线法通过两

个参数来确定割线位置,所以可以避免Newton-Raphson方法中除数为0的缺点。而且初始

给定的两个估计参数不用像二分法或者试位法一样,需要界定根的位置。所以割线法是一个

较优的方法。

7. 改进的Newton-Raphson方法和改进的割线法

针对出现重根的情况,原本2阶或接近2阶的收敛速率会下降到线性收敛速率,改进方法如下:

定义一个新函数:

u(x)=

f(x)

此函数与原函数有相同的根。基于此函数得到:

改进的Newton-Raphson方法:

x i+1=x i?

f(x i)f′(x i) (i)2(i)(i)

改进的割线法:

x i+1=x i?u(x i)

x i?x i?1 (i)i?1

原理和迭代方法并没有变化。由于本题并未出现重根的状况以及时间方面的原因,所以此处未进行编程验证。

四.总结

表7.各种方法特点的总结

试位法不会发散停滞的划界点会影响效率、

收敛速度不够快

能发散、每个g(x)只对应一个

割线法收敛速度快、划界无需知道

根的范围

可能会发散

非线性方程求根方法比较多,所适用的条件和范围也不尽相同。我们在实际应用的时候,需要根据情况,选择最优的解决方案。

数值计算方法学习指导书内容简介

数值计算方法学习指导书内容简介 数值计算方法学习指导书内容简介《数字信号处理学习指导》是浙江省高等教育重点建设教材、应用型本科规划教材《数字信号处理》(唐向宏主编,浙江大学出版社出版,以下简称教材)的配套学习指导书,内容包括学习要求、例题分析、教材习题解答、自测练习以及计算机仿真实验等。学习指导书紧扣教材内容,通过例题讲解,分析各章节的学习重点、难点以及需要理解、掌握和灵活运用的基本概念、基本原理和基本方法。全书共有66例例题分析、121题题解、2套自测练习和6个mat1ab计算机仿真实验。 数值计算方法学习指导书目录绪论 第1章离散时间信号与系统 1.1 学习要点 1.2 例题 1.3 教材习题解答 第2章离散系统的变换域分析与系统结构 2.1 学习要点 2.2 例题 2.3 教材习题解答 第3章离散时间傅里叶变换

3.1 学习要点 3.2 例题 3.3 教材习题解答 第4章快速傅里叶变换 4.1 学习要点 4.2 例题 4.3 教材习题解答 第5章无限长单位冲激响应(iir)数字滤波器的设计5.1 学习要点 5.2 例题 5.3 教材习题解答 第6章有限长单位冲激响应(fir)数字滤波器的设计6.1 学习要点 6.2 例题 6.3 教材习题解答 第7章数字信号处理中的有限字长效应 7.1 学习要点 7.2 例题 7.3 教材习题解答 第8章自测题 8.1 自测题(1)及参考答案 8.2 自测题(2)及参考答案 第9章基于matlab的上机实验指导 9.1 常见离散信号的matlab产生和图形显示

9.2 信号的卷积、离散时间系统的响应 9.3 离散傅立叶变换 9.4 离散系统的频率响应分析和零、极点分布 9.5 iir滤波器的设计 9.6 fir滤波器的设计 数值计算方法学习指导书内容文摘第1章离散时间信号与系统 1.1 学习要点 本章主要介绍离散时间信号与离散时间系统的基本概念,着重阐述离散时间信号的表示、运算,离散时间系统的性质和表示方法以及连续时间信号的抽样等。本章内容基本上是“信号与系统”中已经建立的离散时间信号与系统概念的复习。因此,作为重点学习内容,在概念上需要明白本章在整个数字信号处理中的地位,巩固和深化有关概念,注意承前启后,加强葙关概念的联系,进一步提高运用概念解题的能力。学习本章需要解决以下一些问题: (1)信号如何分类。 (2)如何判断一个离散系统的线性、因果性和稳定性。 (3)线性时不变系统(lti)与线性卷积的关系如何。 (4)如何选择一个数字化系统的抽样频率。 (5)如何从抽样后的信号恢复原始信号。 因此,在学习本章内容时,应以离散时间信号的表示、离散时间系统及离散时间信号的产生为主线进行展开。信号的离散时间的表示主要涉及序列运算(重点是卷积和)、常用序列、如何判

数值计算方法大作业

目录 第一章非线性方程求根 (3) 1.1迭代法 (3) 1.2牛顿法 (4) 1.3弦截法 (5) 1.4二分法 (6) 第二章插值 (7) 2.1线性插值 (7) 2.2二次插值 (8) 2.3拉格朗日插值 (9) 2.4分段线性插值 (10) 2.5分段二次插值 (11) 第三章数值积分 (13) 3.1复化矩形积分法 (13) 3.2复化梯形积分法 (14) 3.3辛普森积分法 (15) 3.4变步长梯形积分法 (16) 第四章线性方程组数值法 (17) 4.1约当消去法 (17) 4.2高斯消去法 (18) 4.3三角分解法 (20)

4.4雅可比迭代法 (21) 4.5高斯—赛德尔迭代法 (23) 第五章常积分方程数值法 (25) 5.1显示欧拉公式法 (25) 5.2欧拉公式预测校正法 (26) 5.3改进欧拉公式法 (27) 5.4四阶龙格—库塔法 (28)

数值计算方法 第一章非线性方程求根 1.1迭代法 程序代码: Private Sub Command1_Click() x0 = Val(InputBox("请输入初始值x0")) ep = Val(InputBox(请输入误差限ep)) f = 0 While f = 0 X1 = (Exp(2 * x0) - x0) / 5 If Abs(X1 - x0) < ep Then Print X1 f = 1 Else x0 = X1 End If Wend End Sub 例:求f(x)=e2x-6x=0在x=0.5附近的根(ep=10-10)

1.2牛顿法 程序代码: Private Sub Command1_Click() b = Val(InputBox("请输入被开方数x0")) ep = Val(InputBox(请输入误差限ep)) f = 0 While f = 0 X1 = x0 - (x0 ^ 2 - b) / (2 * b) If Abs(X1 - x0) < ep Then Print X1 f = 1 Else x0 = X1 End If Wend End Sub 例:求56的值。(ep=10-10)

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

大作业 三 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

数值计算方法教学大纲

《数值计算方法》教学大纲 课程编号:MI3321048 课程名称:数值计算方法英文名称:Numerical and Computational Methods 学时: 30 学分:2 课程类型:任选课程性质:任选课 适用专业:微电子学先修课程:高等数学,线性代数 集成电路设计与集成系统 开课学期:Y3开课院系:微电子学院 一、课程的教学目标与任务 目标:学习数值计算的基本理论和方法,掌握求解工程或物理中数学问题的数值计算基本方法。 任务:掌握数值计算的基本概念和基本原理,基本算法,培养数值计算能力。 二、本课程与其它课程的联系和分工 本课程以高等数学,线性代数,高级语言编程作为先修课程,为求解复杂数学方程的数值解打下良好基础。 三、课程内容及基本要求 (一) 引论(2学时) 具体内容:数值计算方法的内容和意义,误差产生的原因和误差的传播,误差的基本概念,算法的稳定性与收敛性。 1.基本要求 (1)了解算法基本概念。 (2)了解误差基本概念,了解误差分析基本意义。 2.重点、难点 重点:误差产生的原因和误差的传播。 难点:算法的稳定性与收敛性。 3.说明:使学生建立工程中和计算中的数值误差概念。 (二) 函数插值与最小二乘拟合(8学时) 具体内容:插值概念,拉格朗日插值,牛顿插值,分段插值,曲线拟合的最小二乘法。 1.基本要求 (1)了解插值概念。 (2)熟练掌握拉格朗日插值公式,会用余项估计误差。 (3)掌握牛顿插值公式。 (4)掌握分段低次插值的意义及方法。

(5)掌握曲线拟合的最小二乘法。 2.重点、难点 重点:拉格朗日插值, 余项,最小二乘法。 难点:拉格朗日插值, 余项。 3.说明:插值与拟合是数值计算中的常用方法,也是后续学习内容的基础。 (三) 第三章数值积分与微分(5学时) 具体内容:数值求积的基本思想,代数精度的概念,划分节点求积公式(梯形辛普生及其复化求积公式),高斯求积公式,数值微分。 1.基本要求 (1)了解数值求积的基本思想,代数精度的概念。 (2)熟练掌握梯形,辛普生及其复化求积公式。 (3)掌握高斯求积公式的用法。 (4)掌握几个数值微分计算公式。 2.重点、难点 重点:数值求积基本思想,等距节点求积公式,梯形法,辛普生法,数值微分。 难点:数值求积和数值微分。 3.说明:积分和微分的数值计算,是进一步的各种数值计算的基础。 (四) 常微分方程数值解法(5学时) 具体内容:尤拉法与改进尤拉法,梯形方法,龙格—库塔法,收敛性与稳定性。 1.基本要求 (1)掌握数值求解一阶方程的尤拉法,改进尤拉法,梯形法及龙格—库塔法。 (2)了解局部截断误差,方法阶等基本概念。 (3)了解收敛性与稳定性问题及其影响因素。 2.重点、难点 重点:尤拉法,龙格-库塔法,收敛性与稳定性。 难点:收敛性与稳定性问题。 3.说明:该内容是常用的几种常微分方程数值计算方法,是工程计算的重要基础。 (五) 方程求根的迭代法(4学时) 具体内容:二分法,解一元方程的迭代法,牛顿法,弦截法。 1.基本要求 (1)了解方程求根的对分法和迭代法的求解过程。 (2)熟练掌握牛顿法。 (3)掌握弦截法。 2.重点、难点 重点:迭代法,牛顿法。

数值分析第二章复习与思考题

第二章复习与思考题 1.什么是拉格朗日插值基函数?它们是如何构造的?有何重要性质? 答:若n 次多项式()),,1,0(n j x l j =在1+n 个节点n x x x <<< 10上满足条件 (),,,1,0,, ,0, ,1n k j j k j k x l k j =?? ?≠== 则称这1+n 个n 次多项式()()()x l x l x l n ,,,10 为节点n x x x ,,,10 上的n 次拉格朗日插值基函数. 以()x l k 为例,由()x l k 所满足的条件以及()x l k 为n 次多项式,可设 ()()()()()n k k k x x x x x x x x A x l ----=+- 110, 其中A 为常数,利用()1=k k x l 得 ()()()()n k k k k k k x x x x x x x x A ----=+- 1101, 故 ()()()() n k k k k k k x x x x x x x x A ----= +- 1101 , 即 ()()()()()()()()∏ ≠=+-+---=--------=n k j j j k j n k k k k k k n k k k x x x x x x x x x x x x x x x x x x x x x l 0110110)( . 对于()),,1,0(n i x l i =,有 ()n k x x l x n i k i k i ,,1,00 ==∑=,特别当0=k 时,有 ()∑==n i i x l 0 1. 2.什么是牛顿基函数?它与单项式基{ }n x x ,,,1 有何不同? 答:称()()()(){ }10100,,,,1------n x x x x x x x x x x 为节点n x x x ,,,10 上的牛顿基函数,利用牛顿基函数,节点n x x x ,,,10 上的n 次牛顿插值多项式()x P n 可以表示为 ()()()()10010---++-+=n n n x x x x a x x a a x P 其中[]n k x x x f a k k ,,1,0,,,,10 ==.与拉格朗日插值多项式不同,牛顿插值基函数在增加节点时可以通过递推逐步得到高次的插值多项式,例如 ()()()()k k k k x x x x a x P x P --+=++ 011,

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

大作业 三 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 flag==1 sigma=k*eps; x0=sigma; k=k+1; m=0; flag1=1; 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;

matlab与数值分析作业

数值分析作业(1) 1:思考题(判断是否正确并阐述理由) (a)一个问题的病态性如何,与求解它的算法有关系。 (b)无论问题是否病态,好的算法都会得到它好的近似解。 (c)计算中使用更高的精度,可以改善问题的病态性。 (d)用一个稳定的算法计算一个良态问题,一定会得到他好的近似解。 (e)浮点数在整个数轴上是均匀分布。 (f)浮点数的加法满足结合律。 (g)浮点数的加法满足交换律。 (h)浮点数构成有效集合。 (i)用一个收敛的算法计算一个良态问题,一定得到它好的近似解。√2: 解释下面Matlab程序的输出结果 t=0.1; n=1:10; e=n/10-n*t 3:对二次代数方程的求解问题 20 ++= ax bx c 有两种等价的一元二次方程求解公式

2224b x a c x b ac -±==- 对 a=1,b=-100000000,c=1,应采用哪种算法? 4:函数sin x 的幂级数展开为: 357 sin 3!5!7! x x x x x =-+-+ 利用该公式的Matlab 程序为 function y=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 ) 对于x=/2π、x=11/2π、x =21/2π,计算的精度是多少?分别需 要计算多少项? 5:指数函数的幂级数展开 2312!3!x x x e x =+++ + 根据该展开式,编写Matlab 程序计算指数函数的值,并分析计算结果(重点分析0x <的计算结果)。

数值计算方法作业

数值计算方法作业 姓名:李琦 学号:062410124 求 013=--x x 在x=1.5附近的一个根。 一.牛顿下山法: #include #include float f(float x) /* 定义函数f(x) */ { return x*x*x-x-1; } void main() { float x0,x1=1.5; x0=1; for(;;) { printf (" x0=%f",x0); printf (" x1=%f\n",x1); x0=x1; x1=x0-((x0*x0*x0-x0-1)/(3*x0*x0-1)); if(x0==x1) break; } printf(" x=%f\n",x1); }

二.加权法 #include #include float f(float x) /* 定义函数f(x) */ { return x*x*x-1; } float f1(float x) /* 定义函数f(x)的导数*/ { return 3*x*x; } void main() { float x0,x1=1.5,c; c=f1(x1);x0=1; printf("c=%f\n",c); for(;;) { printf (" x0=%f",x0); printf (" x1=%f\n",x1); x0=x1; x1=(f(x0)-c*x0)/(1-c); if(x0==x1) break; } printf("x=%f\n",x1); }

三.单点弦法: #include #include float f(float x) /* 定义函数f(x) */ { return x*x*x-x-1; } void main() { float x1,x0=1.5,a; a=f(x0); x1=1; for(;;) { printf (" x0=%f",x0); printf (" x1=%f\n",x1); x0=x1; x1=x0-(f(x0)*(x0-1.5)/(f(x0)-a)); if(x0==x1) break; } printf(" x=%f\n",x1); }

数值计算方法第二章

第二章 非线性方程数值解法 在科学计算中常需要求解非线性方程 ()0f x = (2.1) 即求函数()f x 的零点.非线性方程求解没有通用的解析方法,常采用数值求解算法.数值解法的基本思想是从给定的一个或几个初始近似值出发,按某种规律产生一个收敛的迭代序列0{}k k x +∞=,使它逐步逼近于方程(2.1)的某个解.本章介绍非线性方程实根的数值求解算法:二分法、简单迭代法、Newton 迭代法及其变形,并讨论它们的收敛性、收敛速度等. §2.1 二分法 一、实根的隔离 定义 2.1 设非线性方程(2.1)中的()f x 是连续函数.如果有*x 使*()0f x =,则称*x 为方程(2.1)的根,或称为函数()f x 的零点;如果有*()()()m f x x x g x =-,且()g x 在*x 邻域内连续,*()0g x ≠,m 为正整数,则称*x 为方程(2.1)的m 重根.当1m =时,称*x 为方程的单根. 非线性方程根的数值求解过程包含以下两步 (1) 用某种方法确定有根区间.称仅存在一个实根的有根区间为非线性方程的隔根区间,在有根区间或隔根区间上任意值为根的初始近似值; (2) 选用某种数值方法逐步提高根的精度,使之满足给定的精度要求. 对于第(1)步有时可以从问题的物理背景或其它信息判断出根的所在位置,特别是对于连续函数()f x ,也可以从两个端点函数值符号确定出有根区间. 当函数()f x 连续时,区间搜索法是一种有效的确定较小有根区间的实用方法,其具体做法如下 设[,]a b 是方程(2.1)的一个较大有根区间,选择合适的步长()/h b a n =-,k x a kh =+,(0,1,,)k n =L .由左向右逐个计算()k f x ,如果有1()()0k k f x f x +<,则区间1[,]k k x x +就是方程的一个较小的有根区间. 一般情况下,只要步长h 足够小,就能把方程的更小的有根区间分离出来;如果有根区间足够小,例如区间长度小于给定的精度要求,则区间内任意一点可

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

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;

数值计算方法教学大纲(本)

数值计算方法教学大纲(本) 本着“崇术重用、服务地方”的办学理念和我校“高素质应用型人才”的培养目标,特制定了适合我校工科专业本科生的新教学大纲。 一、课程计划 课程名称:数值计算方法Numerical Calculation Method 课程定位:数学基础课 开课单位:理学院 课程类型:专业选修课 开设学期:第七学期 讲授学时:共15周,每周4学时,共60学时 学时安排:课堂教学40学时+实验教学20学时 适用专业:计算机、电科、机械等工科专业本科生 教学方式:讲授(多媒体为主)+上机 考核方式:考试60%+上机实验30%+平时成绩10% 学分:3学分 与其它课程的联系 预修课程:线性代数、微积分、常微分方程、计算机高级语言等。 后继课程:偏微分方程数值解及其它专业课程。 二、课程介绍 数值计算方法也称为数值分析,是研究用计算机求解各种数学问题的数值方法及其理论的一门学科。随着计算科学与技术的进步和发展,科学计算已经与理论研究、科学实验并列成为进行科学活动的三大基本手段,作为一门综合性的新科学,科学计算已经成为了人们进行科学活动必不可少的科学方法和工具。 数值计算方法是科学计算的核心内容,它既有纯数学高度抽象性与严密科学性的特点,又有应用的广泛性与实际实验的高度技术性的特点,是一门与计算机使用密切结合的实用性很强的数学课程.主要介绍插值法、函数逼近与曲线拟合、线性方程组迭代解法、数值积分与数值微分、非线性方程组解法、常微分方程数值解以及矩阵特征值与特征向量数值计算,并特别加强实验环节的训练以提高学生动手能力。通过本课程的学习,不仅能使学生初步掌握数值计算方法的基本理论知识,了解算法设计及数学建模思想,而且能使学生具备一定的科学计算能力和分析与解决问题的能力,不仅为学习后继课程打下良好的理论基础,也为将来从事科学计算、计算机应用和科学研究等工作奠定必要的数学基础。 科学计算是21世纪高层次人才知识结构中不可缺少的一部分,它潜移默化地影响着人们的思维方式和思想方法,并提升一个人的综合素质。

数值分析作业

第二章 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。

数值分析大作业

数值分析报大作业 班级:铁道2班 专业:道路与铁道工程 姓名:蔡敦锦 学号:13011260

一、序言 该数值分析大作业是通过C语言程序编程在Microsoft Visual C++ 6.0编程软件上运行实现的。本来是打算用Matlab软间来计算非线性方程的根的。学习Matlab也差不多有一个多月了,感觉自己编程做题应该没什么问题了;但是当自己真心的去编程、运行时才发现有很多错误,花了一天时间修改、调试程序都没能得到自己满意的结果。所以,我选择了自己比较熟悉的C程序语言来编程解决非线性的求值问题,由于本作业是为了比较几种方法求值问题的收敛速度和精度的差异,选择了一个相对常见的非线性函数来反映其差异,程序运行所得结果我个人比较满意。编写C语言,感觉比较上手,程序出现问题也能比较熟练的解决。最终就决定上交一份C程序语言编程的求值程序了!

二、选题 本作业的目的是为了加深对非线性方程求根方法的二分法、简单迭代法、、牛顿迭代法弦截法等的构造过程的理解;能将各种方法的算法描述正确并且能够改编为程序并在计算机上实现程序的正确合理的运行,能得到自己满意的结果,并且能调试修改程序中可能出现的问题和程序功能的增减修改。本次程序是为了比较各种方法在求解同一非线性方程根时,在收敛情况上的差异。 为了达到上面的条件我选择自己比较熟悉的语言—C语言来编程,所选题目为计算方程f(x)=x3-2x-5=0在区间[2,3]内其最后两近似值的差的绝对值小于等于5 ?的根的几种方法的比较。 110- 本文将二分法、牛顿法、简单迭代法、弦截法及加速收敛法这五种方法在同一个程序中以函数调用的方式来实现,比较简洁明了,所得结果能很好的比较,便于分析;发现问题和得出结论。

数值计算方法第4次作业

第四章 问题一 一、问题综述 在离地球表面高度为y处的重力加速度如下: 计算高度y=55000m处的重力加速度值。 二、问题分析 以高度y作为自变量,重力加速度的值为因变量。得到以下信息: f(0)=9.8100; f(30000)=9.7487; f(60000)=9.6879; f(90000)=9.6278; f(120000)=9.5682; 本题要求的就是f(55000)的值。 以下将采用课堂中学到的Lagrange插值多项式法、Newton插值多项式法、分段低次插值法和样条插值法求解该问题。 三、问题解决 1. lagrange插值多项式法 对某个多项式函数,已知有给定的k+ 1个取值点: 其中对应着自变量的位置,而对应着函数在这个位置的取值。 假设任意两个不同的x j都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为:

其中每个为拉格朗日基本多项式(或称插值基函数),其表达式为: 拉格朗日基本多项式的特点是在上取值为1,在其它的点上取值为0。 源程序lagrange.m function [c,f]=lagrange(x,y,a) % 输入:x是自变量的矩阵;y是因变量的矩阵;a是要计算的值的自变量; % 输出:c是插值多项式系数矩阵;f是所求自变量对应的因变量; m=length(x); l=zeros(m,m); % l是权矩阵 f=0; for i=1:m v=1; for j=1:m if i~=j v=conv(v,poly(x(j)))/(x(i)-x(j)); % v是l_i(x)的系数矩阵 end end l(i,:)=v; % l矩阵的每一行都是x从高次到低次的系数矩阵 end c=vpa(y*l,10); % 对应阶次的系数相加,乘以y,显示10位有效数字 for k=1:m f=f+c(k)*a^(m-k); end 输入矩阵 x=[0 30000 60000 90000 120000] y=[9.81 9.7487 9.6879 9.6278 9.5682] a=55000 再运行源函数,可得: c = [ -2.057613169e-23, 4.938271605e-18, -3.703703702e-14, -0.000002046111111, 9.81] f = 9.6979851723251649906109417384537

数值计算大作业

数值计算大作业 题目一、非线性方程求根 1.题目 假设人口随时间和当时人口数目成比例连续增长,在此假设下人口在短期内的增长建立数学模型。 (1)如果令()N t 表示在t 时刻的人口数目,β 表示固定的人口出生率,则人口数目满足微分方程() ()dN t N t dt β=,此方程的解为0()=t N t N e β; (2)如果允许移民移入且速率为恒定的v ,则微分方程变成() ()dN t N t v dt β=+, 此方程的解为 0()=+ (1) t t v N t N e e βββ -; 假设某地区初始有1000000人,在第一年有435000人移入,又假设在第一年年底该地区人口数量1564000人,试通过下面的方程确定人口出生率β,精确到 410-;且通过这个数值来预测第二年年末的人口数,假设移民速度v 保持不变。 435000 1564000=1000000(1) e e βββ + - 2.数学原理 采用牛顿迭代法,牛顿迭代法的数学原理是,对于方程0)(=x f ,如果) (x f 是线性函数,则它的求根是很容易的,牛顿迭代法实质上是一种线性化方法,其基本思想是将非线性方程0)(=x f 逐步归结为某种线性方程来求解。 设已知方程0)(=x f 有近似根k x (假定0)(≠'x f ),将函数)(x f 在点k x 进行泰勒展开,有 . ))(()()(???+-'+≈k k k x x x f x f x f 于是方程0)(=x f 可近似地表示为 ))(()(=-'+k k x x x f x f 这是个线性方程,记其根为1k x +,则1k x +的计算公式为

数值分析第二章上机题之第二题

姓名:蒋元义、学号:、专业:测绘工程 一、在区间[-1,1]上分别取10,20n =用两组等距节点对龙格函数2 1 ()125f x x =+作多项式插值及三次样条插值,对每个n 值,分别画出插值函数即()f x 的图形。 解: 当N=10时,代码及图像如下: x=-1:0.2:1; y=1./(1+25*x.^2); x1=linspace(-1,1,10); p=interp1(x,y,x1,'linear'); p1=interp1(x,y,x1,'spline'); plot(x,y,'b'); hold on plot(x1,p,'r'); hold on plot(x1,p1,'k'); legend('龙格函数','多项式插值函数','三次样条插值函数'); grid on; title('N=10的插值函数及原函数图形'); xlabel('x 轴'); ylabel('y ‘轴');

当N=20时,代码及图像如下: x=-1:0.2:1; y=1./(1+25*x.^2); x1=linspace(-1,1,20); p=interp1(x,y,x1,'linear'); p1=interp1(x,y,x1,'spline'); plot(x,y,'b'); hold on plot(x1,p,'r'); hold on plot(x1,p1,'k'); legend('龙格函数','多项式插值函数','三次样条插值函数'); grid on; title('N=20的插值函数及原函数图形'); xlabel('x轴'); ylabel('y轴');

数值分析第二章小结

第2章线性方程组的解法 --------学习小结 一、本章学习体会 通过本章知识的学习我首先了解到求解线性方程组的方法可分为两类:直接法和迭代法。计算机虽然运行速度很快,但面对运算量超级多的问题,计算机还是需要很长的时间进行运算,所以,确定快捷精确的求解线性方程组的方法是非常必要的。 本章分为四个小节,其中前两节Gauss消去法和直接三角分解法因为由之前《线性代数》学习的一定功底,学习起来还较为简单,加之王老师可是的讲解与习题测试,对这一部分有了较好的掌握。第三节矩阵的条件数与病态方程组,我 Ax 的系数矩阵A与左端向量b的元素往往是通首先了解到的是线性方程组b 过观测或计算而得到,因而会带有误差。即使原始数据是精确的,但存放到计算机后由于受字长的限制也会变为近似值。所以当A和b有微小变化时,即使求解过程精确进行,所得的解相对于原方程组也可能会产生很大的相对误差。对于本节的学习掌握的不是很好,虽然在课后习题中对课堂知识有了一定的巩固,但整体感觉没有很好的掌握它。第四节的迭代法,初次接触迭代法,了解到迭代法就是构造一个无线的向量序列,使他的极限是方程组的解向量。迭代法应考虑收敛性与精度控制的问题。三种迭代方法的基本思想我已经掌握了,但是在matlab 的编程中还存在很大的问题。 在本节的学习中我认为我最大的问题还是程序的编写。通过这段时间的练习,虽然掌握了一些编写方法和技巧。相比于第一章是对其的应用熟练了不少,但在程序编写上还存在很多问题。希望在以后的学习中能尽快熟练掌握它,充分发挥它强大的作用。 二、本章知识梳理

2.1、Gauss 消去法(次重点) Gauss 消去法基本思想:由消元和回代两个过程组成。 2.1.1顺序Gauss 消去法(对方程组的增广矩阵做第二种初等行变换) 定理 顺序Gauss 消去法的前n-1个主元素) (k kk a (k=1,2,```,n-1)均不为零的充分必要条件是方程组的系数矩阵A 的前 n-1个顺序主子式 )1,,2,1(0)1()1(1 ) 1(1)1(11-=≠=n k a a a a D kk k k K ΛΛM M Λ 消元过程:对于 k=1,2,···,n-1 执行 (1)如果 ,0)(=a k kk 则算法失效,停止计算,否则转入(2) 。 (2)对于i=k+1,k+2,···n,计算 a a k kk k ik k i m )() (,= n k j i m a a a k kj ik k ij k ij ,,1,,) ()() 1(Λ+=-=+ n k i m b b b k k ik k i k i ,,1,) ()() 1(Λ+=-=+ 回代过程: a b x n nn n n n ) () (/= ) (1,,2,1/)() (1 )() (?--=- =∑+=n n k a x a b x k kk j n k j k kj k k k 2.1.2 列主元素Gauss 消去法(把) (n k k i a k kj ,,1,) (?+=中绝对值最大的元素交换到第k 行的主对角线位置)(重点) 定理 设方程组的系数矩阵A 非奇异,则用列主元素Gauss 消去法求解方程组时,各个列主元素a (k=1,2,```,n-1)均不为零。 消元过程:对于 k=1,2,···,n-1 执行 (1)选行号k i ,使 )()(max k i n i k k k i k k a a ≤≤=。 (2)交换A 与b 两行所含的数值。 (3)对于i=k+1,k+2,···n,计算

数值计算方法大作业

题目利用数值计算方法求取基尼系数 姓名与学号 指导教师 年级与专业 所在学院

一、问题综述: 基尼系数(Gini coefficient),是20世纪初意大利学者科拉多·吉尼根据劳伦茨曲线所定义的判断收入分配公平程度的指标。是比例数值,在0和1之间。基尼指数(Gini index)是指基尼系数乘100倍作百分比表示。在民众收入中,如基尼系数最大为“1”,最小等于“0”。前者表示居民之间的收入分配绝对不平均(即所有收入都集中在一个人手里,其余的国民没有收入),而后者则表示居民之间的收入分配绝对平均,即人与人之间收入绝对平等,但这两种情况只出现在理论上;因此,基尼系数的实际数值只能介于0~1之间,基尼系数越小收入分配越平均,基尼系数越大收入分配越不平均。 设右图中的 实际收入分配曲线 (红线)和收入分 配绝对平等线(绿 线)之间的面积为 A,和收入分配绝 对不平等线(蓝 线)之间的面积为 B,则表示收入与 人口之间的比例的基尼系数为 A A+B 。 如果A为零,即基尼系数为0,表示收入分配完全平等(红线和绿线重叠);如果B为零,则系数为1,收入分配绝对不平等(红线和蓝线重叠)。该系数可在0和1之间取任何值。实际上,一般国家的收入分配,既不是完全平等,也不是完全不平等,而是在两者之间,劳伦茨曲线为一条凸向横轴的曲线。收入分配越趋向平等,劳伦茨曲线的弧度越小(斜度越倾向45度),基尼系数也越小;反之,收入分配越趋向不平等,劳伦茨曲线的弧度越大,那么基尼系数也越大。

基尼系数的调节需要国家通过财政政策进行国民收入的二次分配,例如对民众的财政公共服务支出和税收等,从而让收入均等化,令基尼系数缩小。 基尼系数由于给出了反映居民之间贫富差异程度的数量界线,可以较客观、直观地反映和监测居民之间的贫富差距,预报、预警和防止居民之间出现贫富两极分化。因此得到世界各国的广泛认同和普遍采用。 联合国有关组织规定: ●若低于0.2表示收入平均; ●0.2-0.3表示相对平均; ●0.3-0.4表示相对合理; ●0.4-0.5表示收入差距大; ●0.6以上表示收入差距悬殊。 2013年1月18日,中国国家统计局一次性公布了自2003年以来十年的全国基尼系数。大陆统计局局长马建堂称,按照国际新的统计口径,大陆居民收入的基尼系数,2003年是0.479,2004年是0.473,2005年为0.485,2006年为0.487,2007年为0.484,2008年为0.491,2009年为0.490,2010年为 0.481,2011年为0.477,到2012年的数据是0.474,为2005年以来最低水平,而自2008年起,基尼系数也在逐年下降。而此前西南财大调查数据显示,中国的2012年的基尼系数为0.61,但无论是民间统计的数据还是官方统计的数据,结果都遭到学术界质疑,仍具有争议性。 本文将根据网络上国家统计局的数据,利用上面给出的公式来计算我国从2002年以来的城镇居民基尼系数,并将计算出的数据与现有数据进行比较。 全球基尼系数

相关文档
最新文档