数值计算编程20个Word文档格式.docx
《数值计算编程20个Word文档格式.docx》由会员分享,可在线阅读,更多相关《数值计算编程20个Word文档格式.docx(25页珍藏版)》请在冰点文库上搜索。
a(i)=InputBox("
x("
&
i&
"
)="
)
Nexti
p=a(3)
Fori=2To0Step-1
p=p*t+a(i)
Printp
49
4、程序:
Dima,b,sAsDouble
a=0.2
b=1.34
s=(a+b)/2
Ifa*(1-a)*s*(1-s)<
b=s
a=s
LoopUntilb-a<
0.01
Prints
0.997109375
5、程序:
PrivateSubForm_click()
Dimx,s,pAsDouble
x=101
s=10
p=1/2/10
i=1
s=s+p
p=p/2*(-1)/100*(2*i-1)
i=i+1
LoopUntilp<
10.05
6、拉格朗日:
Dimi,j,nAsInteger
Dimx(1To100),y(1To100),p,s,tAsDouble
t=2.5
n=3
Fori=1Ton
x(i)=InputBox("
y(i)=InputBox("
y("
s=0
p=1
Forj=1Ton
Ifi<
>
jThen
p=p*(t-x(j))/(x(i)-x(j))
Nextj
s=s+p*y(i)
6
7、课堂埃尔米特插值程序:
PrivateSubForm_Activate()
Dimx0,y0,x1,y1,g0,g1AsDouble
x0=0
y0=0
x1=1
y1=1
g0=0
g1=2
x=0.5
a0=-2/(x0-x1)^3
b0=1/(x0-x1)^2+2*x0/(x0-x1)^3
a1=-2/(x1-x0)^3
b1=2*x1/(x1-x0)^3+1/(x1-x0)^2
k0=1/(x0-x1)^2
k1=1/(x1-x0)^2
l0=(x-x1)^2*(a0*x+b0)
l1=(x-x0)^2*(a1*x+b1)
gg0=k0*(x-x0)*(x-x1)^2
gg1=k1*(x-x0)^2*(x-x1)
y=l0*y0+l1*y1+gg0*g0+gg1*g1
Printy
0.25
8、第一个:
样条函数:
Dimx(3),y(3),m0,m1,m2AsDouble
Fori=0To2
x(i)=i
y(i)=i*i
m0=0
m2=4
h0=x
(1)-x(0)
h1=x
(2)-x
(1)
a=2/h0
b=4/h0+4/h1
c=2/h1
d=(-6*y
(1)+6*y
(2))/h1^2-(6*y(0)-6*y
(1))/h0^2
m1=(d-a*m0-c*m2)/b
Printm1
2
9、牛顿插值:
DimkAsInteger
PrivateSubCombo1_Click()
k=CInt(Combo1.Text)
Fori=0To9
Text1(2*i).Visible=False
Text1(2*i+1).Visible=False
Label(i).Visible=False
Fori=0Tok-1
WithLabel(i)
.Visible=True
.Top=1560+400*i
.Caption="
第"
i+1&
点:
"
.Left=120
EndWith
WithText1(2*i)
.Left=800
.Top=1500+400*i
WithText1(2*i+1)
.Left=1500
PrivateSubCommand1_Click()
DimsAsDouble
s=s+ff(i)*f1(Text3.Text,i)
Text2.Text=s
PrivateSubCommand2_Click()
End
PrivateSubForm_Load()
Fori=2To10
Combo1.AddItemi
Functionff(ByValnAsInteger)
Ifn=0Then
ff=Text1
(1).Text
ExitFunction
Fori=0Ton
s=s+Text1(2*i+1).Text/f(i,n)
ff=s
EndFunction
Functionf(ByValpAsInteger,ByValnAsInteger)
s=1
pThen
s=s*(Text1(2*p).Text-Text1(2*i).Text)
f=s
Functionf1(ByValxAsDouble,ByValnAsInteger)
f1=1
Fori=0Ton-1
s=s*(x-Text1(2*i).Text)
f1=s
带入(1,1),(2,4),(3,7),(4,8),(5,6)得到变量为3.5时,插值结果为7.8359375
10、复化辛普生算法:
Dimi,nAsInteger
Dims,h,xAsDouble
a=InputBox("
请输入左端点a:
b=InputBox("
请输入右端点b:
n=InputBox("
请输入分段数n:
h=(b-a)/n
s=f(b)-f(a)
x=x+h/2
s=s+4*f(x)
s=s+2*f(x)
s=h/6*s
Text1.Text=s
Functionf(ByValxAsDouble)
Ifx=0Then
f=1
f=Sin(x)/x
当输入区间为(0,1),分8段,运行结果是0.1943
11、p153第6题
Dims,t,eAsDouble
Dimi,kAsInteger
t=0
k=0
s=(t+2)^0.5
e=0.001
Fori=0To20
IfAbs(s-t)<
eThen
k=1
ExitFor
t=s
1.829
12、p154第18题
DimaAsDouble
Dimx0,x,eAsDouble
x=5
e=0.000001
a="
x0=x
Text1.Text=Text1.Text&
vbCrLf&
f1(x0)
Iff1(x0)=0Then
x=x0-f(x0)/f1(x0)
IfAbs(x-x0)<
Ifi=20Then
MsgBox"
迭代失败!
Text1.Text=x
f=x^3-a
Functionf1(ByValxAsDouble)
f1=3*x^2
2.188
13、p155第24题牛顿法
Dimx0,eAsDouble
n=20
奇异"
Fori=oTo20
Iff1(x)=0Then
f=x^3+2*x^2+10*x-20
f1=3*x^2+4*x+10
1.137
14、p155第24题弦截法
Dimx0,x1,eAsDouble
x1=x0-f(x0)/f1(x0)
x=x1-f(x1)/(f(x1)-f(x0))*(x1-x0)
IfAbs(x-x1)<
x1=x
1.562
15、p155第24题快速弦截法
x0=x1
1.496
16、消去法
DimnAsInteger
Dima(1To10,1To10),b(1To10),x(1To10)AsDouble
Dimi,jAsInteger
Fori=1To100
Text1(i).Visible=False
Fori=1To10
Text2(i).Visible=False
Text3(i).Visible=False
n=Combo1.Text
WithText1((i-1)*n+j)
.Top=500*i+200
.Left=500*j
.Height=300
WithText2(i)
.Left=500*n+800
WithText3(i)
.Left=500*n+1800
.Width=700
Dimi,j,kAsInteger
Dims,rAsDouble
a(i,j)=Text1((i-1)*n+j).Text
b(i)=Text2(i).Text
Fori=1Ton-1
Forj=i+1Ton
r=a(j,i)/a(i,i)
Fork=iTon
a(j,k)=a(j,k)-r*a(i,k)
Nextk
b(j)=b(j)-r*b(i)
Fori=nTo1Step-1
s=b(i)
nThen
Forj=iTon
s=s-a(i,j)*x(j)
x(i)=s/a(i,i)
Text3(i).Text=x(i)
选择求解未知数个数为3,再依次输入A={2,-1,3;
4,2,5;
1,2,0;
}B={1,4,7;
}得到x={9,-1,-6}
17、追赶法
Dimaa(1To4),bb(1To4),cc(1To4),dd(1To4),xx(1To4),g(1To4),f(1To4)AsDouble
Fori=1To4
Ifi=1Then
aa(i)=0
aa(i)=a(i).Text
bb(i)=b(i).Text
Ifi=4Then
cc(i)=0
cc(i)=c(i).Text
dd(i)=d(i).Text
g
(1)=dd
(1)/bb
(1)
f
(1)=-cc
(1)/bb
(1)
Fori=2To4
g(i)=(dd(i)-aa(i)*g(i-1))/(aa(i)*f(i-1)+bb(i))
f(i)=-cc(i)/(aa(i)*f(i-1)+bb(i))
xx(4)=g(4)
x(4).Text=xx(4)
Fori=3To1Step-1
xx(i)=g(i)+f(i)*xx(i+1)
x(i).Text=xx(i)
依次输入方程组系数A={1,1;
1,2,1;
1,2,3;
1,2;
},B={3,8,20,11}得到结果为X={1,2,3,4;
}
18、高斯-赛德尔程序如下:
Dimk,t(1To3),s,a(1To3,1To3),b(1To3),x(1To3)AsDouble
Fori=1To3
Forj=1To3
a(i,j)=Text1(i*3+j-3).Text
x(i)=0
DoUntilk<
0.0001
Ifj<
iThen
Text4.Text=s
Text5.Text=s
t(i)=s/a(i,i)
k=Abs(t(i)-x(i))
ElseIfAbs(t(i)-x(i))>
kThen
x(i)=t(i)
Loop
运行结果:
输入系数A={7,5,-3;
5,7,1;
2,1,7;
}B={2,4,-11}得到X={-1.727,2.000,-1.363}
19、迭代法程序如下:
DoUntilk