数值计算方法大作业

  • 格式:doc
  • 大小:277.00 KB
  • 文档页数:28

下载文档原格式

  / 28
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 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处的值。