最新上海电力学院数值计算方法上机实习题

最新上海电力学院数值计算方法上机实习题
最新上海电力学院数值计算方法上机实习题

2017数值计算方法上机实习报告

学院:

专业:

班级:

姓名:

学号:

数值计算方法上机实习题

1. 设?+=1

05dx x

x I n

n , (1) 由递推公式n

I I n n 1

51+

-=-,从0=0.1823I ,1824.00=I 出发,计算20I ; (2) 20=0I ,20=10000I , 用n

I I n n 51

5111+-=--,计算0I ;

(3) 分析结果的可靠性及产生此现象的原因(重点分析原因)。

解:(1)分别令I 0的近似值为0.1823、0.1824,MATLAB 程序如下:

I=0.1823; %题中的已知数据 for n=1:20;

I=(-5)*I+1/n; %由递推公式所得 end

fprintf('I20=%f\n',I)

M=0.1824; %与I 的计算结果形成对比 for i=1:20;

M=(-5)*M+1/i; %由递推公式所得 end

fprintf('M20=%f\n',M) %% 输出结果

I20=-2055816073.851284 M20=7480927090.212283

(2)分别令I 20的近似值为0、10000,MATLAB 程序如下:

I=0; %赋予I20的初始值 for n=0:19;

I=(-1/5)*I+1/(5*(20-n)); %由递推公式所得 end fprintf('I0=%f\n',I) M=10000; for i=0:19;

M=(-1/5)*M+1/(5*(20-i));%由递推公式所得 end

fprintf('M0=%f\n',M) %% 输出结果

I0=0.182322 M0=0.182322 (3)分析:

由输出结果可看出第一种算法为不稳定算法,第二种算法为稳定算法。 由于误差

*

000I I e -=

02211*1*11*555)(5)15(15e e e I I n

I n I I I e n

n n n n n n n n n ===-=+--+

-=-=------

第一种算法为正向迭代算法,每计算一步误差增长5倍,虽然所给的初始值很接近,随着n 的增大,误差也越来越大。

*

n n n I I e -=

n n

n n n n n n n e I I n I n I e I I e 51)(51)5151(5151***111=-=+--+-==-=--- n n e e )5

1

