文档库 最新最全的文档下载
当前位置:文档库 › 数值线性代数第二版徐树方高立张平文上机习题第一章实验报告

数值线性代数第二版徐树方高立张平文上机习题第一章实验报告

数值线性代数第二版徐树方高立张平文上机习题第一章实验报告
数值线性代数第二版徐树方高立张平文上机习题第一章实验报告

上机习题

1.先用你所熟悉的的计算机语言将不选主元和列主元Gauss 消去法编写成通用的子程序;然后用你编写的程序求解84阶方程组;最后将你的计算结果与方程的精确解进行比较,并就此谈谈你对Gauss 消去法的看法。 Sol :

(1)先用matlab 将不选主元和列主元Gauss 消去法编写成通用的子程序,得到P U L ,,: 不选主元Gauss 消去法:[])(,A GaussLA U L =得到U L ,满足LU A = 列主元Gauss 消去法:[])(,,A GaussCol P U L =得到P U L ,,满足LU PA = (2)用前代法解()Pb or b Ly =,得y

用回代法解y Ux =,得x

求解程序为()P U L b A Gauss x ,,,,=(P 可缺省,缺省时默认为单位矩阵) (3)计算脚本为ex1_1

代码

%算法1.1.3(计算三角分解:Gauss 消去法) function [L,U]=GaussLA(A) n=length(A); for k=1:n-1

A(k+1:n,k)=A(k+1:n,k)/A(k,k);

A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n); end

U=triu(A); L=tril(A);

L=L-diag(diag(L))+diag(ones(1,n)); end

%算法1.2.2(计算列主元三角分解:列主元Gauss 消去法) function [L,U,P]=GaussCol(A) n=length(A); for k=1:n-1

[s,t]=max(abs(A(k:n,k))); p=t+k-1;

temp=A(k,1:n);

A(k,1:n)=A(p,1:n); A(p,1:n)=temp; u(k)=p;

if A(k,k)~=0

A(k+1:n,k)=A(k+1:n,k)/A(k,k);

A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n); else

break;

end

end

L=tril(A);U=triu(A);L=L-diag(diag(L))+diag(ones(1,n));

P=eye(n);

for i=1:n-1

temp=P(i,:);

P(i,:)=P(u(i),:);

P(u(i),:)=temp;

end

end

%高斯消去法解线性方程组

function x=Gauss(A,b,L,U,P)

if nargin<5

P=eye(length(A));

end

n=length(A);

b=P*b;

for j=1:n-1

b(j)=b(j)/L(j,j);

b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j);

end

b(n)=b(n)/L(n,n);

y=b;

for j=n:-1:2

y(j)=y(j)/U(j,j);

y(1:j-1)=y(1:j-1)-y(j)*U(1:j-1,j);

end

y(1)=y(1)/U(1,1);

x=y;

end

ex1_1

clc;clear;

%第一题

A=6*eye(84)+diag(8*ones(1,83),-1)+diag(ones(1,83),1);

b=[7;15*ones(82,1);14];

%不选主元Gauss 消去法 [L,U]=GaussLA(A); x1_1=Gauss(A,b,L,U); %列主元Gauss 消去法 [L,U,P]=GaussCol(A); x1_2=Gauss(A,b,L,U,P); %解的比较

subplot(1,3,1);plot(1:84,x1_1,'o-');title('Gauss'); subplot(1,3,2);plot(1:84,x1_2,'.-');title('PGauss');

subplot(1,3,3);plot(1:84,ones(1,84),'*-');title('精确解');

结果为(其中Gauss 表示不选主元的Gauss 消去法,PGauss 表示列主元Gauss

消去法,精确解为[]'

?8411,,1Λ):

由图,显然列主元消去法与精确解更为接近,不选主元的Gauss 消去法误差比列主元消去法大,且不如列主元消去法稳定。

Gauss 消去法重点在于A 的分解过程,无论A 如何分解,后面两步的运算过程不变。

2.先用你所熟悉的的计算机语言将平方根法和改进的平方根法编写成通用的子程序;然后用你编写的程序求解对称正定方程组Ax=b 。 Sol :

(1)先用matlab 将平方根法和改进的平方根法编写成通用的子程序,得到L ,(D): 平方根法:L=Cholesky(A)

改进的平方根法:[L,D]=LDLt(A) (2)求解得b Ly =

求解得y x DL or y x L T

T

==

8

Gauss

50100

PGauss

精确解

求解程序为x=Gauss(A,b,L,U,P)(T

T DL U or L U == ,P 此时缺省,缺省时默认为单位矩阵)

(3)计算脚本为ex1_2 代码

%算法1.3.1(计算Cholesky 分解:平方根法) function L=Cholesky(A) n=length(A); for k=1:n

A(k,k)=sqrt(A(k,k));

A(k+1:n,k)=A(k+1:n,k)/A(k,k); for j=k+1:n

A(j:n,j)=A(j:n,j)-A(j:n,k)*A(j,k); end end

L=tril(A); end

%计算LDL ‘分解:改进的平方根法 function [L,D]=LDLt(A) n=length(A); for j=1:n

for i=1:n

v(i,1)=A(j,i)*A(i,i); end

A(j,j)=A(j,j)-A(j,1:j-1)*v(1:j-1,1);

A(j+1:n,j)=(A(j+1:n,j)-A(j+1:n,1:j-1)*v(1:j-1,1))/A(j,j); end

L=tril(A);

D=diag(diag(A));

L=L-diag(diag(L))+diag(ones(1,n)); end

%高斯消去法解线性方程组

function x=Gauss(A,b,L,U,P) if nargin<5

P=eye(length(A)); end

n=length(A); b=P*b;

for j=1:n-1

b(j)=b(j)/L(j,j);

b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j); end

b(n)=b(n)/L(n,n);

y=b;

