计算方法程序.docx

上传人:b****7 文档编号:16031881 上传时间:2023-07-10 格式:DOCX 页数:20 大小:149.98KB
下载 相关 举报
计算方法程序.docx_第1页
第1页 / 共20页
计算方法程序.docx_第2页
第2页 / 共20页
计算方法程序.docx_第3页
第3页 / 共20页
计算方法程序.docx_第4页
第4页 / 共20页
计算方法程序.docx_第5页
第5页 / 共20页
计算方法程序.docx_第6页
第6页 / 共20页
计算方法程序.docx_第7页
第7页 / 共20页
计算方法程序.docx_第8页
第8页 / 共20页
计算方法程序.docx_第9页
第9页 / 共20页
计算方法程序.docx_第10页
第10页 / 共20页
计算方法程序.docx_第11页
第11页 / 共20页
计算方法程序.docx_第12页
第12页 / 共20页
计算方法程序.docx_第13页
第13页 / 共20页
计算方法程序.docx_第14页
第14页 / 共20页
计算方法程序.docx_第15页
第15页 / 共20页
计算方法程序.docx_第16页
第16页 / 共20页
计算方法程序.docx_第17页
第17页 / 共20页
计算方法程序.docx_第18页
第18页 / 共20页
计算方法程序.docx_第19页
第19页 / 共20页
计算方法程序.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计算方法程序.docx

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

计算方法程序.docx

计算方法程序

扫描加二分法

PrivateSubCommand1_Click()

DimlAsDouble,uAsDouble,hAsDouble,iAsDouble,rAsDouble

h=Val(Text2.Text)

Fori=-3To3-h/2Steph

l=f(i)

u=f(i+h)

Ifl*u<=0Then

r=bisection(i,i+h)

Print

EndIf

Nexti

EndSub

Functionf(xAsDouble)AsDouble

f=4*x^3-8*x^2+2*x+1

EndFunction

Functionbisection(aAsDouble,bAsDouble)AsDouble

DimeAsDouble,mAsDouble

e=Val(Text1.Text)

Do

m=(a+b)/2

Iff(a)*f(m)<=0Then

b=m

Else

a=m

EndIf

