数值分析实验综述文档格式.docx

上传人:wj 文档编号:3683351 上传时间:2023-05-02 格式:DOCX 页数:26 大小:813.98KB
下载 相关 举报
数值分析实验综述文档格式.docx_第1页
第1页 / 共26页
数值分析实验综述文档格式.docx_第2页
第2页 / 共26页
数值分析实验综述文档格式.docx_第3页
第3页 / 共26页
数值分析实验综述文档格式.docx_第4页
第4页 / 共26页
数值分析实验综述文档格式.docx_第5页
第5页 / 共26页
数值分析实验综述文档格式.docx_第6页
第6页 / 共26页
数值分析实验综述文档格式.docx_第7页
第7页 / 共26页
数值分析实验综述文档格式.docx_第8页
第8页 / 共26页
数值分析实验综述文档格式.docx_第9页
第9页 / 共26页
数值分析实验综述文档格式.docx_第10页
第10页 / 共26页
数值分析实验综述文档格式.docx_第11页
第11页 / 共26页
数值分析实验综述文档格式.docx_第12页
第12页 / 共26页
数值分析实验综述文档格式.docx_第13页
第13页 / 共26页
数值分析实验综述文档格式.docx_第14页
第14页 / 共26页
数值分析实验综述文档格式.docx_第15页
第15页 / 共26页
数值分析实验综述文档格式.docx_第16页
第16页 / 共26页
数值分析实验综述文档格式.docx_第17页
第17页 / 共26页
数值分析实验综述文档格式.docx_第18页
第18页 / 共26页
数值分析实验综述文档格式.docx_第19页
第19页 / 共26页
数值分析实验综述文档格式.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数值分析实验综述文档格式.docx

《数值分析实验综述文档格式.docx》由会员分享,可在线阅读,更多相关《数值分析实验综述文档格式.docx(26页珍藏版)》请在冰点文库上搜索。

数值分析实验综述文档格式.docx

2.求pi的近似值

代码如下:

sum0=0;

forn=1:

50000

y=(-1)^(n+1)/(2*n-1);

sum1=y+sum1;

pi_1=4*sum0;

pi_2=4*sum1;

error=pi_2-pi_1;

sum0=sum1;

%d,pi_2=%0.8f,Theerror:

n,pi_2,error);

ifabs(error)<

10^(-4)

求得结果是:

3.画图y=sinx与其泰勒展开

x=0:

pi/100:

2*pi;

y=sin(x);

y1=0;

y2=0;

y3=0;

fori=0:

2

y1=y1+(-1)^(i)*x.^(2*i+1)/factorial(2*i+1);

5

y2=y2+(-1)^(i)*x.^(2*i+1)/factorial(2*i+1);

10

y3=y3+(-1)^(i)*x.^(2*i+1)/factorial(2*i+1);

