数值计算方法大作业
- 格式:doc
- 大小:277.00 KB
- 文档页数:28
目录
第一章非线性方程求根 (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 Command1_Click()
x0 = Val(InputBox("请输入初始值x0"))
ep = Val(InputBox(请输入误差限ep))
f = 0
While f = 0
X1 = (Exp(2 * x0) - x0) / 5
If Abs(X1 - x0) < ep Then
Print X1
f = 1
Else
x0 = X1
End If
Wend
End Sub
例:求f(x)=e2x-6x=0在x=0.5附近的根(ep=10-10)
1.2牛顿法
程序代码:
Private Sub Command1_Click()
b = Val(InputBox("请输入被开方数x0"))
ep = Val(InputBox(请输入误差限ep))
f = 0
While f = 0
X1 = x0 - (x0 ^ 2 - b) / (2 * b)
If Abs(X1 - x0) < ep Then
Print X1
f = 1
Else
x0 = X1
End If
Wend
End Sub
例:求56的值。(ep=10-10)
1.3弦截法
程序代码:
Private Sub Command1_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) < ep Then
Print X2
f = 1
Else
x0 = X1
X1 = X2
End If
Wend
End Sub
例:求f(x)=x8-13的正根(初始值x1=1,x2=10,ep=10-10)
1.4二分法
程序代码:
Private Sub Command1_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 Then
f = 1
Print "方程的根是", x
Else
If fa * fx > 0 Then
a = x
Else
b = x
End If
If Abs(b - a) < ep Then
x = (b + a) / 2
f = 1
Print "方程的根是", x
End If
End If
Wend
End Sub
例:求方程f(x)=e-7/x(9-2x)-8在区间[0,1]的实根。(ep=10-10)
第二章插值
2.1线性插值
程序代码:
Private Sub Command1_Click()
X0 = Val(InputBox("请输入第一个结点X:"))
Y0 = Val(InputBox("请输入第一个结点Y:"))
X1 = Val(InputBox("请输入第二个结点X:"))
Y1 = Val(InputBox("请输入第二个结点Y:"))
f = 0
While f = 0
x = Val(InputBox("请输入未知点的自变量值X:"))
L0 = (x - X1) / (X0 - X1)
L1 = (x - X0) / (X1 - X0)
y = L0 * Y0 + L1 * Y1
Print "x="; x, "y="; y
f = Val(InputBox("是否继续(0/1):"))
Wend
End Sub
例:已知两点(13 , 1)、(49 , 8),求30处的值。