数值计算方法上机答案.docx

上传人:b****5 文档编号:8793404 上传时间:2023-05-15 格式:DOCX 页数:34 大小:144.44KB
下载 相关 举报
数值计算方法上机答案.docx_第1页
第1页 / 共34页
数值计算方法上机答案.docx_第2页
第2页 / 共34页
数值计算方法上机答案.docx_第3页
第3页 / 共34页
数值计算方法上机答案.docx_第4页
第4页 / 共34页
数值计算方法上机答案.docx_第5页
第5页 / 共34页
数值计算方法上机答案.docx_第6页
第6页 / 共34页
数值计算方法上机答案.docx_第7页
第7页 / 共34页
数值计算方法上机答案.docx_第8页
第8页 / 共34页
数值计算方法上机答案.docx_第9页
第9页 / 共34页
数值计算方法上机答案.docx_第10页
第10页 / 共34页
数值计算方法上机答案.docx_第11页
第11页 / 共34页
数值计算方法上机答案.docx_第12页
第12页 / 共34页
数值计算方法上机答案.docx_第13页
第13页 / 共34页
数值计算方法上机答案.docx_第14页
第14页 / 共34页
数值计算方法上机答案.docx_第15页
第15页 / 共34页
数值计算方法上机答案.docx_第16页
第16页 / 共34页
数值计算方法上机答案.docx_第17页
第17页 / 共34页
数值计算方法上机答案.docx_第18页
第18页 / 共34页
数值计算方法上机答案.docx_第19页
第19页 / 共34页
数值计算方法上机答案.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数值计算方法上机答案.docx

《数值计算方法上机答案.docx》由会员分享,可在线阅读,更多相关《数值计算方法上机答案.docx(34页珍藏版)》请在冰点文库上搜索。

数值计算方法上机答案.docx

数值计算方法上机答案

 

本科实验报告

 

课程名称:

实验项目:

实验地点:

机房

专业班级:

采矿1206学号:

**********

*******

指导教师:

2014年7月3日

一、求非线性方程的根。

1、求方程

附近的是根,要求精度满足

.(牛顿切线法)

f=inline('x-cos(x)');%f(x)

df=inline('1+sin(x)');%f'(x)

n=1;

x0=input('x0=');

del=input('del=');

N=input('N=');

fprintf('\nkx(k)');

fprintf('\n%2d%f',0,x0);

F0=f(x0);dF0=df(x0);

whilen

ifdF0==0

fprintf('导数为0,迭代无法继续进行.');

return;

end

x1=x0-F0/dF0;

F1=f(x1);

dF1=df(x1);