(0=

第二种算法为倒向迭代算法,每计算一步误差缩小5倍,虽然所给的初始值之间差很多,随着n 的增大,误差也越来越小。算法趋近稳定,收敛,可以选择这种算法。 2. 求方程0210=-+x e x

的近似根,要求41105-+?<-k k x x ,并比较计算量。

(1) 在[0,1]上用二分法; (2) 取初值00=x ,并用迭代10

21x k e x -=+;

(3) 加速迭代的结果;

(4) 取初值00=x ,并用牛顿迭代法; (5) 分析绝对误差。 解:

(1)利用二分法,MATLAB 程序如下:

%% 二分法程序 clear all clc a=0;b=1;

f=@(x)(exp(x)+10*x-2); %@是定义函数句柄的运算符 c=(a+b)/2;%取区间中点 i=0;%分割次数

while abs(f(c))>5*10^(-4) %判断f(x)的精度是否满足要求 if f(a)*f(c)<0 b=c;c=(a+b)/2; elseif f(b)*f(c)<0 a=c;c=(b+a)/2; end i=i+1; end

fprintf('二分法运算次数为%i\n',i) fprintf('二分法计算结果为%f\n',c) %% 输出结果

二分法运算次数为13

二分法计算结果为0.090515

(2)用题目中给出的迭代法,取初始值x(1)=0,并用迭代x(i)=(2-exp(x(i-1)))/10,MATLAB 程序如下:

%% 不动点迭代

clear all

clc

x0=0;

x=x0;

for k=1:10000 %规定迭代次数上限

y=(2-exp(x))/10; %迭代结果存到y中

if abs(x-y)<5*10^(-4)

fprintf('初始值为x0%i\n迭代次数为%i\n',x0,k);

break

end

x=y;

if k==10000;

fprintf('迭代次数超出上限%i\n',k);

end

end

fprintf('迭代法计算结果为%f\n',y);

%% 输出结果

初始值x0为0

迭代次数为4

迭代法计算结果为0.090513

(3)利用加速迭代法,MATLAB程序如下:

%% 加速迭代法

x=0;

f=@(x)(( 2-exp(x))./10);

y=f(x); y0=f(y);

y1=x-((y-x)^2)/(y0-2*y+x);

i=1;

while abs(y1-x)> 5*10^(-4)

x=y1;

y=f(x);

y0=f(y);

y1=x-((y-x)^2)/(y0-2*y+x);

i=i+1;

end

%% 输出结果

y1= 0.090525

i=2

(4)牛顿迭代法:

取初始值x=0,MA TLAB程序如下:

%% 清空环境变量

clear all clc

%% 牛顿迭代法 x=0;

y=x-(exp(x)+10*x-2)./(exp(x)+10); i=1;

while abs(x-y)>0.0005 x=y;

y=x-(exp(x)+10*x-2)./(exp(x)+10); i=i+1; end %% 输出结果

y= 0.090525 i=2

(5)分析绝对误差

根据方程解求得对应的绝对误差如下表所示:

通过上述表格可以看出,二分法运算了11次,不动点迭代方法运算了4次, Atiken 加速迭代法运算了2次,牛顿迭代法运算2次.比较绝对误差可以发现 Atiken 加速迭代和牛顿迭代的计算结果的绝对误差较小。下面就其原因进行分析: 我们知道1212()()g x g x L x x -≤-,其中L 为压缩常数,并且01L ≤<。

进行误差估计:10*1k

k L x x x x L

-≤

--,当L 较小时,收敛较快,反之,当L 很靠近1时,收敛很慢。若

1L ≥时,则迭代不收敛。

由()1g x L '≤< ,()1()

lim =(0,1)!p k k k

e g x C C p e p *+→∞=≠≥常数,收敛阶为p 。

二分法和不动点迭代为线性收敛;Atiken 迭代和牛顿迭代是平方收敛,是超线性收敛的。其

中,二分法L=0.5;用迭代10

21x

k e x -=+,

2()==0.27101010

x x e e e g x '??-'≤≈ ???,比0.5小,

因此收敛比二分法快。不动点迭代为线性收敛,Atiken 迭代速度与牛顿迭代速度都是超线性收敛的,因而收敛速度较快。相比之下,只有二分法的收敛速度较慢,绝对误差最大。 3.钢水包使用次数多以后,钢包的容积增大,数据如下:

试从中找出使用次数和容积之间的关系,计算均方差。(用ax b

y c x

+=

+拟合) 解:拟合曲线的模型是ax b y c x +=+,将原模型变为)()(b ax x c y +=+,采用非线性最小二程

法。按照最小二乘原理,应选取参数a ,b ,c 使得表达式∑=+-+=

15

1k 2

))()((Z b ax x c y k

k k 达到极小值。具体的方法就是对Z 关于a 、b 、c 求偏导数,并置这些偏导数等于0,相对应的方程组如下所示:

???

?

??

???=+-+-=??=+-+-=??=+-+-=??∑∑∑---0))()((20))()((20))()((2151151151k k k k k

k k k k k k k k k b ax y x c y c Z b ax y x c b Z b ax y x c x a Z 通过对上述的偏导数方程组进行整理,可以将之写成的b AX =的形式,利用 MA TLA 充当计算器的作用,可以进行X 的求解,对应的就是a 、b 、c 三个参数的值。下面的程序就是进行求解方程组、画拟合曲线以及求取均方差的程序,具体如下: %求拟合方程,画拟合曲线

x=[2 3 4 5 6 7 8 9 10 11 12 13 14 15 16];

y=[6.42 8.2 9.58 9.5 9.7 10 9.93 9.99 10.49 10.59 10.60 10.8 10.6 10.9 10.76];

A=[sum(x.^2),sum(x),-sum(x.*y); sum(x),15,-sum(y); sum(x.*y),sum(y),-sum(y.^2)]; B=[sum(x.^2.*y);sum(x.*y);sum(y.^2.*x)]; f=A\B;

a=f(1);b=f(2);c=f(3); z=linspace(2,50,48);

Y=(f(1)*z+f(2))./(f(3)+z); plot(x,y,'r*',z,Y ,'b-');

fprintf('a=%f\nb=%f\nc=%f\n',a,b,c);

fprintf('拟合出来的方程式为:\n(%7.4f+x)y=%7.4f+%7.4fx\n',f(3),f(2),f(1)); %求均方差 for i=1:15

y1(i)=(f(2)+f(1)*x(i))/(f(3)+x(i)); end c=0;

for i=1:15

c=c+(y(i)-y1(i))^2; end

jfc=sqrt(c/15);

fprintf('均方差为%f\n',jfc) %%运行结果: a=11.340048 b=-12.495325 c=-0.340291

拟合出来的方程式为:

(-0.3403+x)y=-12.4953+11.3400x 均方差为0.220812

对应的拟合曲线如下图:

分析总结:此方法利用线性方法求解非线性问题,避免了非线性误差较大的问题。

4.设??????????

??----------------=410100141010014101101410010141001014A ,??????

???

?

??--=625250b ,b x =A 分析下列迭代法的收敛性,并求42

110-+≤-k

k x x 的近似解及相应的迭代次数。

(1) JACOBI 迭代;

(2) GAUSS-SEIDEL 迭代;

(3) SOR 迭代(取0.1:0.1:1.9ω=,找到迭代步数最少的*ω)。 解:

(1)JACOBI 迭代

%% JACOBI函数

function tx=jacobi(A,b,imax,x0,tol)

%初始值x0,次数imax,精度tol

del=10^(-10);

tx=[x0];

n=length(x0);

for i=1:n

dg=A(i,i);

if abs(dg)

disp('对角元太小');%防止出现溢出现象

return

end

end

for k=1:imax %jacobi循环

for i=1:n

sm=b(i);

for j=1:n

if j~=i

sm=sm-A(i,j)*x0(j);

end

end

x(i)=sm/A(i,i);

%x(1)到x(n)即完成一次迭代

end

tx=[tx;x];%矩阵中又加一行

if norm(x-x0)

return

else

x0=x;

end

end

%% 主函数程序

clear all

clc

A=[4 -1 0 -1 0 0;-1 4 -1 0 -1 0;0 -1 4 -1 0 -1;-1 0 -1 4 -1 0;0 -1 0 -1 4 -1;0 0 -1 0 -1 4]; b=[0 5 -2 5 -2 6];

x0=[0 0 0 0 0 0];

imax=100;%迭代次数

tol=10^(-4);%精度

tx=jacobi(A,b,imax,x0,tol);

for j=1:length(tx)

fprintf('%d%f%f%f%f%f%f\n',j,tx(j,1),tx(j,2),tx(j,3),tx(j,4),tx(j,5),tx(j,6));

end

%% 运行结果

10.0000000.0000000.0000000.0000000.0000000.000000 20.0000001.250000-0.5000001.250000-0.5000001.500000 30.6250001.0000000.5000001.0000000.5000001.250000 40.5000001.6562500.3125001.6562500.3125001.750000 50.8281251.5312500.7656251.5312500.7656251.656250 60.7656251.8398440.6796881.8398440.6796881.882813 70.9199221.7812500.8906251.7812500.8906251.839844 80.8906251.9252930.8505861.9252930.8505861.945313 90.9626461.8979490.9489751.8979490.9489751.925293 100.9489751.9651490.9302981.9651490.9302981.974487 110.9825741.9523930.9761961.9523930.9761961.965149 120.9761961.9837420.9674841.9837420.9674841.988098 130.9918711.9777910.9888951.9777910.9888951.983742 140.9888951.9924150.9848311.9924150.9848311.994448 150.9962081.9896390.9948201.9896390.9948201.992415 160.9948201.9964620.9929231.9964620.9929231.997410 170.9982311.9951670.9975831.9951670.9975831.996462 180.9975831.9983490.9966991.9983490.9966991.998792 190.9991751.9977450.9988731.9977450.9988731.998349 200.9988731.9992300.9984601.9992300.9984601.999436 210.9996151.9989480.9994741.9989480.9994741.999230 220.9994741.9996410.9992821.9996410.9992821.999737 230.9998201.9995090.9997551.9995090.9997551.999641 240.9997551.9998320.9996651.9998320.9996651.999877 250.9999161.9997710.9998861.9997710.9998861.999832 260.9998861.9999220.9998441.9999220.9998441.999943 270.9999611.9998930.9999471.9998930.9999471.999922 280.9999471.9999640.9999271.9999640.9999271.999973 290.9999821.9999500.9999751.9999500.9999751.999964 (2)GAUSS-SEIDEL迭代

%% GAUSS-SEIDEL函数

function tx=gseidel(A,b,imax,x0,tol)

%初始值x0,次数imax,精度tol

del=10^-10; tx=[x0];n=length(x0);

%tx是个二维矩阵,存储着每一步迭代的结果

for i=1:n

dg=A(i,i);

if abs(dg)

disp('对角元太小');

return

end

end

for k=1:imax %G-S循环

x=x0;

for i=1:n

sm=b(i);

for j=1:n

if j~=i

sm=sm-A(i,j)*x(j);

end

end

x(i)=sm/A(i,i);

end

tx=[tx;x];

if norm(x-x0)

return

else

x0=x;

end

end

%% 主函数程序

clear all

clc

A=[4 -1 0 -1 0 0;-1 4 -1 0 -1 0;0 -1 4 -1 0 -1;-1 0 -1 4 -1 0;0 -1 0 -1 4 -1;0 0 -1 0 -1 4];

b=[0 5 -2 5 -2 6];

x0=[0 0 0 0 0 0];

imax=100;%迭代次数

tol=10^(-4);%精度

tx=gseidel(A,b,imax,x0,tol);

for j=1:length(tx)

fprintf('%d %f %f %f %f %f %f\n',j,tx(j,1),tx(j,2),tx(j,3),tx(j,4),tx(j,5),tx(j,6)) end

%% 运行结果

1 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000

2 0.000000 1.250000 -0.187500 1.203125 0.113281 1.481445

3 0.613281 1.384766 0.51733

4 1.560974 0.606796 1.781033

4 0.73643

5 1.715141 0.764287 1.776880 0.818263 1.895638

5 0.873005 1.863889 0.884102 1.893843 0.913342 1.949361

6 0.939433 1.934219 0.944356 1.949283 0.958216 1.975643

7 0.970875 1.968362 0.973322 1.975603 0.979902 1.988306

8 0.985991 1.984804 0.987178 1.988268 0.990344 1.994381

9 0.993268 1.992698 0.993837 1.994362 0.995360 1.997299

10 0.996765 1.996490 0.997038 1.997291 0.997770 1.998702

11 0.998445 1.998313 0.998577 1.998698 0.998928 1.999376

12 0.999253 1.999189 0.999316 1.999374 0.999485 1.999700

13 0.999641 1.999610 0.999671 1.999699 0.999752 1.999856

14 0.999827 1.999813 0.999842 1.999855 0.999881 1.999931

15 0.999917 1.999910 0.999924 1.999931 0.999943 1.999967

16 0.999960 1.999957 0.999964 1.999967 0.999973 1.999984

(3)SOR迭代

%% SOR函数

function tx=sor(A,b,imax,x0,tol,w)

%初始值x0,次数imax,精度tol

del=10^-10;

tx=[x0];

n=length(x0);

for i=1:n

dg=A(i,i);

if abs(dg)

disp('对角元太小');

return

end

end

for k=1:imax %SOR循环

x=x0;

for i=1:n

sm=b(i);

for j=1:n

if j~=i

sm=sm-A(i,j)*x(j);

%先高斯迭代

end

end

x(i)=sm/A(i,i);

x(i)=w*x(i)+(1-w)*x0(i);

%比较高斯与超松弛迭代公式,补上省缺的项

end

tx=[tx;x];

if norm(x-x0)

return

else

x0=x;

end

end

%% 主函数程序

clear all

clc

A=[4 -1 0 -1 0 0;-1 4 -1 0 -1 0;0 -1 4 -1 0 -1;-1 0 -1 4 -1 0;0 -1 0 -1 4 -1;0 0 -1 0 -1 4]; b=[0 5 -2 5 -2 6];

x0=[0 0 0 0 0 0];

imax=100;迭代次数

tol=10^(-4);%精度

w=1.2;%给定不同的w,w=0.1:0.1:1.9,找出使SOR 迭代法收敛速度最快 tx=sor(A,b,imax,x0,tol,w); for j=1:size(tx,1)

fprintf('%d %f%f%f%f%f%f\n',j,tx(j,1),tx(j,2),tx(j,3),tx(j,4),tx(j,5),tx(j,6)) end %% 运行结果

1 0.0000000.0000000.0000000.0000000.0000000.000000

2 0.0000001.500000-0.1500001.4550000.2865001.840950

3 0.8865001.5069000.8708551.8221560.8937021.961177

4 0.8214171.9744120.9531531.9360500.9827511.988536

5 1.0088551.9885450.9833092.0052650.9981531.996732

6 0.9963721.9956411.0026291.9980940.9975092.000695

7 0.9988462.0005670.9992811.9990721.0005991.999825

8 1.0001231.9998870.9997792.0003360.9998951.999937

9 1.0000421.9999371.0001071.9999460.9999672.000035 10 0.9999572.0000220.9999791.9999821.0000181.999992 11 1.0000101.9999980.9999962.0000110.9999971.999999

W 值的范围在0~2之间,SOR 迭代才会收敛,令w=0.1:0.1:1.9,找出w*,使得SOR 迭代的收敛速度最快。W=0.1时需要迭代101次;w=1.9时需要迭代101次;w=1时需要迭代16次;w=0.9时需要迭代20次;w=1.1时需要迭代13次;w=1.3时需要迭代13次;w=1.2时需要迭代11次。由这几次试代可得出w=1.2时迭代次数最少,SOR 迭代法收敛速度最快。

总结:

由于A 为严格对角占有矩阵,根据定理可知雅克比迭代和GS 迭代都收敛,SOR 迭代收敛的必要条件是0

(1)JACOBI 迭代是根据A 分解成上三角、下三角和对角阵,将线性方程组的求解归结为对角方程组求解过程的重复,思路简单易于编程。迭代次数比较多,收敛速度慢;

(2)GAUSS-SEIDEL 迭代,是在JACOBI 收敛的基础上将计算出来的未知量马上投入下一个迭代方程中使用,使得迭代的速度加快,效果更好。但GS 迭代与JACOBI 迭代的收敛域并不能相互包容,所以不能相互代替。但如果两者都收敛时,一般说GS 迭代比JACOBI 迭代的收敛速度快。

(3)SOR 迭代为了加快收敛速度,在GS 的基础上加入一修正参数即松弛因子w ,使得收敛速度更快。但选着不同的w ,收敛速度不一样,为了达到最好的效果,要选着最合适的松弛因子。

5.用逆幂迭代法求????

? ??=111123136A 最接近于11的特征值和特征向量,准确到3

10-。

解:

%% 逆幂迭代法 A=[6 3 1;3 2 1;1 1 1]; v(:,1)=[1;0;1]; tol=1e-3; p=11;

L(1)=max(v(:,1));

u(:,1)=v(:,1)/L(1); k=1;

B=(A-p*eye(3)); while k>0

v(:,k+1)=B\u(:,k); L(k+1)=max(v(:,k+1)); u(:,k+1)=v(:,k+1)/L(k+1); err(k+1)=abs(1/L(k+1)-1/L(k)); if err(k+1)

迭代次数k =10 特征向量 =

4.4361 2.4363 1.0000 特征值 =7.8724

通过运行的结果可以看出,迭代运算了10次,最终求出的接近11的近似特征值为7.8724,对应的近似特征向量为[4.4361 2.4363 1.0000]’。 6.用经典R-K 方法求解初值问题 (1)??

?-+-='++-='x x y y y x y y y sin 2cos 22sin 22212211

,]10,0[∈x ,

??

?==3

)0(2

)0(21y y ; (2)???-+-='++-='x x y y y x y y y sin 999cos 999999998sin 22212

211

,]10,0[∈x ,

??

?==3)0(2

)0(2

1y y 。 和精确解???+=+=--x

e x y x

e x y x

x cos 2)(sin 2)(21比较,进行误差分析得到结论,图形显示精确解和数值解。 解:

(1)MATLAB 程序如下:

%% 用经典R-K 方法求解初值问题 clc;clear;

f=@(x,y1,y2)(-2*y1+y2+2*sin(x)) g=@(x,y1,y2) (y1-2*y2+2*cos(x)-2*sin(x)); h=0.1;

y1(1)=2;y2(1)=3;x(1)=0;

for i=1:100;

K1=f(x(i),y1(i),y2(i));

L1=g(x(i),y1(i),y2(i));

K2=f(x(i)+0.5*h,y1(i)+0.5*h*K1,y2(i)+0.5*h*L1); L2=g(x(i)+0.5*h,y1(i)+0.5*h*K1,y2(i)+0.5*h*L1); K3=f(x(i)+0.5*h,y1(i)+0.5*h*K2,y2(i)+0.5*h*L2); L3=g(x(i)+0.5*h,y1(i)+0.5*h*K2,y2(i)+0.5*h*L2); K4=f(x(i)+h,y1(i)+h*K3,y2(i)+h*L3);

L4=g(x(i)+h,y1(i)+h*K3,y2(i)+h*L3);

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

y1(i+1)=y1(i)+h*(1/6)*(K1+2*K2+2*K3+K4);

y2(i+1)=y2(i)+h*(1/6)*(L1+2*L2+2*L3+L4);

end

x=0:0.1:10;

for i=1:101;

Y1(i)=2*exp(-x(i))+sin(x(i));

Y2(i)=2*exp(-x(i))+cos(x(i));

end

c=y1-Y1;

d=y2-Y2;

subplot(2,1,1)

plot(x,y1,'r*',x,Y1,'b-','LineWidth',2)

C=max(abs(y1-Y1))

C1=max(abs(y2-Y2))

legend('y1龙格库塔近似解','Y1精确解');

title('第一问曲线1精确解和近似解的对比'); ylabel('y1曲线Y1曲线')

subplot(2,1,2)

plot(x,y2,'r*',x,Y2,'b-','LineWidth',2)

legend('y2龙格库塔近似解','Y2精确解');

title('第一问曲线2精确解和近似解的对比'); ylabel('y2曲线Y2曲线')

%% 图形结果

误差结果:

C =

7.3449e-06

C1 =

7.4367e-06

(2)MATLAB程序如下:

%% 用经典R-K方法求解初值问题

clc;clear;

f=@(x,y1,y2)(-2*y1+y2+2*sin(x));

g=@(x,y1,y2)(998*y1-999*y2+999*cos(x)-999*sin(x)); h=0.001;

y1(1)=2;y2(1)=3;x(1)=0;

for i=1:10000;

K1=f(x(i),y1(i),y2(i));

L1=g(x(i),y1(i),y2(i));

K2=f(x(i)+0.5*h,y1(i)+0.5*h*K1,y2(i)+0.5*h*L1);

L2=g(x(i)+0.5*h,y1(i)+0.5*h*K1,y2(i)+0.5*h*L1);

K3=f(x(i)+0.5*h,y1(i)+0.5*h*K2,y2(i)+0.5*h*L2);

L3=g(x(i)+0.5*h,y1(i)+0.5*h*K2,y2(i)+0.5*h*L2);

K4=f(x(i)+h,y1(i)+h*K3,y2(i)+h*L3);

L4=g(x(i)+h,y1(i)+h*K3,y2(i)+h*L3);

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

y1(i+1)=y1(i)+h*(1/6)*(K1+2*K2+2*K3+K4);

y2(i+1)=y2(i)+h*(1/6)*(L1+2*L2+2*L3+L4); end

x=0:0.001:10;

Y1=2*exp(-x)+sin(x);

Y2=2*exp(-x)+cos(x);%??è·?a

subplot(211)

plot(x,y1,'r*',x,Y1,'b-','LineWidth',2)

legend('y1龙格库塔近似解','Y1精确解'); title('第二问曲线1精确解和近似解的对比'); ylabel('y1曲线Y1曲线')

subplot(2,1,2)

plot(x,y2,'r*',x,Y2,'b-','LineWidth',2)

legend('y2龙格库塔近似解','Y2精确解'); title('第二问曲线2精确解和近似解的对比'); ylabel('y2曲线Y2曲线')

C=max(abs(y1-Y1))

C1=max(abs(y2-Y2))

%% 图形结果

误差结果:

C =

2.4263e-11

C1 =

2.3547e-08

四阶龙格库塔法所求出的解的精确度很高,很接近精确解。证明该方法是一种有效的算法。考虑到方程组的刚性问题,为了保证算法的稳定性,必须将步长限制在较小的范围内。第一组数据的刚性比为3大于1,为病态方程组,要求其步长限制在较小的范围内。第二组数据的刚性比为1000也大于1,为病态方程组,故步长也要限制在较小范围内。 7.用有限差分法求解边值问题(h=0.1),并图形显示。

?

?

?==-=+-''1)1()1(0

)1(2y y y x y . 解:%% 有限差分法求解边值问题

%% 追赶算法 function x=chase(a,b,c,f)

%求解线性方程组Ax=f ,其中A 使三对角阵 %a 是矩阵A 的小对角线元素a(1)=0 %b 是矩阵A 的对角线元素 %c 是矩阵A 的上对角线元素 %f 是方程组的右端向量 N=length(f);

x=zeros(1,N);y=zeros(1,N); d=zeros(1,N);u= zeros(1,N); %预处理 d(1)=b(1); for i=1:N-1 u(i)=c(i)/d(i);

d(i+1)=b(i+1)-a(i+1)*u(i); end %追的过程 y(1)=f(1)/d(1); for i=2:N

y(i)=(f(i)-a(i)*y(i-1))/d(i); end %赶的过程 x(N)=y(N); for i=N-1:-1:1 x(i)=y(i)-u(i)*x(i+1); end

%% 主程序 h=0.1; N=(1-(-1))/h; x(1)=-1; x(N-1)=1; y(1)=1; y(N-1)=1;

X(i)=x(1)+i*h;

q(i)=1+(X(i)^2);

B(i)=2/(h^2)+q(i);

end

for i=1:N-2

C(i)=-1/(h^2);

end

g(1)=0+1/(h^2);

g(N-1)=0+1/(h^2);

for i=2:N-2

g(i)=0;

end

y=chase([0,C],B,[C,0],g)

y1=[1,y,1];

X=-1:h:1;

plot(X,y1);

title('有限差分法');

xlabel('输入值x');

ylabel('y曲线');

%% 输出结果及图形

y =

Columns 1 through 10

0.9096 0.8357 0.7754 0.7267 0.6879 0.6577 0.6352 0.6195 0.6103 0.6073

Columns 11 through 19

0.6103 0.6195 0.6352 0.6577 0.6879 0.7267 0.7754 0.8357 0.9096

总结:步长分别取万分之一和十分之一时对比结果如上图,采用万分之一步长时可以近似为精确解,采用十分之一步长时可以认为是近似解,步长越小,运算越多。

数值分析上机作业

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

课题八曲线拟合的最小二乘法 一、问题提出 从随机的数据中找出其规律性,给出其近似表达式的问题,在生产实践和科学实验中大量存在,通常利用数据的最小二乘法求得拟合曲线。 在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量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、查找员工的编号、姓名、部门和出生日期,如果出生日期为空值, --显示日期不详,并按部门排序输出,日期格式为yyyy-mm-dd。 --2、查找与喻自强在同一个单位的员工姓名、性别、部门和职称 --3、按部门进行汇总,统计每个部门的总工资 --4、查找商品名称为14寸显示器商品的销售情况, --显示该商品的编号、销售数量、单价和金额 --5、在销售明细表中按产品编号进行汇总,统计每种产品的销售数量和金额 --6、按客户编号统计每个客户1996年的订单总金额 --7、查找有销售记录的客户编号、名称和订单总额 --8、查找在1997年中有销售记录的客户编号、名称和订单总额 --9、查找一次销售最大的销售记录 --10、查找至少有3次销售的业务员名单和销售日期 --11、用存在量词查找没有订货记录的客户名称 --12、使用左外连接查找每个客户的客户编号、名称、订货日期、订单金额 --订货日期不要显示时间,日期格式为yyyy-mm-dd --按客户编号排序,同一客户再按订单降序排序输出 --13、查找16M DRAM的销售情况,要求显示相应的销售员的姓名、 --性别,销售日期、销售数量和金额,其中性别用男、女表示 --14、查找每个人的销售记录,要求显示销售员的编号、姓名、性别、 --产品名称、数量、单价、金额和销售日期 --15、查找销售金额最大的客户名称和总货款 --16、查找销售总额少于1000元的销售员编号、姓名和销售额 --17、查找至少销售了3种商品的客户编号、客户名称、商品编号、商品名称、数量和金额--18、查找至少与世界技术开发公司销售相同的客户编号、名称和商品编号、商品名称、数 量和金额 19、查找表中所有姓刘的职工的工号,部门,薪水 20、查找所有定单金额高于20000的所有客户编号 21、统计表中员工的薪水在40000-60000之间的人数 22、查询表中的同一部门的职工的平均工资,但只查询"住址"是"上海市"的员工

东南大学数值分析上机题答案

数值分析上机题 第一章 17.(上机题)舍入误差与有效数 设∑=-= N j N j S 2 2 11 ,其精确值为)111-23(21+-N N 。 (1)编制按从大到小的顺序1 -1 ···1-311-21222N S N +++=,计算N S 的通用 程序; (2)编制按从小到大的顺序1 21 ···1)1(111 222-++--+ -=N N S N ,计算N S 的通用程序; (3)按两种顺序分别计算210S ,410S ,610S ,并指出有效位数(编制程序时用单精度); (4)通过本上机题,你明白了什么? 解: 程序: (1)从大到小的顺序计算1 -1 ···1-311-21222N S N +++= : function sn1=fromlarge(n) %从大到小计算sn1 format long ; sn1=single(0); for m=2:1:n sn1=sn1+1/(m^2-1); end end (2)从小到大计算1 21 ···1)1(111 2 22 -++--+-= N N S N function sn2=fromsmall(n) %从小到大计算sn2 format long ; sn2=single(0); for m=n:-1:2 sn2=sn2+1/(m^2-1); end end (3) 总的编程程序为: function p203()

clear all format long; n=input('please enter a number as the n:') sn=1/2*(3/2-1/n-1/(n+1));%精确值为sn fprintf('精确值为%f\n',sn); sn1=fromlarge(n); fprintf('从大到小计算的值为%f\n',sn1); sn2=fromsmall(n); fprintf('从小到大计算的值为%f\n',sn2); function sn1=fromlarge(n) %从大到小计算sn1 format long; sn1=single(0); for m=2:1:n sn1=sn1+1/(m^2-1); end end function sn2=fromsmall(n) %从小到大计算sn2 format long; sn2=single(0); for m=n:-1:2 sn2=sn2+1/(m^2-1); end end end 运行结果:

上海电力学院设计论文

第一章主变及所用变的选择 第一节主变压器的选择 、负荷统计分析 1、 P35 ma max3max4max5max 38OOO(K^W) Q 35 max =6197.44+6197.44+3718.47+4500+4500=25113.35( KVar) S35MAX=jF32max Q35max=「380002 25113.352 =45548.66( KVA Cos 35= P35max= 38000 =0.83 45548-66 S 35MAX 考虑到负荷的同时率,35k V侧最大负荷应为: S 35MAX=S5MAX 35=45548.66 0.85=38716.36(KVA) 2、10kV 侧:

Qmax = P 8 max /cos 28 P 28max Jl00°2 /0.85? 10002 620K var C^max = . P 9 max / COS 9 P 9 max Vl5002/0.802 15002 1125K var Qomax = - P 10 max /cos 210 P 210max J15002 /0.852 __15002 929.62K var = Pl max +P2max +Ps max +Pl max +Pj max + P 6max +P 7max +P3max +P 9max +Pl 0max =2500+2000+1500+2000+2000+1000+1000+1000+1500+150016000 (KV y C 10 = Q 1max +Q max +Q ma>+Q max +Q max +Q ma>+Q ma>+Q ma>+Q max +Q 0max =1549.36+1239.49+1125+1239.49+1500+619.74+750+620+1125+929.62=10697. 7 (KVar ) _________________________ 1 . R0max Q !0max =』160002 10697.72 =19246.84 (KVA 考虑到负荷的同时率,10k V 侧最大负荷应为: S 10MAX =S I 0MAX 10 =19246.84 0.85=16359.81(KVA) 3、110kV 侧: =-(38000 0.85 16000 0.85)2 (25113.35 0.85 10697.7 0.85)2 =55076(KVA) 考虑到负荷的同时率,110k V 侧最大负荷应为: S 110MAX = S 110MAX 110=55076 0.85=46815(KVA) 、主变台数的确定 根据《35-110kV 变电所设计规范》3.1.2条规定“在有一、二级负荷的变电所宜 装设两台及以上主变压器。如变电所可由中、低压侧电力网取得足够容量的备用电源 时,可装设一台主变压器。” 、主变容量的确定: 根据《 35-110kV 变电所设计规范》 3.1.3 条规定“装有两台及以上主变压器的变 电 R 0 Cos 10 R 0 =16000 =0.83 S 10MAX 19246.84 S 110MA = ■■-■( P 35 max 35 P l0max 10 ) 2 (Q 35 max 35 Q 10 max 10

数值分析上机题目详解

第一章 一、题目 设∑ =-= N N j S 2 j 2 1 1,其精确值为)11 123(21+--N N 。 1) 编制按从大到小的顺序1 1 13112122 2-+??+-+-=N S N ,计算S N 的通用程序。 2) 编制按从小到大的顺序1 21 1)1(111222-+ ??+--+-= N N S N ,计算S N 的通用程序。 3) 按两种顺序分别计算64210,10,10S S S ,并指出有效位数。(编制程序时用单精度) 4) 通过本次上机题,你明白了什么? 二、通用程序 N=input('Please Input an N (N>1):'); AccurateValue=single((0-1/(N+1)-1/N+3/2)/2); Sn1=single(0); for a=2:N; Sn1=Sn1+1/(a^2-1); end Sn2=single(0); for a=2:N; Sn2=Sn2+1/((N-a+2)^2-1); end fprintf('The value of Sn (N=%d)\n',N); fprintf('Accurate Calculation %f\n',AccurateValue); fprintf('Caculate from large to small %f\n',Sn1); fprintf('Caculate from small to large %f\n',Sn2); disp('____________________________________________________')

三、结果 从结果可以看出有效位数是6位。 感想:可以得出,算法对误差的传播有一定的影响,在计算时选一种好的算法可以使结果更为精确。从以上的结果可以看到从大到小的顺序导致大数吃小数的现象,容易产生较大的误差,求和运算从小数到大数所得到的结果才比较准确。

C++上机考试题库答案

第1套题解析 题目一:基本操作题 【参考答案】 (1)delete [] array; (2)cout<< array[i]<< ' '; (3)MyClass obj(10); 【考点分析】 本题考查MyClass类,其中涉及构造函数、析构函数、输出语句、动态数组、语句初始化。一般考到类时就会涉及构造函数,要注意构造函数的定义方法。析构函数就是考查delete语句的用法, 其一般形式为: delete []+要释放的指针。 【解题思路】 (1)语法错误,使用delete语句删除一个指针时,直接把指针变量的名称放在delete [] 后面即可。 (2) 考查考生对输入、输出语句的运用。使用cout进行数据输出操作,一般格式为:cout<>vari。其中,var是代表一个变量,">>"称为提取运算符,该语句的含义是,将用户输入的数据保存到var中。 (3) 考查语句的初始化,我们来看MyClass类的构造函数: MyClass(int len) { array = new int[len]; arraySize = len; for(int i = 0; i < arraySize; i++) array[i] = i+1; } 注意形参len没有定义默认值,因此要想使array动态数组里依次存放1,2,3,4,5,6,7,8,9,10,就是要给len赋值为10。 【解题宝典】 delete语句是最常考的知识点,用于释放指针变量,其一般形式为:delete[]+要释放的指针。 题目二:简单应用题 【参考答案】 (1) a[num] = e; (2) Array(s) (3) a[j] = a[j - 1]; (4) a[i] = e; 【考点分析】 本题考查数组类Array以及Array的派生类SortedArray,其知识点涉及构造函数、析构函数、虚函数、动态数组。考到函数时,首先要看函数名,通过函数名称能大概知道该函数的功能,比如Array 类中的virtual void add(int e) 函数,看到这个函数我们能得到如下信息: 1) 有关键字virtual,说明该函数是虚函数,在Array类的派生类里肯定会有对add函数的定义。 2) 有关键字void,说明此函数没有返回值。 3) add的意思是添加,它的形参是int e,那么我们大概可以猜到该函数的功能是把整型数值e添加 到数组a中。 【解题思路】 (1) 考查的是虚函数virtual void add(int e)的定义,即添加一个整型数已到a[num] 中。 (2) 主要考查的是Array类的派生类SortedArray类的构造函数的定义,定义之前要对基础类初始化。 (3) 因为SortedArray类是排序类,所以数组a中的元素是要从小到大排序的。在if (e < a[i])条件下,

数值分析上机题目

数值分析上机题目 1、 分别用不动点迭代与Newton 法求解方程250x x e -+=的正根与负根。 2、 Use each of the following methods to find a solution in [0.1,1] accurate to within 10^-4 for 4326005502002010x x x x -+--= a. Bisection method b. Newton’s method c. Secant method d. Method of False Position e. Muller’s method 3、 应用Newton 法求f (x )的零点,e=10^-6,这里f (x )=x-sin (x )。 再用求重根的两种方法求f (x )的零点。 4、 应用Newton 法求f (x )的零点,e=10^-6,f(x)=x-sin(x) 再用Steffensen’s method 加速其收敛。 5、 用Neville’s 迭代差值算法,对于函数2 1 (),11125f x x x = -≤≤+进行lagrange 插值。取不同的等分数n=5,10,将区间[-1,1]n 等分,取等距节点。把f(x)和插值多项式的曲线画在同一张图上进行比较。 6、 画狗的轮廓图 7、 Use Romberg integration to compute the following approximations to ? a 、 Determine R1,1,R2,1,R3,1,R4,1and R5,1,and use these approximations to predict the value of the integral. b 、 Determine R2,2 ,R3,3 ,R4,4 ,and R5,5,and modify your prediction. c 、 Determine R6,1 ,R6,2 ,R6,3 ,R6,4 ,R6,5 and R6,6,and modify your prediction.