for j=n:-1:2

y(j)=y(j)/U(j,j);

y(1:j-1)=y(1:j-1)-y(j)*U(1:j-1,j);

end

y(1)=y(1)/U(1,1);

x=y;

end

ex1_2

%第二题

%第一问

A=10*eye(100)+diag(ones(1,99),-1)+diag(ones(1,99),1); b=round(100*rand(100,1));

%平方根法

L=Cholesky(A);

x1_2_1_1=Gauss(A,b,L,L');

%改进的平方根法

[L,D]=LDLt(A);

x1_2_1_2=Gauss(A,b,L,D*L');

%第二问

A=hilb(40);

b=sum(A);

b=b';

%平方根法

L=Cholesky(A);

x1_2_2_1=Gauss(A,b,L,L');

%改进的平方根法

[L,D]=LDLt(A);

x1_2_2_2=Gauss(A,b,L,D*L');

结果分别为

x1_2_1_1 =

7.2586

8.4143

-0.4013

8.5984

5.4177

0.2249

2.3336

8.2772 8.7890 -0.1667 8.8784 8.3824 3.2978 7.6401 0.3014 3.3457 8.2418 6.2368 8.3906 5.8575 -0.9656 7.7981 7.9842

5.3601

6.4143 6.4966 2.6201 6.3024 0.3563

7.1342 -0.6985 2.8506 0.1927 0.2227 7.5801 5.9762 1.6583 9.4409 -1.0677 4.2362 2.7060

6.7037

7.2570 0.7265 4.4778 3.4959 5.5637

5.8675

6.7614 1.5180

5.9002 0.9397 0.7031 4.0294 9.0032 1.9382 5.6150 0.9120 7.2652 1.4360

4.3749

5.8146

7.4791

8.3942 4.5789

0.8169

1.2523 1.6603 8.1448 0.8915 7.9401 0.7075 8.9849

2.4437 1.5777 1.7790 5.6319

3.9018 2.3506 7.5925

4.7245 4.1627 8.6483 1.3543 6.8087 6.5589 2.6027

5.4140 0.2577 0.0090 4.6522

6.4685 8.6626

5.2856 4.2385 -0.6706

3.4671 x1_2_1_2 =

7.2586

8.4143 -0.4013 8.5984 5.4177 0.2249 2.3336 4.4389 8.2772 8.7890 -0.1667 8.8784 8.3824 3.2978 7.6401 0.3014 3.3457 8.2418 6.2368 8.3906 5.8575 -0.9656 7.7981 7.9842

5.3601

6.4143 6.4966 2.6201 6.3024 0.3563

7.1342 -0.6985 2.8506 0.1927 0.2227 7.5801 5.9762

9.4409 -1.0677 4.2362 2.7060

6.7037

7.2570 0.7265 4.4778 3.4959 5.5637

5.8675

6.7614 1.5180 6.0582 5.9002 0.9397 0.7031 4.0294 9.0032 1.9382 5.6150 0.9120

7.2652 1.4360

4.3749

5.8146

7.4791

8.3942 4.5789

0.8169

1.2523 1.6603 8.1448 0.8915 7.9401 0.7075 8.9849

2.4437 1.5777 1.7790 5.6319

3.9018 2.3506

4.7245 4.1627 8.6483 1.3543 6.8087 6.5589 2.6027

5.4140 0.2577 0.0090 4.6522

6.4685 8.6626 -0.0948 5.2856 4.2385 -0.6706

3.4671

x1_2_2_1 =

1.0e+07 *

0.0000 -0.0000 0.0001 -0.0004 -0.0014 0.0424 -0.2980 1.1419 -2.7335 4.2539 -4.3018 2.7733 -1.1989 0.5406 -0.3688 0.3285 -0.4438 0.4621 -0.2513 0.0565 0.0000

0.0071 -0.0027 -0.0031 0.0036 -0.0019 0.0009 0.0002 -0.0002 -0.0006 0.0004 0.0001 -0.0002 0.0001 0.0000 -0.0000 0.0000 -0.0000 -0.0000 x1_2_2_2 =

1.0000 1.0000

0.9998

1.0011 1.0064

0.8681

1.8034 -1.5693 5.5763 -

2.5315 -1.7693 10.4883 -6.2807 0.5882 -4.7157 22.8299 -19.9134 8.7032 10.3265 -25.2140 10.0282 12.3882 -1.9425

-12.0552

-0.5803

-12.4791

8.5652

9.8724

-10.5502

16.3871

-5.8132

13.4216

11.1767

-64.3154

46.3837

12.6957

-21.7556

12.1204

-1.9342

3.用第1题的程序求解第2题的两个方程组并比较所有的计算结果,然后评价各个方法的优劣。

Sol:

Gauss表示不选主元的Gauss消去法,PGauss表示列主元Gauss消去法。

计算脚本为:

%第三题

%第一问

A=10*eye(100)+diag(ones(1,99),-1)+diag(ones(1,99),1);

b=round(100*rand(100,1));

%不选主元Gauss消去法

[L,U]=GaussLA(A);

x1_3_1_1=Gauss(A,b,L,U);

%列主元Gauss消去法

[L,U,P]=GaussCol(A);

x1_3_1_2=Gauss(A,b,L,U,P);

%第二问

A=hilb(40);

b=sum(A);

b=b';

%不选主元Gauss消去法

[L,U]=GaussLA(A);

x1_3_2_1=Gauss(A,b,L,U);

%列主元Gauss消去法

[L,U,P]=GaussCol(A);

x1_3_2_2=Gauss(A,b,L,U,P);

ex1_2;

y1=1:100;y2=1:40;

subplot(4,2,1);plot(y1,x1_2_1_1);title('平方根法1');

subplot(4,2,2);plot(y1,x1_2_1_2);title('改进的平方根法1'); subplot(4,2,3);plot(y1,x1_3_1_1);title('Gauss1'); subplot(4,2,4);plot(y1,x1_3_1_2);title('PGauss1'); subplot(4,2,5);plot(y2,x1_2_2_1);title('平方根法2');

subplot(4,2,6);plot(y2,x1_2_2_2);title('改进的平方根法2'); subplot(4,2,7);plot(y2,x1_3_2_1);title('Gauss2'); subplot(4,2,8);plot(y2,x1_3_2_2);title('PGauss2');

平方根法和改进的平法根法计算量更小,计算过程稳定,但使用范围窄; 不选主元和列主元的Gauss 消去法计算量较大,但适用范围广。

例题1.3.2

考虑对称正定线性方程组Ax=b ,其中向量b 是随机生成的,其元素是服从区间[0,1]上均匀分布的随机数,矩阵T

LL A ,这里L 是随机生成的一个下三角矩阵,其元素是服从区间[1,2]上均匀分布的随机数。

对n=10,20,...,500分别应用Gauss 消去法、列主元Gauss 消去法和Cholesky 分解法求解该方程组,画出它们所用的CPU 时间,其中“Gauss ”表示Gauss 消去法、“PGauss ”表示列主元Gauss 消去法,“Cholesky ”表示Cholesky 分解法。 Sol :

经试验知,对应课本上图1.1所示的Cholesky 分解法应为改进后的Cholesky 分解法即T

LDL

平方根法1

改进的平方根法1

Gauss1

PGauss1

7

平方根法

2

改进的平方根法

2

Gauss2

PGauss2

分解。

此处所用的CPU时间利用cputime测量。计算脚本为eg1_3_2

clc;clear;

for i=1:50;

n=i*10;

b=rand(n,1);

L=tril(unifrnd(1,2,n,n));

A=L*L';

t1(i)=cputime;

[L1,U1]=GaussLA(A);

x1=Gauss(A,b,L1,U1);

t1(i)=cputime-t1(i);

t2(i)=cputime;

[L2,U2,P2]=GaussCol(A);

x2=Gauss(A,b,L2,U2,P2);

t2(i)=cputime-t2(i);

t3(i)=cputime;

L3=LDLt(A);

x3=Gauss(A,b,L3,L3');

t3(i)=cputime-t3(i);

end

N=10:10:500;

plot(N,t1,'o-',N,t2,'.-',N,t3,'*-'); legend('Gauss','PGauss','Cholesky');结果为

线性代数典型例题

线性代数 第一章 行列式 典型例题 一、利用行列式性质计算行列式 二、按行(列)展开公式求代数余子式 已知行列式412343 344 615671 12 2 D = =-,试求4142A A +与4344A A +. 三、利用多项式分解因式计算行列式 1.计算221 1231223131 5 1319x D x -= -. 2.设()x b c d b x c d f x b c x d b c d x = ,则方程()0f x =有根_______.x = 四、抽象行列式的计算或证明 1.设四阶矩阵234234[2,3,4,],[,2,3,4]A B αγγγβγγγ==,其中234,,,,αβγγγ均为四维列向量,且已知行列式||2,||3A B ==-,试计算行列式||.A B + 2.设A 为三阶方阵,*A 为A 的伴随矩阵,且1 ||2 A = ,试计算行列式1*(3)22.A A O O A -??-??? ?

3.设A 是n 阶(2)n ≥非零实矩阵,元素ij a 与其代数余子式ij A 相等,求行列式||.A 4.设矩阵210120001A ?? ??=?? ????,矩阵B 满足**2ABA BA E =+,则||_____.B = 5.设123,,ααα均为3维列向量,记矩阵 123123123123(,,),(,24,39)A B αααααααααααα==+++++ 如果||1A =,那么||_____.B = 五、n 阶行列式的计算 六、利用特征值计算行列式 1.若四阶矩阵A 与B 相似,矩阵A 的特征值为 1111 ,,,2345 ,则行列式1||________.B E --= 2.设A 为四阶矩阵,且满足|2|0E A +=,又已知A 的三个特征值分别为1,1,2-,试计算行列式*|23|.A E + 第二章 矩阵 典型例题 一、求逆矩阵 1.设,,A B A B +都是可逆矩阵,求:111().A B ---+

数值代数实验报告

1.谈谈你对该算法的理解:(简单谈一下你是如何理解该算法的?) 先对84阶矩阵进行LU分解,通过Gauss消元法 对下三角形方程组利用前代法解出y,在对上三角方程组 用回代法解出x…. 2.实验内容 function [ L,U ] = LUfac( A ) for k=1:n-1 A(k+1:n,k)=A(k+1:n,k)/A(k,k); A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n); end L=tril(A,0); for i=1:n L(i,i)=1; end U=triu(A,0); End //进行LU分解 function [ b ] = TSL( L,b ) n=size(L,1); for j=1:n-1 b(j)=b(j)/L(j,j); b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j); end b(n)=b(n)/L(n,n); end //利用前代法解出y function [ b ] = TSU( U,b ) n=size(U,1); for j=n:-1:2 b(j)=b(j)/U(j,j); b(1:j-1)=b(1:j-1)-b(j)*U(1:j-1,j); end b(1)=b(1)/U(1,1); end //利用回代法解出x

主函数程序 A=eye(84); A=6*A; for i=2:84 A(i,i-1)=8; A(i-1,i)=1; End //生成84阶的矩阵A b=ones(84,1); b=b*15; b(1)=7; b(84)=14; [L,U]=LUfac(A);//调用函数LUfac对矩阵A进行分解 y=TSL(L,b);//调用函数TSL求解y x=TSU(U,y); //调用函数TSU求解X 经过matlab…有 x’ ans = 1.0e+008 * Columns 1 through 7 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 8 through 14 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 15 through 21 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 22 through 28 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 29 through 35 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 36 through 42 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 43 through 49 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 50 through 56 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 Columns 57 through 63

用MATLAB解决线性代数问题实验报告

实验三使用MATLAB解决线性代数问题学院:数计学院班级:1003班姓名:黄晓丹学号:1051020144 实验目的: 学习MATLAB有关线性代数运算的指令,主要学习运用MATLAB解决矩阵除法,线性方程组的通解,矩阵相似 对角化问题,以及解决投入产出分析等应用问题。 实验内容: 矩阵转置:A=[1 2;3 4];B=[4 3;2 1]; >> A',B' ans = 1 3 2 4 ans = 4 3 3 1 矩阵加减:A-B ans= -3 -1 1 3 矩阵乘法:A*B,A.*B(数组乘法)||比较矩阵乘法与数组乘法的区别ans= 8 5 20 13 ans= 4 6 6 4 矩阵除法:A\B,B./A ans=

-6 -5 5 4 ans= 4 1.5 0.6667 0.25 特殊矩阵生成:zeros(m,n)||生成m行n列的矩阵 ones(m,n)||生成m行n列的元素全为一的矩阵 eye(n)||生成n阶单位矩阵 rand(m,n)||生成m行n列[0 ,1]上均匀分布随 机数矩阵 zeros(2,3) ans = 0 0 0 0 0 0 >> ones(3,3) ans = 1 1 1 1 1 1 1 1 1 >> eye(3)

ans = 1 0 0 0 1 0 0 0 1 >> rand(2,4) ans = Columns 1 through 3 0.9501 0.6068 0.8913 0.2311 0.4860 0.7621 Column 4 0.4565 0.0185 矩阵处理:trace(A)||返回矩阵的迹 diag(A)||返回矩阵对角线元素构成的向量 tril(A)||提取矩阵的下三角部分 triu(A)||提取矩阵的上三角部分 flipud(A)||矩阵上下翻转 fliplr(A)||矩阵左右翻转 reshape(A,m,n)||将矩阵的元素重排成m行n列矩阵A=[1 2 3;4 5 6;7 8 9]; >> t=trace(A),d=diag(A),u=triu(A)

计算方法上机实验报告

《计算方法》上机实验报告 班级:XXXXXX 小组成员:XXXXXXX XXXXXXX XXXXXXX XXXXXXX 任课教师:XXX 二〇一八年五月二十五日

前言 通过进行多次的上机实验,我们结合课本上的内容以及老师对我们的指导,能够较为熟练地掌握Newton 迭代法、Jacobi 迭代法、Gauss-Seidel 迭代法、Newton 插值法、Lagrange 插值法和Gauss 求积公式等六种算法的原理和使用方法,并参考课本例题进行了MATLAB 程序的编写。 以下为本次上机实验报告,按照实验内容共分为六部分。 实验一: 一、实验名称及题目: Newton 迭代法 例2.7(P38):应用Newton 迭代法求 在 附近的数值解 ,并使其满足 . 二、解题思路: 设'x 是0)(=x f 的根,选取0x 作为'x 初始近似值,过点())(,00x f x 做曲线)(x f y =的切线L ,L 的方程为))((')(000x x x f x f y -+=,求出L 与x 轴交点的横坐标) (') (0001x f x f x x - =,称1x 为'x 的一次近似值,过点))(,(11x f x 做曲线)(x f y =的切线,求该切线与x 轴的横坐标) (') (1112x f x f x x - =称2x 为'x

的二次近似值,重复以上过程,得'x 的近似值序列{}n x ,把 ) (') (1n n n n x f x f x x - =+称为'x 的1+n 次近似值,这种求解方法就是牛顿迭代法。 三、Matlab 程序代码: function newton_iteration(x0,tol) syms z %定义自变量 format long %定义精度 f=z*z*z-z-1; f1=diff(f);%求导 y=subs(f,z,x0); y1=subs(f1,z,x0);%向函数中代值 x1=x0-y/y1; k=1; while abs(x1-x0)>=tol x0=x1; y=subs(f,z,x0); y1=subs(f1,z,x0); x1=x0-y/y1;k=k+1; end x=double(x1) K 四、运行结果: 实验二:

数值代数上机实验报告

数值代数课程设计实验报告 姓名: 班级: 学号: 实验日期: 一、实验名称 代数的数值解法 二、实验环境 MATLAB7.0 实验一、平方根法与改进平方根法 一、实验要求: 用熟悉的计算机语言将不选主元和列主元Gasuss 消元法编写成通用的子程序,然后用编写的程序求解下列方程组 ?????????? ????????????=????????????????????????? ? ? ? ? ? ? ?? ?????? ???? ?--?1415151515768 168 168 168 1681612321 n n n n n x x x x x x 用所编的程序分别求解40、84、120阶方程组的解。 二、算法描述及实验步骤 GAuss 程序如下: (1)求A 的三角分解:LU A =; (2)求解b y =L 得y ; (3)求解y x =U 得x ; 列主元Gasuss 消元法程序如下: 1求A 的列主元分解:LU PA =; 2求解b y P L =得y ; 3求解y x =U 得x ;

三、调试过程及实验结果: %----------------方程系数---------------- >> A1=Sanduijiaozhen(8,6,1,40); >> A2=Sanduijiaozhen(8,6,1,84); >> A3=Sanduijiaozhen(8,6,1,120); >> b1(1)=7;b2(1)=7;b3(1)=7; >> for i=2:39 b1(i)=15; end >> b1(40)=14; >> for i=2:83 b2(i)=15; end >> b2(40)=14; >> for i=2:119 b1(i)=15; end >> b3(120)=14; %----------------方程解---------------- >> x11=GAuss(A1,b1') >> x12=GAuss Zhu(A1,b1') >> x21=GAuss(A2,b2') >> x22=GAuss Zhu(A3,b3') >> x31=GAuss(A3,b3') >> x32=GAuss Zhu(A3,b3') 运行结果:(n=40) GAuss消元法的解即为 x11 = 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 列主元GAuss消元法的解即为x12 =

数值分析实验报告1

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

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

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

数学实验1

中国海洋大学本科生课程大纲 课程属性:公共基础/通识教育/学科基础/专业知识/工作技能,课程性质:必修、选修 一、课程介绍 1.课程描述: 数学实验是由于计算机技术和科学计算软件的迅猛发展应运而生的一门较新的数学课程,它改变了数学只靠纸和笔的传统形象,将实验的手段引入到数学的学习和研究中。 本课程为大学二年级数学院的学生开设。它不是讲授新的数学知识,而是让学生利用已有的数学知识去解决一些经简化的实际问题。大多数实验的一般过程是:对于给出的实际问题,建立数学模型、选择适当的数学方法、用科学计算软件MATLAB编程计算、对运算结果进行分析、给出结论。 本课程以MATLAB软件为主要的实验工具,采用以学生动手动脑为主,教师讲授和点评、小组讨论、报告为辅的教学方式。 通过本课程的学习,学生用数学解决实际问题的意识和能力可以得到强化和提高,更切实地体会到数学的用处,增加学习兴趣,提高创造力。 2.设计思路: 本课程旨在训练用数学解决实际问题的能力。实验内容的选取是基于学生具备MATLAB语言的初步编程能力、并学习了数学分析、高等代数、解析几何、运筹学基础(初步)、数学实验基础、常微分方程、数值分析或计算方法、概率论等数学课程的基础之上。课程共分七个基础实验和一个综合实验依次进行。七个基础实验是:MATLAB 基础知识复习、常微分方程(组)、数据建模——插值与拟合、古典密码学、图与网络 - 6 -

优化、动态规划、遗传算法。 基础实验涉及的数学内容较为单一、数学模型和求解方法较简单,是对“用数学”能力的基本训练。 综合实验以三人为一组进行,所涉及到的数学知识范围更广,建模和求解的难度更大。综合实验的题目可以小组自拟或在任课教师拟定的题目中选择。任课教师拟定的题目将于综合实验开始前一周给出。各小组在实验前要上交一份“开题报告”:写出问题的重述、模型建立和求解的思路、可能遇到的主要困难及解决方案。通过认真完成综合实验,“用数学”的能力可以有一个较大的提升。 3.课程与其他课程的关系: 先修课程:高等代数I、高等代数II、空间解析几何、数学分析I、数学分析II、数学实验基础;常微分方程;计算方法(或数值分析、数值代数); 并行课程:概率论等; 后置课程:数学模型;数学建模实践 二、课程目标 本课程的目标是为大二数学类专业学生提供用数学知识解决实际问题的系统训练。 到课程结束时,学生应能: (1)对简单的实际问题建立数学模型; (2)采用适当的数学方法,用MA TLAB软件求解模型,并根据计算结果对模型进行评价和改进; (3)具备初步的科研写作能力:学会如何将问题、模型、解决思路、求解方法、计算结果和结论简洁、清晰、严谨地呈现; (4)针对难度较高的实际问题通过小组成员的独立思考、相互合作与激励,共同解决。提高沟通交流能力,促进相互学习,加深对有关数学知识的理解,进一步提升用数学知识和MATLAB软件解决实际问题的能力。 三、学习要求 要完成所有的课程任务,学生必须: (1)按时上课,认真听讲,积极参与课堂讨论、随堂练习和测试; - 6 -

计算方法第二章方程求根上机报告

实验报告名称 班级:学号:姓名:成绩: 1实验目的 1)通过对二分法与牛顿迭代法作编程练习与上级运算,进一步体会二分法与牛顿迭代法的不同特点。 2)编写割线迭代法的程序,求非线性迭代法的解,并与牛顿迭代法。 2 实验内容 用牛顿法和割线法求下列方程的根 x^2-e^x=0; x*e^x-1=0; lgx+x-2=0; 3实验步骤 1)根据二分法和牛顿迭代法,割线法的算法编写相应的求根函数; 2)将题中所给参数带入二分法函数,确定大致区间; 3)用牛顿迭代法和割线法分别对方程进行求解; 3 程序设计 牛顿迭代法x0=1.0; N=100; k=0; eps=5e-6; delta=1e-6; while(1) x1=x0-fc1(x0)/fc2(x0); k=k+1; if k>N disp('Newmethod failed')

break end if(abs(x1-x0)=delta) c=x1; x1=cutnext(x0,x1); x0=c; %x0 x1μYí?μ?μ?x1 x2 è?è?±£′??úx0 x1 end k=k+1; if k>N disp('Cutline method failed') break; end if(abs(x1-x0)

线性代数典型例题

线性代数 第一章 行列式 典型例题 一、利用行列式性质计算行列式 二、按行(列)展开公式求代数余子式 已知行列式41 234334461 5671122 D ==-,试求4142A A +与4344A A +、 三、利用多项式分解因式计算行列式 1.计算2211 23122313 1513 19x D x -=-、 2.设()x b c d b x c d f x b c x d b c d x =,则方程()0f x =有根_______.x = 四、抽象行列式的计算或证明 1、设四阶矩阵234234[2,3,4,],[,2,3,4]A B αγγγβγγγ==,其中234,,,,αβγγγ均为四维列向量,且已知行列式||2,||3A B ==-,试计算行列式||.A B + 2、设A 为三阶方阵,*A 为A 的伴随矩阵,且1||2 A =,试计算行列式1*(3)22.A A O O A -??-???? 3、设A 就是n 阶(2)n ≥非零实矩阵,元素ij a 与其代数余子式ij A 相等,求行列式

||.A 4、设矩阵210120001A ????=?????? ,矩阵B 满足**2ABA BA E =+,则||_____.B = 5、设123,,ααα均为3维列向量,记矩阵 123123123123(,,),(,24,39)A B αααααααααααα==+++++ 如果||1A =,那么||_____.B = 五、n 阶行列式的计算 六、利用特征值计算行列式 1、若四阶矩阵A 与B 相似,矩阵A 的特征值为1111,,,2345 ,则行列式1||________.B E --= 2、设A 为四阶矩阵,且满足|2|0E A +=,又已知A 的三个特征值分别为1,1,2-,试计算行列式*|23|.A E + 第二章 矩阵 典型例题 一、求逆矩阵 1、设,,A B A B +都就是可逆矩阵,求:111().A B ---+ 2、设0002100053123004 580034600A ????????=???????? ,求1.A -

偏微分方程数值解课程的思索

科技信息 SCIENCE &TECHNOLOGY INFORMATION 2012年第9期偏微分方程(PDE )是众多描述物理,化学和生物现象的数学模型的基础,其最新应用已经扩展到经济,金融预测,图像处理等很多领域。要通过PDE 模型研究这些问题,就需要求解PDE 方程,但是绝大多数微分方程特别是偏微分方程,很难得到其解析形式的解。我们希望能够借助于计算机采用数值方法求得偏微分方程的近似解,这就是《偏微分方程数值解》课程的主要内容。 《偏微分方程数值解》是信息与计算科学专业的一门专业课,它与《数值代数》,《数值逼近》一起构成信息与计算科学专业信息与计算方向的核心课程,在专业培养中占有非常重要的地位。随着计算机技术的飞速发展,偏微分方程数值解得到了前所未有的发展和应用,与此同时也暴露了《偏微分方程数值解》课程传统教学中的很多不足之处,这使得该门课程在教学上有很多地方需要调整。 笔者长年教授《偏微分方程数值解》课程,在该门课程的教学改革方面做了一些思索和尝试,主要包括改革教学方法,更新教学模式,加强介绍背景知识,融入数学建模思想,教学与科研相结合,教学与计算软件相结合,增设实验课,改革考核方式等。 1改革教学方法,更新教学模式 由于数学课程大多理论性较强,趣味性较弱,为了激发学生学习兴趣,在教学过程中,我们采用启发式、讨论式等多种教学方法,营造良好的课堂气氛,加强师生之间的交流,引导学生独立思考,强化科学思维的训练。在教学内容方面,不光教授公式推导,定理证明,同时注重算法思想的讲解和程序设计的讲解,同时安排一定课时的习题课,讲解典型习题和对每章进行总结。 由于《偏微分方程数值解》涉及较多的概念、公式和定理,大多数老师仍以传统的课堂教学为主,而少数年轻教师则喜欢用多媒体课件教学。传统的教学方法,虽然受到的批评最多,但也是用得最多,最能让大家普遍接受的一种方法,在算法推导、理论分析等方面,采用传统的板书讲解能更好地引导学生去感受和思考数学逻辑的过程以及创造性的思维过程,加深对数学理论的理解和认识,培养学生的逻辑和思维能力。而在讲述背景知识,算法的应用,算法的程序实现时候最好用多媒体课件进行演示。多媒体课件可以让学生更直观,更全面的理解算法的应用,另外使用多媒体课件还可以节省大段公式的板书时间,图示清楚、准确。但是如果全部使用多媒体课件上课,容易加快教学速度,淡化数学公式的推导以及定理的证明过程,不利于培养学生的数学思维能力。所以,我们认为需要将传统的教学方法和现代的教学手段结合起来,充分发挥各自的优势,在传统教学中穿插多媒体课件,根据教学内容选择合适的教学手段。 2加强知识背景的介绍,融入数学建模思想 《偏微分方程数值解》是理论知识与实际应用之间的桥梁,为学生使用计算机解决科学与工程中的实际问题打下良好的理论基础和应用基础。传统教学以分析,证明,推导为主,重理论,轻应用,缺少偏微分方程产生的实际背景的介绍和应用数值解的方法解决实际问题的实例。因此,我们在教授该课程的时候,注重与数学建模思想相结合,从实际问题出发,建立相应的偏微分方程模型,这样,学生就知道为什么要研究偏微分方程,偏微分方程能解决什么样的实际问题。 例如,我们考虑有衰减的扩散问题:有一个扩散源,某物质从此扩散源向四周扩散,沿x,y,z 三个方向的扩散系数分别为常数,衰减使质量的减少与浓度成正比,扩散前周围空间此物质的浓度为0,估计物质的分布。我们引导学生运用所学过的微积分的思想以及相应的物理知识,对这一问题进行建模,可以得到如下的模型: 鄣u =a 2鄣2 u 鄣x +b 2鄣2 u 鄣y +c 2鄣2 u 鄣z -k 2u 上述方程是常系数线性抛物型方程,它就是有衰减的扩散过程的数学模型。有了这样的铺垫,学生知道了扩散问题的数学模型就是抛物型方程,当然类似的环境污染,疾病流行等与扩散有关的实际问题可以用抛物型方程来描述,很自然的,接下来的问题就是如何求解上面的抛物型方程,学生的学习热情自然就提高了。 3教学与科研相结合 随着计算技术和计算机科学的发展,偏微分方程数值解法的内涵也在不断扩大,我们在讲授《偏微分方程数值解》课程中引进近年来最新的理论和最新的方法,这样可以开阔学生的视野,激发学生的学习情趣,锻炼学生的自学能力。例如我们除了介绍有限差分法,有限元法,有限体积法等经典的具有一般性的方法,还介绍了多重网格法。由于近些年来,人们将辛方法应用于哈密顿常微分方程系统以及推广应用于微分方程的兴趣日益增长,我们也简单介绍了这一主题,并且用这个思想去分析逼近波动方程的交错蛙跳格式。在讲授方法的同时,还注意介绍这些方法的发展历史,设计思想和理论依据,并给出了相当丰富的参考文献,让基础好的同学自己去挖掘感兴趣的问题。承担课题的老师,可以把自己课题中与此课程相关的小问题拿出来供有兴趣的同学琢磨,有助于锻炼学生的科研能力。 4教学与计算软件相结合 由Mathworks 公司推出的MATLAB 软件,现在已经发展成功能强大,适合科学和工程计算的软件,使用MATLAB 编程,语言简洁,数据处理方便,具有强大的数值计算功能和图形展示功能,因此,将MATLAB 融入偏微分方程数值解的教学,更能与时俱进,更有效地提高教学质量。 MATLAB 采用有限元的方法求解各种PDE ,它提供了两种方法解决PDE 问题,一是pdepe 函数,它可以求解一般的PDEs ,具有较大的通用性,但只支持命令行形式的调用。二是PDE 工具箱,可以求解特殊PDE 问题,但有较大的局限性。只能求解二阶PDE 问题,不能求解偏微分方程组。PDE 工具箱支持命令行形式求解,但需要记住大量命令及其调用格式。不过好在它提供了GUI 界面,可以把我们从复杂的编程中解脱出来,还有很好的动画演示功能,尤其适合刚入门的学生。 我们在授课过程中精选与生活,生产密切相关的应用实例,鼓励学生自己动手建立模型,应用数学软件和所学的知识求解模型。例如考虑一个带有矩形孔的金属板上的热传导问题。板的左边保持在100℃,板的右边热量从板向环境空气定常流动,其他边及内孔边界保持绝缘。初始t=t 0时板的温度为0。对于这样的一个实际问题,我们先应用所学的数学分析和数学建模知识,对原问题建立如下偏微分方程模型: 鄣u 鄣t -△u =0,u =100, 鄣u =-1,鄣u =0,u|t=t 0 =0△△△△△△△△△△△△△△ △. 不妨设界顶点坐标为(-0.5,-0.8),(0.5,-0.8),(0.5,0.8),(-0.5,0.8)。内边界顶点坐标为(-0.005,-0.4),(0.05,-0.4),(0.05,0.4),(-0.05,0.4)。对于这样的一个抛物型方程,我们设计其数值计算方法,然后分别用 偏微分方程数值解课程的思索 邹永魁 (吉林大学数学与科学学院吉林 长春 130012) 【摘要】探讨《偏微分方程数值解》课程教学改革的思考与体会,主要包括教学方法和教学模式的改革,加强背景知识的介绍,将科研前沿带入课堂,将MATLAB 融入教学以及考核方式的改革等。 【关键词】偏微分方程数值解;教学改革;MATLAB ;综合评价体系○高校讲坛○200

数值线性代数第二版徐树方高立张平文上机习题第一章实验报告(供参考)

上机习题 1.先用你所熟悉的的计算机语言将不选主元和列主元Gauss 消去法编写成通用的子程序;然后用你编写的程序求解84阶方程组;最后将你的计算结果与方程的精确解进行比较,并就此谈谈你对Gauss 消去法的看法。 Sol : (1)先用matlab 将不选主元和列主元Gauss 消去法编写成通用的子程序,得到P U L ,,: 不选主元Gauss 消去法:[])(,A GaussLA U L =得到U L ,满足LU A = 列主元Gauss 消去法:[])(,,A GaussCol P U L =得到P U L ,,满足LU PA = (2)用前代法解()Pb or b Ly =,得y 用回代法解y Ux =,得x 求解程序为()P U L b A Gauss x ,,,,=(P 可缺省,缺省时默认为单位矩阵) (3)计算脚本为ex1_1 代码 %算法(计算三角分解:Gauss 消去法) function [L,U]=GaussLA(A) n=length(A); for k=1:n-1 A(k+1:n,k)=A(k+1:n,k)/A(k,k); A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n); end