if((abs(x1-x0)

fprintf('\n\n结果:

%f\n',x1);

return;

end

fprintf('\n%2d%f',n,x1);

n=n+1;

x0=x1;

F0=F1;

dF0=dF1;

end

fprintf('\n\n%d次迭代后未达到精度要求.\n',N);

NewtonIteration

x0=1.5

del=1e-4

N=100

kx(k)

01.500000

10.784472

20.739519

结果:

0.739085

2、求方程

附近的是根,求出具有思维有效数字的根近似值..(简单迭代法)

clear

clc

phi=inline('(0.8+x^2)^(1/3)');%迭代函数

x0=input('x0=');

del=input('del=');

N=input('N=');n=1;

fprintf('\n%2d%f',0,x0);

whilen

x=phi(x0);

ifabs(x-x0)

fprintf('\n\n近似解=%f\n',x);

return

end

fprintf('\n%2d%f',n,x);

n=n+1;

x0=x;

end

fprintf('\n\n%fd次迭代后未达到精度要求.\n',N)

x0=1

del=1e-4

N=100

01.000000

11.216440

21.316116

31.363004

41.385180

51.395688

61.400671

71.403034

81.404155

91.404687

101.404939

111.405059

近似解=1.405116

100.000000d次迭代后未达到精度要求.

二、求解线性方程组(直接法或迭代法)

1、

(列主元素消元法)

a=input('a=')%[2,2,1,-3,8;-2,1,-1,-3,1;8,-1,3,8,-1;10,4,4,3,8];

[p,n]=size(a);

forw=1:

p

[x,y]=find(a(w:

p,w)==max(max(a(w:

p,w))));

q=a(w,:

);

a(w,:

)=a(x,:

);

a(x,:

)=q;

end

forj=1:

(p-1)

fori=(j+1):

p

a(i,:

)=a(j,j)/a(i,j).*a(i,:

)-a(j,:

);

end

end

m=p;

whilem>1

s(m)=a(m,n);

j=p;

while((j>2)&(j>=m+1)&(j

s(m)=s(m)-a(m,j)*x(j);

j=j-1;

end

x(m)=s(m)/a(m,m);

m=m-1;

x

end

a=[221-38;-21-1-31;8-138-1;104438]

a=

221-38

-21-1-31

8-138-1

104438

x=

1.0000-1.00002.0000-2.0000

function[x,det,flag]=Gauss(A,b)

[n,m]=size(A);

nb=length(b);

ifn~=m

error('therowsandcloumsofAmustbeequal!

');

return;

end

ifm~=nb

error('therowsandcloumsofAmustbeequalthelengthofb!

');

return;

end

flag='OK';det=1;x=zeros(n,1);

fork=1:

(n-1)

max1=0;

fori=k:

n

ifabs(A(i,k))>max1

max1=abs(A(i,k));r=i;

end

end

ifmax1<1e-6

flag='failure';return;

end

ifr>k

forj=k:

n

z=A(k,j);A(k,j)=A(r,j);A(r,j)=z;

end

z=b(k);b(k)=b(r);b(r)=z;det=-det;

end

fori=k+1:

n

m=A(i,k)/A(k,k);

forj=k+1:

n

A(i,j)=A(i,j)-m*A(k,j);

end

b(i)=b(i)-m*b(k);

end

det=det*A(k,k);

end

det=det*A(n,n);

ifabs(A(n,n))<1e-6

flag='faliure';return;

end

fork=n:

-1:

1

forj=k+1:

n

b(k)=b(k)-A(k,j)*x(j);

end

x(k)=b(k)/A(k,k);

end

x(k)=b(k)/A(k,k);

end

X

Det

flag

A=vpa([17.031-0.615-2.9911.007-1.0060;-134.211-1-2.16.3-1.7;00.513-0.51-1.5;4.5013.11-3.907-61.70512.178.999;0.101-0.812-0.017-0.914.9180.1;1234.5521.80],6)

b=vpa([0.23-22.32254240.23629.304-117.818],6);

A=

[17.031,-0.615,-2.991,1.007,-1.006,0]

[-1.0,34.211,-1.0,-2.1,6.3,-1.7]

[0,0.5,13.0,-0.5,1.0,-1.5]

[4.501,3.11,-3.907,-61.705,12.17,8.999]

[0.101,-0.812,-0.017,-0.91,4.918,0.1]

[1.0,2.0,3.0,4.5,5.0,21.8]

>>Gauss(A,b)

A=

[17.031,-0.615,-2.991,1.007,-1.006,0]

[-1.0,34.211,-1.0,-2.1,6.3,-1.7]

[0,0.5,13.0,-0.5,1.0,-1.5]

[4.501,3.11,-3.907,-61.705,12.17,8.999]

[0.101,-0.812,-0.017,-0.91,4.918,0.1]

[1.0,2.0,3.0,4.5,5.0,21.8]

ans=

1.0000

-2.0000

2.9999

-4.0001

5.0000

-6.0008

clear

clc

n=input('n=');

A=input('A=');

b=input('b=');

x=input('x=');

epsilon=input('\n精度=');

N=input('\n最大迭代次数N=');

fprintf('\n%d:

',0);

fori=1:

n

fprintf('%f',x(i));

end

%以下是迭代过程

fork=1:

N

%这是第k步迭代,迭代前的向量在x0[]中,迭代后的向量在x[]中;

normal=0;

fori=1:

n

t=x(i);

x(i)=b(i);

forj=1:

n

ifj~=i

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

end

end

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

temp=abs(x(i)-t);%求范数于迭代在同一个循环中;

iftemp>normal

normal=temp;%这里用的是无穷范数

end

end%第i不迭代结束;

fprintf('\n%d:

',k);

fori=1:

n

fprintf('%f',x(i));%输出迭代过程

end

ifnormal

return

end

end

fprintf('\n\n迭代%d次后仍未求得满足精度的解\n',N);

n=8

A=[17,1,4,3,-1,2,3,-7;210-17-211-4;-11-82-52-11;241-11134-1;1317-151-24;-217-1212-18;345128-192;5111-11-710]

b=[71;43;-11;-37;-61;52;-73;21]

x0=[0;0;0;0;0;0;0;0]

精度=1e-4

最大迭代次数N=100

0:

0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000

1:

4.1764714.3000001.3750003.3636364.0666674.3333333.8421052.100000

2:

2.9225162.0834500.5552548.5693667.2030702.3916968.4193711.770708

3:

1.796703-1.159744-1.3226198.9108208.2232983.3576457.2909535.892632

4:

4.2118430.507676-1.2417916.9272028.8477911.5521346.9022046.149035

5:

4.8681201.868149-2.5922027.3796888.4218241.2958416.8839584.935878

6:

4.5347650.742110-2.3382647.8659948.5206412.9955406.6619884.531746

7:

4.1340460.204098-1.9753807.8475618.5522223.1606677.1482374.421535

8:

3.9348030.230528-2.0501637.8467958.3502823.0342277.1274764.968270

9:

4.1827670.456461-1.8566067.7032878.4770762.7098147.0649175.050721

10:

4.2398730.623716-2.0374607.7409308.4934282.5261337.0804484.900471

11:

4.2239090.527844-2.0911437.7663918.4818132.7290846.9876304.900388

12:

4.2294720.494477-2.0251787.7442958.4957602.7621067.0363614.834351

13:

4.1809570.483627-2.0503767.7731678.4616392.7712547.0548314.862722

14:

4.1877690.472362-2.0135997.7616418.4737412.7694887.0430224.896300

15:

4.1986420.499955-2.0210727.7553988.4794262.7237627.0548634.884616

16:

4.1986920.501255-2.0384687.7601448.4745152.7349437.0402094.891221

17:

4.2055730.498191-2.0286037.7557178.4802942.7405807.0410484.880464

18:

4.1993120.497105-2.0346057.7600978.4761272.7421377.0457024.877388

19:

4.1974990.492006-2.0308367.7600368.4757992.7481837.0430294.883474

20:

4.1991700.494820-2.0284517.7582898.4772642.7418767.0458104.882012

21:

4.1984870.496008-2.0317677.7593908.4761002.7413467.0445474.883555

22:

4.1998550.495605-2.0303137.7585468.4771302.7422207.0436914.883052

23:

4.1995870.496071-2.0311267.7588478.4768822.7416557.0445844.881763

24:

4.1990620.495235-2.0312187.7591598.4765432.7430467.0440424.882558

25:

4.1993170.495278-2.0304527.7588308.4768572.7425887.0444094.882330

26:

4.1991060.495514-2.0309467.7590208.4766402.7422837.0444594.882489

27:

4.1992540.495419-2.0307707.7589248.4767442.7424677.0442214.882645

28:

4.1993260.495564-2.0307947.7588918.4767882.7422487.0443704.882398

29:

4.1992300.495486-2.0309247.7589758.4767042.7424297.0442904.882484

30:

4.1992730.495441-2.0307827.7589238.4767582.7424537.0443054.882462

31:

4.1992410.495482-2.0308407.7589468.4767312.7423837.0443504.882449>>x

x=

4.1992

0.4955

-2.0308

7.7589

8.4767

2.7424

7.0444

4.8824

function[x,det,flag]=Gauss(A,b)

[n,m]=size(A);

nb=length(b);

ifn~=m

error('therowsandcloumsofAmustbeequal!

');

return;

end

ifm~=nb

error('therowsandcloumsofAmustbeequalthelengthofb!

');

return;

end

flag='OK';det=1;x=zeros(n,1);

fork=1:

(n-1)

max1=0;

fori=k:

n

ifabs(A(i,k))>max1

max1=abs(A(i,k));r=i;

end

end

ifmax1<1e-6

flag='failure';return;

end

ifr>k

forj=k:

n

z=A(k,j);A(k,j)=A(r,j);A(r,j)=z;

end

z=b(k);b(k)=b(r);b(r)=z;det=-det;

end

fori=k+1:

n

m=A(i,k)/A(k,k);

forj=k+1:

n

A(i,j)=A(i,j)-m*A(k,j);

end

b(i)=b(i)-m*b(k);

end

det=det*A(k,k);

end

det=det*A(n,n);

ifabs(A(n,n))<1e-6

flag='faliure';return;

end

fork=n:

-1:

1

forj=k+1:

n

b(k)=b(k)-A(k,j)*x(j);

end

x(k)=b(k)/A(k,k);

end

x(k)=b(k)/A(k,k);

end

A=[11111;12345;1361015;14102035;15153570];b=[10000]

b=

10000

>>Gauss(A,b)

ans=

5

-10

10

-5

1

三、用追赶法求解下列方程组(6位有效数字)。

解1

clear

clc

n=input('n=');

a=input('a=');

b=input('b=');

c=input('c=');

%a

(1)=0;c

(1)=0;

x=input('x=');

s=zeros(n,1);

t=s;

temp=0;

fork=1:

n

s(k)=b(k)-a(k)*temp;%temp

t(k)=c(k)/s(k);

temp=t(k);

end

temp=0;

fork=1:

n

x(k)=(x(k)-a(k)*temp)/s(k);

temp=x(k);

end

fork=n-1:

-1:

1

x(k)=x(k)-t(k)*x(k+1);

end

fprintf('\nx=\n');

fork=1:

n

fprintf('%f\n',x(k));

end

n=5

a=[0-1-1-1-1]

b=[44444]

c=[-1-1-1-10]

x=[100000200]

x=

27.051282

8.205128

5.769231

14.871795

53.717949

解2

clear

clc

n=input('n=');

a=input('a=');

b=input('b=');

c=input('c=');

%a

(1)=0;c

(1)=0;

x=input('x=');

s=zeros(n,1);

t=s;

temp=0;

fork=1:

n

s(k)=b(k)-a(k)*temp;%temp

t(k)=c(k)/s(k);

temp=t(k);

end

temp=0;

fork=1:

n

x(k)=(x(k)-a(k)*temp)/s(k);

temp=x(k);

end

fork=n-1:

-1:

1

x(k)=x(k)-t(k)*x(k+1);

end

fprintf('\nx=\n');

fork=1:

n

fprintf('%f\n',x(k));

end

n=10

a=[0111111111]

b=[-2-2-2-2-2-2-2-2-2-2]

c=[1111111110]

x=[-0.5-1.5-1.5-1.5-1.5-1.5-1.5-1.5-1.5-0.5]

x=

6.500000

12.500000

17.000000

20.000000

21.500000

21.500000

20.000000

17.000000

12.500000

6.500000

 

四、求解下列积分(E=1E-6)

解1

%复化的梯形公式和复化色Simpson公式计算定积分

f=inline('(sin(x)/x)');%函数表达式可以更换;

a=input('a=');%积分区间左端点

b=input('b=');%积分区间右端点

n=input('n=');%区间n等分;

h=(b-a)/n;

temp=f(a);

xk=a;

fori=1:

n-1

xk=xk+h;

temp=temp+2*f(xk);

end

temp=temp+f(b);

temp=temp*h/2;

fprintf('\n复化梯形公式计算结果:

%f',temp);

fuhuatx

a=1

b=2

n=1000

复化梯形公式计算结果:

0.659330

解2

%复化的梯形公式和复化色Simpson公式计算定积分

f=inline('exp(-x^2)');%函数表达式可以更换;

a=input('a=');%积分区间左端点

b=input('b=');%积分区间右端点

n=input('n=');%区间n等分;

h=(b-a)/n;

temp=f(a);

xk=a;

fori=1:

n-1

xk=xk+h;

temp=temp+2*f(xk);

end

temp=temp+f(b);

temp=temp*h/2;

fprintf('\n复化梯形公式计算结果:

%f',temp);

fuhuatx

a=0

b=1

n=1000

复化梯形公式计算结果:

0.746824

五、求下列矩阵所有最大和最小特征值和相应特征向量。

解1

(幂法)

function[m,u,flag]=Pow(A,delta,max1)

ifnargin<3

max1=100

end

ifnargin<2

delta=1e-5;

end

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2