2010上海电力学院硕士生导师详细介绍

电力系统及其自动化专业硕士生导师介绍 (按单位及姓氏字母顺序) 硕士研究生生导师介绍——曹 炜 (3) 硕士研究生生导师介绍——淡淑恒 (3) 硕士研究生生导师介绍——符 杨 (4) 硕士研究生生导师介绍——高 亮 (4) 硕士研究生生导师介绍——顾丹珍 (5) 硕士研究生生导师介绍——胡 荣 (5) 硕士研究生生导师介绍——靳 希 (6) 硕士研究生生导师介绍——李东东 (6) 硕士研究生生导师介绍——梅柏杉 (7) 硕士研究生生导师介绍——屈克庆 (7) 硕士研究生生导师介绍——王鲁杨 (8) 硕士研究生生导师介绍——杨启平 (8) 硕士研究生生导师介绍——杨 秀 (8) 硕士研究生生导师介绍——张永健 (9) 硕士研究生生导师介绍——程启明 (9) 硕士研究生生导师介绍——韩文花 (10) 硕士研究生生导师介绍——黄福珍 (10) 硕士研究生生导师介绍——李志斌 (11) 硕士研究生生导师介绍——刘 刚 (11) 硕士研究生生导师介绍——吕学勤 (12) 硕士研究生生导师介绍——米 阳 (12) 硕士研究生生导师介绍——钱 虹 (12) 硕士研究生生导师介绍——徐耀良 (13) 硕士研究生生导师介绍——薛 阳 (13) 硕士研究生生导师介绍——杨 平 (14) 硕士研究生生导师介绍——杨旭红 (14)