LoopUntil(Abs(b-a)

Printm

EndFunction

弦截法

PrivateSubCommand1_Click()

Dimx0!

x1!

x2!

ep#,n%,k%

x0=Val(Text1.Text)

x1=Val(Text4.Text)

ep=Val(Text2.Text)

n=Val(Text3.Text)

k=0

Do

k=k+1

x2=x1-g(x1)*(x1-x0)/(g(x1)-g(x0))

IfAbs(x1-x2)

Label5.Caption=x2

ExitSub

Else

x0=x1

x1=x2

EndIf

LoopUntil(k=n)

Label5.Caption="迭代失败,请调整参数!

"

EndSub

PublicFunctiong(x)

g=x^3+2*x^2+10*x-20

EndFunction

迭代法

PrivateSubCommand1_Click()

Dimx0!

x1!

ep#,n%,k%

x0=Val(Text1.Text)

ep=Val(Text2.Text)

n=Val(Text3.Text)

k=0

Do

k=k+1

x1=g(x0)

IfAbs(x0-x1)

Label4.Caption=x1

ExitSub

Else

x0=x1

EndIf

LoopUntil(k=n)

Label4.Caption="迭代失败,请调整参数!

"

EndSub

PublicFunctiong(x)

g=(x+1)^(1/3)

EndFunction

牛顿法

PrivateSubCommand1_Click()

Dimx0!

ep!

n%,k%,x1!

x0=Val(Text1.Text)

ep=Val(Text2.Text)

n=Val(Text3.Text)

k=0

Do

k=k+1

If(g(x0)=0)Then

Text4.Text="wrong"

ExitSub

EndIf

x1=x0-f(x0)/g(x0)

If(Abs(x1-x0)

Text4.Text=Format(x1,"0.000")

ExitSub

EndIf

x0=x1

LoopUntil(k=n)

Text4.Text="迭代失败!

"

EndSub

Functionf(x)

Dime!

e=2.718

f=x*e^x-1

EndFunction

Functiong(x)

Dime!

e=2.718

g=x+e^x

EndFunction

埃特金算法

PrivateSubCommand1_Click()

Dimx0!

x1!

x2!

ep#,n%,k%

x0=Val(Text1.Text)

ep=Val(Text2.Text)

n=Val(Text3.Text)

k=1

Do

k=k+1

x1=g(x0)

x2=g(x1)

x2=x2-(x2-x1)^2/(x2-2*x1+x0)

IfAbs(x0-x1)

Label4.Caption=x2

ExitSub

Else

x0=x2

EndIf

LoopUntil(k=n)

Label4.Caption="迭代失败,请调整参数!

"

EndSub

PublicFunctiong(x)

g=(x+1)^(1/3)

EndFunction

高斯消去法

Dima!

(),b!

(),n%,i%,j%,k%

PrivateSubCommand1_Click()

Open"c:

\aa.txt"ForInputAs#1

Input#1,n

ReDima(n,n),b(n)

Picture1.Print"n=";n

Fori=1Ton

Forj=1Ton

Input#1,a(i,j)

Picture1.Printa(i,j);

Nextj

Input#1,b(i)

Picture1.Printb(i)

Nexti

MsgBox"文件读入成功!

",64

Close#1

EndSub

PrivateSubCommand2_Click()

Dimk%

Fork=1Ton

l=k

D=a(k,k)

Fori=k+1Ton

IfAbs(a(i,k))>Abs(D)Then

D=a(i,k)

l=i

EndIf

Nexti

IfD=0Then

Picture2.Print"奇异矩阵"

ExitSub

EndIf

Ifl<>kThen

Forj=kTon

t=a(l,j)

a(l,j)=a(k,j)

a(k,j)=t

Nextj

t=b(k)

b(k)=b(l)

b(l)=t

EndIf

Forj=k+1Ton

a(k,j)=a(k,j)/a(k,k)

Nextj

b(k)=b(k)/a(k,k)

Fori=k+1Ton

Forj=k+1Ton

a(i,j)=a(i,j)-a(i,k)*a(k,j)

Nextj

Nexti

Fori=k+1Ton

b(i)=b(i)-a(i,k)*b(k)

Nexti

Nextk

Fori=n-1To1Step-1

s=0

Forj=i+1Ton

s=s+a(i,j)*b(j)

Nextj

b(i)=b(i)-s

Nexti

Fori=1Ton

Picture2.Print"x(";i;")=";b(i)

Nexti

EndSub

高斯赛德尔迭代

PrivateSubCommand1_Click()

Dima!

(),b!

(),x!

(),y!

(),max!

k%,n1%,ep!

n%,s!

i%,j%

n=Val(Text1.Text)

ReDima(n,n),b(n),x(n),y(n)

Fori=1Ton

Forj=1Ton

a(i,j)=InputBox("请输入系数矩阵a("&i&","&j&")的值:

")

Nextj

b(i)=InputBox("请输入b("&i&")的值:

")

Nexti

ep=Val(Text2.Text)

n1=Val(Text3.Text)

k=0

Fori=1Ton

x(i)=0

y(i)=0

Nexti

Do

k=k+1

Fori=1Ton

s=0

Forj=1Ton

Ifi<>jThen

s=s+a(i,j)*y(j)

EndIf

Nextj

y(i)=(b(i)-s)/a(i,i)

Nexti

max=0

Fori=1Ton

Ifmax

max=Abs(x(i)-y(i))

EndIf

Nexti

Ifmax

Fori=1Ton

Picture1.Print"x(";i;")=";y(i)

Nexti

ExitSub

Else

Fori=1Ton

x(i)=y(i)

Nexti

EndIf

LoopUntil(k=n1)

Picture1.Print"迭代失败!

"

EndSub

追赶法

Dima!

(),b!

(),C!

(),D!

(),n%,t#,s#

PrivateSubCommand1_Click()

Open"E:

\ll.txt"ForInputAs#1

Input#1,n

Picture1.Print"n=";n

ReDima(n),b(n),C(n),D(n)

Input#1,b

(1),C

(1),D

(1)

Picture1.Printb

(1),C

(1),D

(1)

Fori=2Ton-1

Input#1,a(i),b(i),C(i),D(i)

Picture1.Printa(i),b(i),C(i),D(i)

Nexti

Input#1,a(n),b(n),D(n)

Picture1.Printa(n),b(n),D(n)

MsgBox"文件读入成功!

",64

Close#1

EndSub

PrivateSubCommand2_Click()

C

(1)=C

(1)/b

(1)

D

(1)=D

(1)/b

(1)

Fori=2Ton-1Step1

t=b(i)-C(i-1)*a(i)

C(i)=C(i)/t

s=D(i)-D(i-1)*a(i)

D(i)=s/t

Nexti

D(n)=(D(n)-D(n-1)*a(n))/(b(n)-C(n-1)*a(n))

Fori=n-1To1Step-1

D(i)=D(i)-(C(i)*D(i+1))

Nexti

Fori=1Ton

Picture2.Print"x(";i;")=";D(i)

Nexti

EndSub

拉格朗日插值

PrivateSubCommand1_Click()

Dima!

b!

x!

(),y!

(),t!

k%,j%,i%,n%

a=Val(Text1.Text)

n=Val(Text2.Text)

ReDimx(n),y(n)

Fori=0Ton

x(i)=InputBox("请输入x("&i&")的值:

")

y(i)=InputBox("请输入y("&i&")的值:

")

Nexti

b=0

Fork=0Ton

t=1

Forj=0Ton

Ifj<>kThen

t=(a-x(j))/(x(k)-x(j))*t

EndIf

Nextj

b=b+t*y(k)

Nextk

Text3.Text=b

EndSub

复化辛浦生算法

PrivateSubCommand1_Click()

Dima!

b!

n%,h!

k%,s!

X!

a=Val(Text1.Text)

b=Val(Text2.Text)

n=Val(Text3.Text)

h=(b-a)/n

s=f(b)-f(a)

X=a

Fork=1Ton

X=X+h/2

s=s+4*f(X)

X=X+h/2

s=s+2*f(X)

Nextk

s=h/6*s

Text4.Text=Format(s,"0.000000000")

EndSub

Functionf(X)

f=X^2

EndFunction

三角分解法:

PrivateSubCommand1_Click()

Dima(1To4,1To4),b(1To4),l(1To4,1To4),r(1To4,1To4),y(1To4),x(1To4)AsDouble

Dimi,j,k,n,mAsInteger

Dims,p,q,wAsDouble

s=0

p=0

q=0

w=0

n=InputBox("输入n的值")

Fori=1Ton

Forj=1Ton

a(i,j)=InputBox("输入"&i&","&j&"元素的值")

Next

Next

Fori=1Ton

b(i)=InputBox("输入"&i&"元素的值")

Next

Fork=1Ton

Forj=kTon

Form=1Tok-1

s=s+l(k,m)*r(m,j)

Next

r(k,j)=a(k,j)-s

Next

Fori=k+1Ton

Form=1Tok-1

p=p+l(i,m)*r(m,k)

Next

l(i,k)=(a(i,k)-p)/r(k,k)

Next

Next

Fori=1Ton

Forj=1Toi-1

p=p+l(i,j)*y(j)

Next

y(i)=b(i)-p

Next

Fori=nTo1Step-1

Forj=i+1Ton

w=w+r(i,j)*x(j)

Next

x(i)=(y(i)-w)/r(i,i)

Next

Fori=1Ton

Forj=iTon

Printr(i,j);

Next

Print

Next

Fori=1Ton

Forj=1Toi

Printl(i,j);

Next

Print

Nexti

Fori=1Ton

Print,x(i)

Next

EndSub

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

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

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

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