U=triu(A); L=tril(A); L=L-diag(diag(L))+diag(ones(1,n)); end %算法计算列主元三角分解:列主元Gauss消去法) function [L,U,P]=GaussCol(A) n=length(A); for k=1:n-1 [s,t]=max(abs(A(k:n,k))); p=t+k-1; temp=A(k,1:n); A(k,1:n)=A(p,1:n); A(p,1:n)=temp; u(k)=p; if A(k,k)~=0 A(k+1:n,k)=A(k+1:n,k)/A(k,k); A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n); else break; end end L=tril(A);U=triu(A);L=L-diag(diag(L))+diag(ones(1,n));

数值分析上机实验报告

数值分析上机实验报告

《数值分析》上机实验报告 1.用Newton 法求方程 X 7-X 4+14=0 在(0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001)。 1.1 理论依据: 设函数在有限区间[a ,b]上二阶导数存在,且满足条件 {}α?上的惟一解在区间平方收敛于方程所生的迭代序列 迭代过程由则对任意初始近似值达到的一个中使是其中上不变号 在区间],[0)(3,2,1,0,) (') ()(],,[x |))(),((|,|,)(||)(|.4;0)(.3],[)(.20 )()(.110......b a x f x k x f x f x x x Newton b a b f a f mir b a c x f a b c f x f b a x f b f x f k k k k k k ==- ==∈≤-≠>+ 令 )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 如此一次一次的迭代,逼近x 的真实根。当前后两个的差<=ε时,就认为求出了近似的根。本程序用Newton 法求代数方程(最高次数不大于10)在(a,b )区间的根。

1.2 C语言程序原代码: #include #include main() {double x2,f,f1; double x1=1.9; //取初值为1.9 do {x2=x1; f=pow(x2,7)-28*pow(x2,4)+14; f1=7*pow(x2,6)-4*28*pow(x2,3); x1=x2-f/f1;} while(fabs(x1-x2)>=0.00001||x1<0.1); //限制循环次数printf("计算结果:x=%f\n",x1);} 1.3 运行结果: 1.4 MATLAB上机程序 function y=Newton(f,df,x0,eps,M) d=0; for k=1:M if feval(df,x0)==0 d=2;break else x1=x0-feval(f,x0)/feval(df,x0); end e=abs(x1-x0); x0=x1; if e<=eps&&abs(feval(f,x1))<=eps d=1;break end end

数值线性代数二版徐树方高立张平文上机习题第三章实验报告

- 1 - 第三章上机习题 用你所熟悉的的计算机语言编制利用QR 分解求解线性方程组和线性最小二乘问题的 通用子程序,并用你编制的子程序完成下面的计算任务: (1)求解第一章上机习题中的三个线性方程组,并将所得的计算结果与前面的结果相比较,说明各方法的优劣; (2)求一个二次多项式+bt+c y=at 2 ,使得在残向量的2范数下最小的意义下拟合表3.2中的数据; (3)在房产估价的线性模型 111122110x a x a x a x y ++++= 中,1121,,,a a a 分别表示税、浴室数目、占地面积、车库数目、房屋数目、居室数目、房龄、建筑类型、户型及壁炉数目,y 代表房屋价格。现根据表3.3和表3.4给出的28组数据,求出模型中参数的最小二乘结果。 (表3.3和表3.4见课本P99-100) 解 分析: (1)计算一个Householder 变换H : 由于T T vv I ww I H β-=-=2,则计算一个Householder 变换H 等价于计算相应的v 、β。其中)/(2,||||12v v e x x v T =-=β。 在实际计算中, 为避免出现两个相近的数出现的情形,当01>x 时,令2 12221||||) (-x x x x v n +++= ; 为便于储存,将v 规格化为1/v v v =,相应的,β变为)/(221v v v T =β 为防止溢出现象,用∞||||/x x 代替 (2)QR 分解: 利用Householder 变换逐步将n m A n m ≥?,转化为上三角矩阵A H H H n n 11 -=Λ,则有

?? ? ???=0R Q A ,其中n H H H Q 21=,:),:1(n R Λ=。 在实际计算中,从n j :1=,若m j <,依次计算)),:((j m j A x =对应的)1()1()~ (+-?+-k m k m j H 即对应的j v ,j β,将)1:2(+-j m v j 储存到),:1(j m j A +,j β储存到)(j d ,迭代结束 后再次计算Q ,有??? ? ?? ??=-~001 j j j H I H ,n H H H Q 21=(m n =时1-21n H H H Q =) (3)求解线性方程组b Ax =或最小二乘问题的步骤为 i 计算A 的QR 分解; ii 计算b Q c T 11=,其中):1(:,1n Q Q = iii 利用回代法求解上三角方程组1c Rx = (4)对第一章第一个线性方程组,由于R 的结果最后一行为零,故使用前代法时不计最后一行,而用运行结果计算84x 。 运算matlab 程序为 1 计算Householder 变换 [v,belta]=house(x) function [v,belta]=house(x) n=length(x); x=x/norm(x,inf); sigma=x(2:n)'*x(2:n); v=zeros(n,1); v(2:n,1)=x(2:n); if sigma==0 belta=0; else alpha=sqrt(x(1)^2+sigma); if x(1)<=0 v(1)=x(1)-alpha; else v(1)=-sigma/(x(1)+alpha); end belta=2*v(1)^2/(sigma+v(1)^2); v=v/v(1,1); end end

数值分析实验报告1

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

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

计算方法上机实习题大作业(实验报告).

计算方法实验报告 班级: 学号: 姓名: 成绩: 1 舍入误差及稳定性 一、实验目的 (1)通过上机编程,复习巩固以前所学程序设计语言及上机操作指令; (2)通过上机计算,了解舍入误差所引起的数值不稳定性 二、实验内容 1、用两种不同的顺序计算10000 21n n -=∑,分析其误差的变化 2、已知连分数() 1 01223//(.../)n n a f b b a b a a b =+ +++,利用下面的算法计算f : 1 1 ,i n n i i i a d b d b d ++==+ (1,2,...,0 i n n =-- 0f d = 写一程序,读入011,,,...,,,...,,n n n b b b a a 计算并打印f 3、给出一个有效的算法和一个无效的算法计算积分 1 041 n n x y dx x =+? (0,1,...,1 n = 4、设2 2 11N N j S j == -∑ ,已知其精确值为1311221N N ?? -- ?+?? (1)编制按从大到小的顺序计算N S 的程序 (2)编制按从小到大的顺序计算N S 的程序 (3)按两种顺序分别计算10001000030000,,,S S S 并指出有效位数 三、实验步骤、程序设计、实验结果及分析 1、用两种不同的顺序计算10000 2 1n n -=∑,分析其误差的变化 (1)实验步骤: 分别从1~10000和从10000~1两种顺序进行计算,应包含的头文件有stdio.h 和math.h (2)程序设计: a.顺序计算

#include #include void main() { double sum=0; int n=1; while(1) { sum=sum+(1/pow(n,2)); if(n%1000==0)printf("sun[%d]=%-30f",n,sum); if(n>=10000)break; n++; } printf("sum[%d]=%f\n",n,sum); } b.逆序计算 #include #include void main() { double sum=0; int n=10000; while(1) { sum=sum+(1/pow(n,2)); if(n%1000==0) printf("sum[%d]=%-30f",n,sum); if(n<=1)break; n--; } printf("sum[%d]=%f\n",n,sum); } (3)实验结果及分析: 程序运行结果: a.顺序计算

相关文档
相关文档 最新文档