plot(x,y,'

*r'

x,y1,'

b'

x,y2,'

-g'

x,y3,'

k'

axis([02*pi-1.51.5])

看出n=2发散,n=10几乎与y=sinx重合。

首先用mesh函数.

2;

k=[0.2,0.1,0.05];

[xi,yi]=meshgrid(-10:

k(1,i+1):

10);

z=exp(-abs(xi))+cos(xi+yi)+1./(xi.^2+yi.^2+1);

subplot(2,2,i+1)

title('

mesh'

mesh(xi,yi,z)

再用surf函数.

第二章实验

1.列主元三角分解A.

clc

A=[11111;

12345;

1361015;

14102035;

15153570]

E=eye(5)

[m,n]=size(A);

ifm~=n

error('

不是方阵'

return

end

ifdet(A)==0

不能分解'

u=A;

p=eye(m);

l=eye(m);

fori=1:

m

forj=i:

t(j)=u(j,i);

fork=1:

i-1

t(j)=t(j)-u(j,k)*u(k,i);

end

end

a=i;

b=abs(t(i));

forj=i+1:

ifb<

abs(t(j))

b=abs(t(j));

a=j;

ifa~=i

forj=1:

m

c=u(i,j);

u(i,j)=u(a,j);

u(a,j)=c;

forj=1:

m

c=p(i,j);

p(i,j)=p(a,j);

p(a,j)=c;

end

c=t(a);

t(a)=t(i);

t(i)=c;

u(i,i)=t(i);

m

u(j,i)=t(j)/t(i);

i-1

u(i,j)=u(i,j)-u(i,k)*u(k,j);

end

end

end

l=tril(u,-1)+eye(m)

u=triu(u,0)

B=A/E

2.追赶法求方程,电路的电流

A=[2-2000000;

-25-200000;

0-25-20000;

00-25-2000;

000-25200;

0000-25-20;

00000-25-2;

000000-25]

bb=[220/270000000]

n=size(A,1);

s=zeros(n,1);

%-----È

¡

³

ö

È

ý

Ô

½

Ç

--------

b=diag(A);

a=diag(A,-1);

c=diag(A,1);

d=zeros(n,1);

u=zeros(n-1,1);

fori=1:

n-1

d

(1)=b

(1);

u(i)=c(i)/d(i);

d(i+1)=b(i+1)-a(i)*u(i);

%-----×

·

µ

Ä

¹

Ì

------------

y=zeros(n,1);

y

(1)=bb

(1)/d

(1);

fori=2:

n

y(i)=(bb(i)-a(i-1)*y(i-1))/d(i);

%-----¸

Ï

---------------

s(n)=y(n);

fori=n-1:

-1:

1

s(i)=y(i)-u(i)*s(i+1);

s

3.方程组的性态与矩阵条件数的实验

clc

n=5;

A=zeros(n);

C=zeros(n);

b=zeros(1,n);

x(i)=1+0.1*i;

forj=1:

A(i,j)=x(i)^(j-1);

C(i,j)=1/(i+j-1);

b(i)=b(i)+A(i,j);

A

C

b

d=cond(A,2)

DD=A\b'

(1)当n=5,10,20时,cond(A)=5.3615e+05,8.6823e+11,1.5428e+22。

看出越来越病态了。

(2)当n=5,10,20时,解分别如下:

说明条件数越大,越病态,发散了。

当n=10时就一个值有一定误差。

(3)n=10,解方程(A+delta)x=b.

clc

n=10;

%C(i,j)=1/(i+j-1);

A(2,2)=A(2,2)+10^(-8)

A(10,10)=A(10,10)+10^(-8)

x=A\b'

那么结果如下:

可以看出很小的扰动导致解误差变得较大了。

误差

(1)行列式,条件数,特征值

(2)(A+A0)(x+x0)=b,求此时的x0与||x0||2.

代码如下:

A=[10787;

7565;

86109;

75910]

A1=[107.28.16.9;

7.085.076.025;

8.25.899.969.01;

6.985.048.979.98]

b=[32233331]

A0=A1-A

x1=A1\b'

x0=x1-x

fanshux0=sqrt(x0(1,1)^2+x0(2,1)^2+x0(3,1)^2+x0(4,1)^2)

fanshux=sqrt(1+1+1+1)

eigAA=eig(A'

*A);

fanshuA=sqrt(max(eigAA))

eigA0A0=eig(A0'

*A0);

fanshuA0=sqrt(max(eigA0A0))

x0_x=fanshux0/fanshux

A0_A=fanshuA0/fanshuA

condA=cond(A)

x0_xx=(condA*A0_A)/(1-condA*A0_A)

结果如下:

然后比较:

然后利用公式计算:

左边=0.8225,右边=1.0358

则有0.8225<

1.0358。

第三章实验

1.分别用Jacobi,Gauss-Seild,共轭梯度法解方程

(1)Jacobi迭代法

A=[101234;

19-12-3;

2-173-5;

32312-1;

4-3-5-115]

b=[12-2714-1712]

n=length(A);

k=0;

ep=10^(-7)

it_max=100;

x=zeros(n,1);

y=zeros(n,1);

fprintf('

x1x2x3x4x5\n'

while1

fori=1:

n

y(i)=b(i);

forj=1:

ifj~=i

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

end

ifabs(A(i,i))<

1e-10|k==it_max

return;

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

ifnorm(y-x,inf)<

ep

x=y;

k=k+1;

%d,%f%f%f%f%f\n'

k,x(1,1),x(2,1),x(3,1),x(4,1),x(5,1))

得的结果为

(2)Gauss-Seild迭代法

clc

x0=[00000]'

;

ep=10^(-7);

N=100;

k=1;

fprintf('

\n**********start**************\n'

k);

fork=1:

N

%d\t'

%calculatex

(1)

x

(1)=b

(1)/A(1,1);

forj=2:

x

(1)=x

(1)-A(1,j)*x0(j)/A(1,1);

%f\t'

x

(1));

%calculatex(i)

fori=2:

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

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

forj=i+1:

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

fprintf('

x(i));

%calculatex(n)

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

x(n)=x(n)-A(n,j)*x(j)/A(n,n);

x(n));

ifnorm(x-x0,inf)<

break;

else

k=k+1;

x0=x;

\n'

);

\n***********end*************\n'

x0

运行结果如下:

可以看出Gauss-Seild只要41次就可以计算结果,而Jacobi需要76次。

(3)共轭梯度迭代法

b=[12-2714-1712]'

N=length(A);

eps=10^(-7);

x=zeros(N,1);

ü

´

ú

Ë

Æ

ò

Á

¿

.normÊ

¾

Ø

Õ

ó

£

¬

Ê

r=b-A*x;

ä

±

í

¸

º

Ñ

÷

fai=1/2x'

AX-bx

d=r;

fork=0:

N-1

Ú

%d´

Î

'

k+1);

a=(norm(r)^2)/(d'

*A*d)

x=x+a*d

rr=b-A*x;

%rr=r(k+1)

if(norm(rr)<

=eps)||(k==N-1)

B=(norm(rr)^2)/(norm(r)^2);

d=rr+B*d;

r=rr;

计算结果如下:

理论上只需要N次得到精确值

2.利用共轭梯度法计算矩阵--10^5阶

n=10^5;

ifi==j

A(i,j)=3;

elseifabs(i-j)==1

A(i,j)=-1;

elseif(i+j==n+1)&

&

(i~=n/2)&

(i~=n/2+1)

A(i,j)=1/2;

else

A(i,j)=0;

b(1,1)=2.5;

b(1,2:

10^5/2-1)=1.5;

b(1,10^5/2)=1.0;

b(1,10^5/2+1)=1.0;

b(1,10^5/2+2:

10^5-1)=1.5;

b(1,10^5)=2.5;

b=b'

fai=1/2*x'

A=(norm(r)^2)/(d'

*A*d);

x=x+A*d;

x'

3.利用cgs,bicg,bicgstab,等计算矩阵解

利用cgs()函数

A=gallery('

wilk'

21)

b=sum(A,2);

tol=1e-12;

maxit=15;

M1=diag([10:

111:

10]);

x=cgs(A,b,tol,maxit,M1)

利用bicg()函数

x=bicg(A,b,tol,maxit,M1)

利用bicgstab()函数

maxit=10;

x=bicgstab(A,b,tol,maxit,M1)

第五章实验

1.Newton插值f(x)=1/(1+4x^2).图形,误差

(1)输出插值多项式。

程序:

function[p]=NewtonChazhi(x,y,n)

%UNTITLED3此处显示有关此函数的摘要

%此处显示详细说明

f=zeros(n,n);

f(:

1)=y'

forj=2:

fori=j:

f(i,j)=(f(i,j-1)-f(i-1,j-1))/(x(i)-x(i-j+1));

p=f(n,n);

fork=n:

p=conv(p,poly(x(k-1)));

d=length(p);

p(d)=p(d)+f(k-1,k-1);

p

disp('

牛顿插值多项式:

polynomial=poly2sym(p,'

x'

x=-5:

5;

y=1./(1+4*x.^2);

n=length(x);

[p]=NewtonChazhi(x,y,n)

结果:

polynomial=

-(7319042784910035*x^10)/147573952589676412928+(256*x^8)/93425+(5*x^7)/1152921504606846976-(7410620163505401*x^6)/144115188075855872+x^5/9007199254740992+(36624*x^4)/93425+x^3/9007199254740992-(5148893614132309*x^2)/4503599627370496+(19*x)/36028797018963968+1

p=

Columns1through6

-0.000000.00270.0000-0.05140.0000

Columns7through11

0.39200.0000-1.14330.0000

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

当前位置:首页 > 小学教育 > 语文

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

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