硕士研究生生导师介绍——叶建华 (14) 硕士研究生生导师介绍——张国伟 (15) 硕士研究生生导师介绍——韦 刚 (15) 硕士研究生生导师介绍——曹家麟 (16) 硕士研究生生导师介绍——张 浩 (16) 硕士研究生生导师介绍——杜成刚 (17) 硕士研究生生导师介绍——姜益民 (17) 硕士研究生生导师介绍——张 宇 (18) 硕士研究生生导师介绍——曹以龙 (18) 硕士研究生生导师介绍——高幼年 (19) 硕士研究生生导师介绍——耿新民 (19) 硕士研究生生导师介绍——王 勇 (19) 硕士研究生生导师介绍——唐 忠 (19) 硕士研究生生导师介绍——杨俊杰 (20) 硕士研究生生导师介绍——朱 武 (21) 硕士研究生生导师介绍——王淮生 (21) 硕士研究生生导师介绍——朱凤林 (22) 硕士研究生生导师介绍——施泉生 (22)

数值计算方法I上机实验考试题

数值计算方法I 上机实验考试题(两题任选一题) 1.小型火箭初始质量为900千克,其中包括600千克燃料。火箭竖直向上发射时燃料以15千克/秒的速率燃烧掉,由此产生30000牛顿的恒定推力.当燃料用尽时引擎关闭。设火箭上升的整个过程中,空气阻力与速度平方成正比,比例系数为0.4(千克/米).重力加速度取9.8米/秒2. A. 建立火箭升空过程的数学模型(微分方程); B. 求引擎关闭瞬间火箭的高度、速度、加速度,及火箭到达最高点的时间和高度. 2.小型火箭初始质量为1200千克,其中包括900千克燃料。火箭竖直向上发射时燃料以15千克/秒的速率燃烧掉,由此产生40000牛顿的恒定推力.当燃料用尽时引擎关闭。设火箭上升的整个过程中,空气阻力与速度平方成正比,比例系数记作k ,火箭升空过程的数学模型为 0)0(,0,01222==≤≤-+?? ? ??-==t dt dx x t t mg T dt dx k dt x d m 其中)(t x 为火箭在时刻t 的高度,m =1200-15t 为火箭在时刻t 的质量,T (=30000牛顿)为推力,g (=9.8米/秒2)为重力加速度, t 1 (=900/15=60秒)为引擎关闭时刻. 今测得一组数据如下(t ~时间(秒),x ~高度(米),v ~速度(米/秒)): 现有两种估计比例系数k 的方法: 1.用每一个数据(t,x,v )计算一个k 的估计值(共11个),再用它们来估计k 。 2.用这组数据拟合一个k . 请你分别用这两种方法给出k 的估计值,对方法进行评价,并且回答,能否认为空气阻力系数k=0.5(说明理由).

《数值计算方法》上机实验报告

《数值计算方法》上机实验报告华北电力大学 实验名称数值il?算方法》上机实验课程名称数值计算方法专业班级:电力实08学生姓名:李超然学号:200801001008 成绩: 指导教师:郝育黔老师实验日期:2010年04月华北电力大学实验报告数值计算方法上机实验报吿一. 各算法的算法原理及计算机程序框图1、牛顿法求解非线性方程 *对于非线性方程,若已知根的一个近似值,将在处展开成一阶 xxfx ()0, fx ()xkk 泰勒公式 "f 0 / 2 八八,fxfxfxxxxx 0 0 0 0 0 kkkk2! 忽略高次项,有 ,fxfxfxxx 0 ()()(),,, kkk 右端是直线方程,用这个直线方程来近似非线性方程。将非线性方程的 **根代入,即fx ()0, X ,* fxfxxx 0 0 0 0, ,, kkk fx 0 fx 0 0,

解出 fX 0 *k XX,, k' fx 0 k 水将右端取为,则是比更接近于的近似值,即xxxxk, Ik, Ik fx ()k 八XX, Ikk* fx()k 这就是牛顿迭代公式。 ,2,计算机程序框图:,见, ,3,输入变量、输出变量说明: X输入变量:迭代初值,迭代精度,迭代最大次数,\0 输出变量:当前迭代次数,当前迭代值xkl ,4,具体算例及求解结果: 2/16 华北电力大学实验报吿 开始 读入 l>k /fx()0?,0 fx 0 Oxx,,01* fx ()0 XX,,,?10 kk, ,1,kN, ?xx, 10 输出迭代输出X输出奇异标志1失败标志

,3,输入变量、输出变量说明: 结束 例:导出计算的牛顿迭代公式,并il ?算。(课本P39例2-16) 115cc (0), 求解结果: 10. 750000 10.723837 10. 723805 10. 723805 2、列主元素消去法求解线性方程组,1,算法原理: 高斯消去法是利用现行方程组初等变换中的一种变换,即用一个不为零的数乘 -个 方程后加只另一个方程,使方程组变成同解的上三角方程组,然后再自下而上 对上三角 3/16 华北电力大学实验报告方程组求解。 列选主元是当高斯消元到第步时,从列的以下(包括)的各元素中选出绝 aakkkkkk 对值最大的,然后通过行交换将其交换到的位置上。交换系数矩阵中的 两行(包括常ekk 数项),只相当于两个方程的位置交换了,因此,列选主元不影响求解的结 ,2,计算机程序框图:,见下页, 输入变量:系数矩阵元素,常向量元素baiji 输出变量:解向量元素bbb,,12n

c语言上机考试训练题库及答案

上机考试习题集 1.编写程序,一次输入5个学生的3门课成绩,每输入一个学生的3门成绩后,立即统计并输出该学生的总分和平均分。 #include "stdio.h" void main() { int score[5][3], i,j; float sum[5],average[5]; printf("请分别输入三个学生的成绩:\n"); for(i=0;i<5;i++) { sum[i]=0; for(j=0;j<3;j++) {scanf("%d",&score[i][j]); average[i]=0; sum[i]+=score[i][j]; average[i]=sum[i]/5; } } for(i=0;i<5;i++) printf("第%d个学生的总分为:%f,平均成绩为:%f\n",i+1,sum[i],average[i]); } 2 、编写程序,提示用户从键盘输入一个double类型的数,使该数保留小数点后两位,对第三位小数进行四舍五入处理,然后在显示器上输出此数,以便验证处理是否正确。 #include #include double rounding(double x,int n); void main() { double x,x1; int n; printf("请输入一个浮点数:\n"); scanf("%lf",&x); printf("请输入给定的小数位:\n"); scanf("%d",&n); x1=rounding(x,n); printf("圆整后的数为:\n%.*lf\n",n,x1); } double rounding(double x,int n)

东南大学《数值分析》-上机题

数值分析上机题1 设2 21 1N N j S j ==-∑ ,其精确值为1311221N N ??-- ?+?? 。 (1)编制按从大到小的顺序222 111 21311 N S N = +++---,计算N S 的通用程序。 (2)编制按从小到大的顺序22 21111(1)121 N S N N =+++----,计算N S 的通用程序。 (3)按两种顺序分别计算210S ,410S ,610S ,并指出有效位数。(编制程序时用单精度) (4)通过本上机题,你明白了什么? 程序代码(matlab 编程): clc clear a=single(1./([2:10^7].^2-1)); S1(1)=single(0); S1(2)=1/(2^2-1); for N=3:10^2 S1(N)=a(1); for i=2:N-1 S1(N)=S1(N)+a(i); end end S2(1)=single(0); S2(2)=1/(2^2-1); for N=3:10^2 S2(N)=a(N-1); for i=linspace(N-2,1,N-2) S2(N)=S2(N)+a(i); end end S1表示按从大到小的顺序的S N S2表示按从小到大的顺序的S N 计算结果

通过本上机题,看出按两种不同的顺序计算的结果是不相同的,按从大到小的顺序计算的值与精确值有较大的误差,而按从小到大的顺序计算的值与精确值吻合。从大到小的顺序计算得到的结果的有效位数少。计算机在进行数值计算时会出现“大数吃小数”的现象,导致计算结果的精度有所降低,我们在计算机中进行同号数的加法时,采用绝对值较小者先加的算法,其结果的相对误差较小。

上海电力学院 研究生就业情况

上海电力学院第一届电力研究生大概四十多人,基本上都是没有背景没有关系,那些整天叫着进系统一定要靠关系的可以闭上嘴巴了,进不进得了系统得看你读的什么学校。到目前为止,除了两个签了电厂,一个上海现代建筑设计集团公司,三个中广核设计公司,有两个师姐准备出国之外,其他的基本上都进了局子。电力学院的学生还是像官方统计的一样,电自专业80%是进系统的,这点没错,像第一届研究生,浙江电力公司要了14个,杭州局1个,其他分布在嘉兴、绍兴、湖州、宁波、台州、温州各市。签杭州局那师兄是广西人,杭州读的本科,没有任何背景和关系,反而有一个师姐有点关系想托人进去,但是杭州局人家就是不要,最后连宁波也没去成,现在在等上海电力。其他,安徽去了几个,福建来招的时候好像是除了厦门和福州局,其他只要愿意去都可以签,而且限制也不多。广东中山局1个。四川超高压局3个,要求很简单,男的,愿意去就可以签。最近来学校开过专场的电力系统单位有浙江电力公司、山东电力集团、山东电力设计院、福建电力公司、安徽电力公司、广西电网、四川超高压、中广核、国核、上海电力公司,北京电力公司,五大发电集团各大大小小的电厂、核电站我就不一一列举了。 读这个学校,其他单位其他行业好像很少有人考虑,像上海市政工程设计研究总院、中船重工703研究所(中国船舶科学研究院)来招人,没听说哪个师兄去应聘,所以在别的行业基本上没有多少电力学院的学生。学校在华东地区的人脉不是一般的好,因为以前就是隶属华东电业局主管,所以跟上海地区的电力系统关系不是一般的亲密,像上海电力公司每年新近员工40% 来自该校,还有一些合作单位,比如华东电力试验研究院,也跟学校签订合作协议会招收部分研究生。来学校培训的电力系统单位也不是一般的多。 在报考研究生考试前要全方位的了解你所要报考的专业还有最重要的择校问题,对于跨考的同学来说,报考学校的信息是重中之重,一定要找专业的辅导机构来帮助你完成考前的信息搜集,备考的复习计划,以及考后的复试准备等,如果需要调剂这些机构也可以帮你了解到最全的信息,像北京的爱考等!!

(完整版)哈工大-数值分析上机实验报告

实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。 前言:(目的和意义) 掌握二分法与Newton法的基本原理和应用。 数学原理: 对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。 对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b)<0,且f(x)在[a,b]内仅有一个实根x*,取区间中点c,若,则c恰为其根,否则根据f(a)f(c)<0是否成立判断根在区间[a,c]和[c,b]中的哪一个,从而得出新区间,仍称为[a,b]。重复运行计算,直至满足精度为止。这就是二分法的计算思想。

Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式 产生逼近解x*的迭代数列{x k},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 其中r为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x); y=-x*x-sin(x); 写成如上形式即可,下面给出主程序。 二分法源程序: clear %%%给定求解区间 b=1.5; a=0;

%%%误差 R=1; k=0;%迭代次数初值 while (R>5e-6) ; c=(a+b)/2; if f12(a)*f12(c)>0; a=c; else b=c; end R=b-a;%求出误差 k=k+1; end x=c%给出解 Newton法及改进的Newton法源程序:clear %%%% 输入函数 f=input('请输入需要求解函数>>','s') %%%求解f(x)的导数 df=diff(f);

计算机二级c++上机考试题库

所属语言:C++ 试卷总分:200分 共有题型:5种 一、填空共20题(共计20分) 第1题(1.0分) 假设变量a,b均为整型,表达式 (a=5,b=2,a>b?a++:b++,a+b) 的值是【1】. 答案: =======(答案1)======= 8 第2题(1.0分) 若有以下数组a,数组元素:a[0]~a[9],其值为 9 4 12 8 2 10 7 5 1 3 该数组的元素中,数值最大的元素的下标值是【1】. 答案: =======(答案1)======= 2 第3题(1.0分) 下面程序段的输出结果是【1】. int a=12; a=a&0377;pritnf("%o\n",a);

答案: =======(答案1)======= 14 第4题(1.0分) 若输入字符串:abcde<回车>,则以下while循环体将执行【1】次. While((ch=getchar())=='e') printf("*"); 答案: =======(答案1)======= 第5题(1.0分) 将数组a的首地址赋给指针变量p的语句是【1】. 答案: =======(答案1)======= p=a; 第6题(1.0分) C语言把文件看作是一个【1】的序列. 答案: =======(答案1)======= 字符 =========或=========

