数值计算方法matlab程序Word文档格式.docx

上传人:b****2 文档编号:14885703 上传时间:2022-10-25 格式:DOCX 页数:22 大小:32.69KB
下载 相关 举报
数值计算方法matlab程序Word文档格式.docx_第1页
第1页 / 共22页
数值计算方法matlab程序Word文档格式.docx_第2页
第2页 / 共22页
数值计算方法matlab程序Word文档格式.docx_第3页
第3页 / 共22页
数值计算方法matlab程序Word文档格式.docx_第4页
第4页 / 共22页
数值计算方法matlab程序Word文档格式.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

数值计算方法matlab程序Word文档格式.docx

《数值计算方法matlab程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《数值计算方法matlab程序Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。

数值计算方法matlab程序Word文档格式.docx

x^3-x-1'

);

[x0,k]=bisect1(fun1,1.3,1.4,1e-4)

x0=

1.3247

k=

7

简单迭代法

function[x0,k]=iterate1(fun1,x0,ep,N)

N=500;

3

x=x0;

x0=x+2*ep;

whileabs(x-x0)>

ep&

k<

N

x0=x;

x=feval(fun1,x0);

ifk==N

warning('

已达最大迭代次数'

(x+1)^(1/3)'

[x0,k]=iterate1(fun1,1.5)

x^3-1'

Inf

9

Steffesen加速迭代(简单迭代法的加速)

function[x0,k]=steffesen1(fun1,x0,ep,N)

y=feval(fun1,x0);

z=feval(fun1,y);

x=x0-(y-x0)^2/(z-2*y+x0);

[x0,k]=steffesen1(fun1,1.5)

6

Newton迭代

function[x0,k]=Newton7(fname,dfname,x0,ep,N)

5

x=x0-feval(fname,x0)/feval(dfname,x0);

 

fname=inline('

x-cos(x)'

dfname=inline('

1+sin(x)'

[x0,k]=Newton7(fname,dfname,pi/4,1e-8)

0.7391

k=4

非线性方程求根的Matlab函数调用举例:

1.求多项式的根:

求f(x)=x^3-x-1=0的根:

roots([10-1-1])

ans=

-0.6624+0.5623i

-0.6624-0.5623i

2.求一般函数的根

fun=inline('

x*sin(x^2-x-1)'

'

x'

fun=

Inlinefunction:

fun(x)=x*sin(x^2-x-1)

fplot(fun,[-20.1]);

gridon

x=fzero(fun,[-2,-1])

x=

-1.5956

x=fzero(fun,[-1-0.1])

-0.6180

[x,f,h]=fsolve(fun,-1.6)

f=

1.4909e-009

h=

1

(h>

0表示收敛,h<

0表示发散,h=0表示已达到设定的计算函数值的最大次数)

第三章:

线性方程组的数值解法

1.高斯消元法

function[A,x]=gauss3(A,b)

%本算法用顺序高斯消元法求解线性方程组

n=length(b);

A=[A,b];

fork=1:

n-1

A((k+1):

n,(k+1):

(n+1))=A((k+1):

(n+1))-A((k+1):

n,k)/A(k,k)*A(k,(k+1):

(n+1));

n,k)=zeros(n-k,1);

A;

x=zeros(n,1);

%上面为消元过程

x(n)=A(n,n+1)/A(n,n);

fork=n-1:

-1:

1

x(k)=(A(k,n+1)-A(k,(k+1):

n)*x((k+1:

n)))/A(k,k);

end

%上面为回代过程

>

A=[234;

352;

4330];

b=[6,5,32]'

b=

6

5

32

[A,x]=gauss3(A,b)

A=

2.00003.00004.00006.0000

00.5000-4.0000-4.0000

00-2.0000-4.0000

-13

8

2

列选主元的高斯消元法:

function[A,x]=gauss5(A,b)

%本算法用列选主元的高斯消元法求解线性方程组

%选主元

[ap,p]=max(abs(A(k:

n,k)));

p=p+k-1;

ifp>

k

t=A(k,:

A(k,:

)=A(p,:

A(p,:

)=t;

%消元

%回代

x=zeros(n,1);

n)*x((sk+1:

;

[A,x]=gauss5(A,b)

4.00003.000030.000032.0000

02.7500-20.5000-19.0000

000.18180.3636

三角分解法:

Doolittle分解

function[L,U]=doolittle1(A)

n=length(A);

U=zeros(n);

L=eye(n);

U(1,:

)=A(1,:

L(2:

n,1)=A(2:

n,1)/U(1,1);

fork=2:

n

U(k,k:

n)=A(k,k:

n)-L(k,1:

k-1)*U(1:

k-1,k:

n);

L(k+1:

n,k)=A(k+1:

n,k)-L(k+1:

n,1:

k-1,n)/U(k,k);

End

y=zeros(n,1);

x=y;

y

(1)=b

(1);

fori=2:

y(i)=b(i)-L(i,1:

i-1)*y(1:

i-1);

x(n)=y(n)/U(n,n);

fori=n-1:

x(i)=(y(i)-U(i,i+1:

n)*x(i+1:

n))/U(i,i);

A=[123;

252;

315];

b=[141820]'

[L,U,x]=doolittle1(A,b)

L=

100

210

3-81

U=

123

01-4

00-36

2.8333

1.3333

2.8333

平方根法:

function[L,x]=choesky3(A,b)

L=zeros(n);

L(:

1)=A(:

1)/sqrt(A(1,1));

L(k,k)=A(k,k)-L(k,1:

k-1)*L(k,1:

k-1)'

L(k,k)=sqrt(L(k,k));

fori=k+1:

L(i,k)=(A(i,k)-L(i,1:

)/L(k,k);

y=zeros(n,1);

y

(1)=b

(1)/L(1,1);

y(i)=(b(i)-L(i,1:

i-1))/L(i,i);

x(n)=y(n)/L(n,n);

x(i)=(y(i)-L(i+1:

n,i)'

*x(i+1:

n))/L(i,i);

A=[4-11;

-14.252.75;

12.753.5]

4.0000-1.00001.0000

-1.00004.25002.7500

1.00002.75003.5000

b=[467.25]'

4.0000

6.0000

7.2500

[L,x]=choesky3(A,b)

2.000000

-0.50002.00000

0.50001.50001.0000

迭代法求方程组的解

Jacobi迭代法:

function[x,k]=jacobi2(a,b,x0,ep,N)

%本算法用Jacobi迭代求解ax=b,用分量形式

N=500;

ep=1e-5;

x0=zeros(n,1);

whilenorm(x-x0,inf)>

k=k+1;

x0=x;

fori=1:

y(i)=b(i);

forj=1:

ifj~=i

y(i)=y(i)-a(i,j)*x0(j);

ifabs(a(i,i))<

1e-10|k==N

warning('

a(i,i)istoosmall'

return

y

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1