数值计算方法大作业Word文件下载.docx
《数值计算方法大作业Word文件下载.docx》由会员分享,可在线阅读,更多相关《数值计算方法大作业Word文件下载.docx(32页珍藏版)》请在冰豆网上搜索。
![数值计算方法大作业Word文件下载.docx](https://file1.bdocx.com/fileroot1/2023-2/2/5c59dd54-d5b6-4f74-b2e9-e4722c348291/5c59dd54-d5b6-4f74-b2e9-e4722c3482911.gif)
17
4.1约当消去法·
17
4.2高斯消去法·
18
4.3三角分解法·
20
4.4雅可比迭代法·
21
4.5高斯—赛德尔迭代法·
23
第五章常积分方程数值法·
25
5.1显示欧拉公式法·
5.2欧拉公式预测校正法·
26
5.3改进欧拉公式法·
27
5.4四阶龙格—库塔法·
28
数值计算方法
第一章非线性方程求根
1.1迭代法
程序代码:
PrivateSubCommand1_Click()
x0=Val(InputBox("
请输入初始值x0"
))
ep=Val(InputBox(请输入误差限ep))
f=0
Whilef=0
X1=(Exp(2*x0)-x0)/5
IfAbs(X1-x0)<
epThen
PrintX1
f=1
Else
x0=X1
EndIf
Wend
EndSub
例:
求f(x)=e2x-6x=0在x=0.5附近的根(ep=10-10)
1.2牛顿法
b=Val(InputBox("
请输入被开方数x0"
X1=x0-(x0^2-b)/(2*b)
求
的值。
(ep=10-10)
1.3弦截法
请输入第一个初始值x0"
X1=Val(InputBox("
请输入第二个初始值x1"
ep=Val(InputBox("
请输入误差限ep"
X2=X1-(X1^8-13)*(X1-x0)/((X1^8-13)-(x0^8-13))
IfAbs(X2-X1)<
PrintX2
X1=X2
求f(x)=x8-13的正根(初始值x1=1,x2=10,ep=10-10)
1.4二分法
a=Val(InputBox("
请输入区间端点a"
请输入区间端点b"
x=(a+b)/2
fx=Exp(-x/7)*(9-2*x)-8
fa=Exp(-a/7)*(9-2*a)-8
Iffx=0Then
Print"
方程的根是"
x
Iffa*fx>
0Then
a=x
b=x
IfAbs(b-a)<
x=(b+a)/2
求方程f(x)=e-7/x(9-2x)-8在区间[0,1]内的实根。
第2章插值
2.1线性插值
X0=Val(InputBox("
请输入第一个结点X:
"
Y0=Val(InputBox("
请输入第一个结点Y:
请输入第二个结点X:
Y1=Val(InputBox("
请输入第二个结点Y:
x=Val(InputBox("
请输入未知点的自变量值X:
L0=(x-X1)/(X0-X1)
L1=(x-X0)/(X1-X0)
y=L0*Y0+L1*Y1
x="
;
x,"
y="
y
f=Val(InputBox("
是否继续(0/1):
已知两点(13,1)、(49,8),求30处的值。
2.2二次插值
X2=Val(InputBox("
请输入第三个结点X:
Y2=Val(InputBox("
请输入第三个结点Y:
L0=(x-X1)*(x-X2)/(X0-X1)/(X0-X2)
L1=(x-X0)*(x-X2)/(X1-X0)/(X1-X2)
L2=(x-X0)*(x-X1)/(X2-X0)/(X2-X1)
y=L0*Y0+L1*Y1+L2*Y2
已知三点(81,9)、(100,10)、(121,10),求98处的值。
2.3拉格朗日插值
Dimx(),y()
n=Val(InputBox("
请输入插值节点数N"
ReDimx(n),y(n)
Fori=0Ton
x(i)=Val(InputBox("
请输入插值节点x("
+Str(i)+"
)"
y(i)=Val(InputBox("
请输入插值节点y("
Nexti
xx=Val(InputBox("
请输入未知点的自变量x:
Sum=0
t=1
Forj=0Ton
Ifj<
>
iThen
t=t*(xx-x(j))/(x(i)-x(j))
Nextj
Sum=Sum+t*y(i)
xx,"
Sum
是否继续(0/1)"
已知四点(100,10)、(81,9)、(64,8)、(49,7),求87处的值。
2.4分段线性插值
L=0
j=1
WhileL=0
Ifxx<
x(j)Then
k=j+1
L=1
j=j+1
Ifj>
n-1Then
k=n-1
l0=(xx-x(k))/(x(k-1)-x(k))
l1=(xx-x(k-1))/(x(k)-x(k-1))
yy=l0*y(k-1)+l1*y(k)
yy
已知三点(361,19)、(324,18)、(289,17),N=2,求300处的值。
2.5分段二次插值
Ifx0<
x
(1)Then
k=1
i=2
DoWhilef=0Andi>
=n-1
x(i)Then
Ifx0-x(i-1)<
x(i)-x0Then
k=i-1
k=i
i=i+1
Loop
Iff=0Then
l1=(xx-x(k+1))*(xx-x(k))/((x(k-1)-x(k+1))*(x(k-1)-x(k)))
l2=(xx-x(k+1))*(xx-x(k-1))/((x(k)-x(k+1))*(x(k)-x(k-1)))
l3=(xx-x(k))*(xx-x(k-1))/((x(k+1)-x(k))*(x(k+1)-x(k-1)))
yy=l1*y(k-1)+l2*y(k)+l3*y(k+1)
已知三点(225,15)、(196,14)、(169,13),求180处的值。
第3章数值积分
3.1复化矩形积分法
请输入积分下限a"
请输入积分上限b"
请输入积分区间等分数N"
h=(b-a)/n
Fori=1Ton
Sum=Sum+(a+(i-0.5)*h)^2
r=h*Sum
复化矩形积分法计算结果:
r
例:
求X2在区间[3,5]的积分值,等分区间为100。
3.2复化梯形积分法
Fori=1Ton-1
Sum=Sum+(a+i*h)^2
t=h*(a^2+b^2)/2+h*Sum
复化梯形积分法计算结果:
t
3.3辛普生积分法
请输入积分下限A:
请输入积分上限B:
请输入积分区间等分数N:
w=a+h/2
Whilew<
b
Sum=Sum+(w-h/2)^2+4*w^2+(w+h/2)^2
w=w+h
s=Sum*h/6
辛普生积分法计算结果:
s
3.4变步长梯形积分法
请输入积分下限a:
请输入积分上限b:
请输入误差限ep:
n=1
h=b-a
t1=h*(a^2+b^2)/2
Sum=Sum+(a+(i-1/2)*h)^2
T2=t1/2+h*Sum/2
IfAbs(T2-t1)<
PrintT2
t1=T2
h=h/2
n=2*n
求X2在区间[3,5]的积分值,误差限ep=0.0001。
第4章线性方程组数值解法
4.1约当消去法
Dima()
请输入方程的个数N:
ReDima(n,n+1)
Forj=1Ton+1
a(i,j)=Val(InputBox("
请输入增广矩阵A("
"
+Str(j)+"
)="
Fork=1Ton
m=a(k,k)
Forj=kTon+1
a(k,j)=a(k,j)/m
Ifi<
kThen
m=a(i,k)
a(i,j)=a(i,j)-a(k,j)*m
Nextk
x("
a(i,n+1)
已知方程组,求X1X2X3的值。
X1+X2+X3=20
2X1+3X2+X3=38
X1+4X2+X3=35
4.2高斯消去法
Dima(),x()
请输入方程个数N:
ReDima(n,n+1),x(n)
):
Fork=1Ton-1
Fori=k+1Ton
x(n)=a(n,n+1)/a(n,n)
Fori=n-1To1Step-1
Forj=i+1Ton
Sum=Sum+a(i,j)*x(j)
x(i)=a(i,n+1)-Sum
x(i)
2X1+5X2+X3=21
4X1+3X2+3X3=31
X1+3X2+2X3=16
4.3三角分解法
Dima(),b(),l(),u(),x(),y()
ReDima(n,n),b(n),l(n,n),u(n,n),x(n),y(n)
Forj=1Ton
请输入系数矩阵A("
b(i)=Val(InputBox("
请输入右端常数项B("
Ifi>
jThen
Fork=1Toj-1
Sum=Sum+l(i,k)*u(k,j)
l(i,j)=(a(i,j)-Sum)/u(j,j)
Fork=1Toi-1
u(i,j)=a(i,j)-Sum
Forj=1Toi-1
Sum=Sum+l(i,j)*y(j)
y(i)=b(i)-Sum
Fori=nTo1Step-1
Sum=Sum+u(i,j)*x(j)
x(i)=(y(i)-Sum)/u(i,i)
2X1+3X2+4X3=38
X1+7X2+3X3=65
5X1+2X2+X3=33
4.4雅可比迭代法
Dima(),b(),x0(),x()
ReDima(n,n),b(n),x0(n),x(n)
请输入误差限EP:
nmax=Val(InputBox("
请输入最大迭代次数Nmax: