数值计算方法大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
第一章非线性方程求根 (3)
1.1迭代法 (3)
1.2牛顿法 (4)
1.3弦截法 (5)
1.4二分法 (6)
第二章插值 (7)
2.1线性插值 (7)
2.2二次插值 (8)
2.3拉格朗日插值 (9)
2.4分段线性插值 (10)
2.5分段二次插值 (11)
第三章数值积分 (13)
3.1复化矩形积分法 (13)
3.2复化梯形积分法 (14)
3.3辛普森积分法 (15)
3.4变步长梯形积分法 (16)
第四章线性方程组数值法 (17)
4.1约当消去法 (17)
4.2高斯消去法 (18)
4.3三角分解法 (20)
4.4雅可比迭代法 (21)
4.5高斯一赛德尔迭代法 (23)
第五章常积分方程数值法 (25)
5.1显示欧拉公式法 (25)
5.2欧拉公式预测校正法 (26)
5.3改进欧拉公式法 (27)
5.4四阶龙格一库塔法 (28)
数值计算方法
第一章非线性方程求根
1.1迭代法
程序代码:
PriVate Sub Comma nd1_Click()
x0 = Val(InputBox("请输入初始值 x0"))
ep = Val(InputBox(请输入误差限 ep))
f = 0
While f = 0
X1 = (Exp(2 * x0) - x0) / 5
If AbS(XI - x0) V ep Then
Print X1
f = 1
Else
x0 = X1
End If
Wend
End SUb
例:求f(x)=e2x-6x=0 在x=0.5 附近的根(ep=1O1°)
CL ForTTrI 左叵j SS
.3(⅛530⅛34T9⅛T
4
1
∙2⅜⅛
H -
Pr
<∙a φSUb COmmanCH
IC=Cko b
H V a -
(
⊃P U 65O ⅜⅛
鸯>|薄斗厲達 X o =)
) ep
H V a -(-n p u 650x (⅛⅛
J > 沛w ⅛l ⅛ ep)) 70
Whi
_e f H 0
XIHXOl(XO > 2 1 b)
二2 * b)
-f
Abs(x-k — Xo) Λ
①匸 Then PlinfXI
f
丄
E-Se
XOHXl
End
_f
VVend
End
SUb
1.3弦截法
程序代码:
PriVate Sub Comma nd1_Click()
x0 = Val(InputBox("请输入第一个初始值 x0"))
X1 = Val(InputBox("请输入第二个初始值x1"))
ep = Val(InputBox("请输入误差限 ep")) f = 0
While f = 0
X2 = X1 - (X1 ^ 8 - 13) * (X1 - x0) / ((X1 ^ 8 - 13) - (x0 ^ 8 - 13))
If AbS(X2 - X1) V ep Then
Print X2
f = 1
Else
x0 = X1
X1 = X2
End If
Wend
End SUb
例:求f(x)=x8-13 的正根(初始值X仁
1,x2=10,ep=101°)
1.4二分法
程序代码:
PriVate Sub Comma nd1_Click()
a = Val(InputBox("请输入区间端点a"))
b = Val(InputBox("请输入区间端点b")) ep = Val(InputBox("请输入误差限 ep")) f = 0
While f = 0
X = (a + b) / 2
fx = Exp(-x / 7) * (9 - 2 * x) - 8
fa = Exp(-a / 7) * (9 - 2 * a) - 8
If fx = 0 The n
f = 1
Print "方程的根是",X
Else
If fa * fx > 0 The n
a = X
Else
b = X
End If
If Abs(b - a) V ep The n
X = (b + a) / 2
f = 1
Print "方程的根是",X
End If
End If
Wend
End SUb
例:求方程f (X)=r x(9-2x)-8在区间[0,1]内的实根。
-10 \ (ep=10 )
J
ιπ∣p ∣
t 方程的根是.31555613OS24961
『Ξ⅛⅛—ii
i Ck
第二章插值
2.1线性插值
程序代码:
PriVate Sub Comma nd1_Click()
XO = Val(InputBox("请输入第一个结点 X:")) Yo =
Val(InputBox("请输入第一个结点丫:"))
X1 = Val(InputBox("请输入第二个结点 X:")) Y1 =
Val(InputBox("请输入第二个结点丫:")) f = 0
While f = 0
X = Val(I nputBox("请输入未知点的自变量值 X:")) LO = (X - X1) / (X0 - X1)
L1 = (X - X0) / (X1 - X0)
y = L0 * Y0 + L1 * Y1
Prin t "x="; x, "y="; y
f = Val(InputBox("是否继续(0/1):"))
Wend
End SUb
例:已知两点(13 , 1)、(49,8),求30处的值