字节 第7题(1.0分) 静态变量和外部变量的初始化是在【1】阶段完成的,而自动变量的赋值是 在【2】时进行的. 答案: =======(答案1)======= 编译 =======(答案2)======= 函数调用 第8题(1.0分) 若有定义:int a[3][2]={2,4,6,8,10,12};,则*(a[1]+1)的值是【1】. 答案: =======(答案1)======= 8

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

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 05dx x x I n n , (1) 由递推公式n I I n n 1 51+ -=-,从I 0=0.1824, 0=0.1823I 出发,计算20I ; (2) 20=0I ,20=10000I , 用n I I n n 51 5111+- =--,计算0I ; (3) 分析结果的可靠性及产生此现象的原因(重点分析原因)。 答:第一个算法可得出 e 0=|I 0?I 0 ?| e n =|I n ?I n ?|=5n |e 0| 易知第一个算法每一步计算都把误差放大了5倍,n 次计算后更是放大了5n 倍,可靠性低。 第二个算法可得出 e n =|I n ?I n ?| e 0=(15 )n |e n | 可以看出第二个算法每一步计算就把误差缩小5倍,n 次后缩小了5n 倍,可靠性高。

2. 求方程0210=-+x e x 的近似根,要求41105-+?<-k k x x ,并比较计算量。 (1) 在[0,1]上用二分法; 计算根与步数程序: fplot(@(x) exp(x)+10*x-2,[0,1]); grid on; syms x; f=exp(x)+10*x-2; [root,n]=EFF3(f,0,1); fprintf('root=%6.8f ,n=%d \n',root,n); 计算结果显示: root=0.09057617 ,n=11 (2) 取初值00=x ,并用迭代10 21 x k e x -=+;

(3) 加速迭代的结果; (4) 取初值00 x ,并用牛顿迭代法;

数值分析上机题参考答案.docx

如有帮助欢迎下载支持 数值分析上机题 姓名:陈作添 学号: 040816 习题 1 20.(上机题)舍入误差与有效数 N 1 1 3 1 1 设 S N ,其精确值为 。 2 2 2 N N 1 j 2 j 1 (1)编制按从大到小的顺序 1 1 1 ,计算 S 的通用程序。 S N 1 32 1 N 2 1 N 2 2 (2)编制按从小到大的顺序 1 1 1 ,计算 S 的通用程序。 S N 1 (N 1)2 1 22 1 N N 2 (3)按两种顺序分别计算 S 102 , S 104 , S 106 ,并指出有效位数。 (编制程序时用单精度) (4)通过本上机题,你明白了什么? 按从大到小的顺序计算 S N 的通用程序为: 按从小到大的顺序计算 S N 的通用程序为: #include #include float sum(float N) float sum(float N) { { float j,s,sum=0; float j,s,sum=0; for(j=2;j<=N;j++) for(j=N;j>=2;j--) { { s=1/(j*j-1); s=1/(j*j-1); sum+=s; sum+=s; } } return sum; return sum; } } 从大到小的顺序的值 从小到大的顺序的值 精确值 有效位数 从大到小 从小到大 0.740049 0.74005 0.740049 6 5 S 102 0.749852 0.7499 0.7499 4 4 S 104 0.749852 0.749999 0.749999 3 6 S 106 通过本上机题, 看出按两种不同的顺序计算的结果是不相同的, 按从大到小的顺序计算 的值与精确值有较大的误差, 而按从小到大的顺序计算的值与精确值吻合。 从大到小的顺序 计算得到的结果的有效位数少。 计算机在进行数值计算时会出现“大数吃小数”的现象,导 致计算结果的精度有所降低, 我们在计算机中进行同号数的加法时, 采用绝对值较小者先加 的算法,其结果的相对误差较小。

计算机上机考试试题

计算机职称考试上机操作试题 一、Windows部分(15分) 1.在D盘根目录上建立考试文件夹,名称为:单位+学号+姓名;在考试文件夹再建立4个文件夹,分别命名为某某windows试题、某某word考试试题、某某excel考试试题、某某PPT考试试题,以下项目的操作分别保存在相应的文件夹下。(2分) 2.在windows试题文件夹下新建一个文本文档;打开文版文档,用黑体字输入“欢迎您”,字号20。(2分) 3.请将windows试题文件夹下的123.doc文件重命名为A-01.doc,设置其属性为:只读。(3分) 4. 请将windows试题文件夹下的123.ppt文件彻底删除,并将删除后的页面截图,粘贴至画图软件中,命名为:“删除后图片.jpg”,并存至windows试题文件夹下。(3分) 二、Word操作分(30分) 1、录入下列文字,(5分) 满江红 岳飞 怒发冲冠,凭阑处,潇潇雨歇。抬望眼,仰天长啸,壮怀激烈。三十年功名尘与土,八千里路云和月。莫等闲,白了少年头,空悲切。靖康耻,犹未雪;臣子恨,何时灭?驾长车,踏破贺兰山缺。壮志饥餐胡虏肉,笑谈渴饮匈奴血。待从头,收拾旧山河朝天阙 2.按以下操作要求: 1)设置字体:第1行,黑体;第2行,楷体;正文,隶书;(2分) 2)设置字号:第1行,小二;第2行,四号;正文,三号;(2分)

3)设置字形:第1行,粗体;第2行,下划线(波浪线)(2分) 4)设置对齐方式:第2行,居中。(2分) 5)设置段落缩进:所有段落左右各缩进1 cm (2分) 6)设置段落间距:第1行,段前12磅;第2行,段前段后各3磅;(2分) 7)将正文分为两栏格式,加分隔线(2分) 8)给“满江红”一行添加底纹,图案式样“12.5%”(2分)9)给文档添加页眉文字:“宋词欣赏·第1页”(2分) 2、设置下列表格(9分) 成绩单 任务与要求: (1)表格上方增加标题“成绩单”,楷体、小二字号,水平居中(3分) (2)按样文所示设置边框(3分) (3)表格第2行添加灰度为20%的底纹(3分) 三、Excel部分(每项5分,共30分) 新建一工作薄,输入以下数据(5分)

东南大学-数值分析上机题作业-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程序

相关文档
最新文档