VB求方程的根报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

求方程的根设计报告

学院 管理学院 班级 管理C123 学号 127977 姓名 胡子璇 成绩

一、设计思路

1.要达到的目的

①学会利用标准控件 ②学会利用基本算法

③综合利用VB 语言进行程序设计 ④开发创新思维 2.关键问题的解决

①将若干个指定的方程显示到组合框中,以便选择。 ②实现牛顿迭代法和二分法两种最基本的算法。 ③使用Option 控件进行算法的选择。

④使用列表框分别显示迭代或二分的过程结果 ⑤迭代或二分的结果保存到文件中

⑥实现弦截法这种算法并将结果保存到文件中 ⑦实现对用户出错的基本提醒,更加人性化

二、模块之间的调用关系,或程序流程图

三、部分程序关键源代码及注释

Combo1.AddItem "3*x^7-4x+6" ‘将方程输入到组合框中 Option1.Value = True ‘使第一个单选按钮呈现选中状态

List1.Clear ‘使运行过程和结果显示在列表框中

Combo1.ListIndex = 0 ‘在组合框中选择第一个方程

调用

调用

调用

x = InputBox("x0的值") ‘迭代初值的输入

m = InputBox("迭代次数") ‘迭代次数的输入

n = 0 ‘以下为牛顿迭代法的过程

x0 = x

Do

n = n + 1

x0 = x

fx0 = 3 * x0 ^ 7 - 4 * x0 + 6

f10 = 21 * x0 ^ 6 - 4

x = x0 - fx0 / f10

List1.AddItem "n=" & n & "," & "x=" & x

Loop While Abs(x - x0) > 0.000001 And Abs(fx0) > 0.000001 And n <= m ‘循环结构结束的

条件

If n > m Then ‘判断迭代次数是否符合

MsgBox "初值不对,请重新选择!"

End if

ElseIf Option2.Value = True Then

List2.Clear

If Combo1.ListIndex = 0 Then

a = 30

X1 = InputBox("输入区间的第一个值") ‘区间第一个值的输入

X2 = InputBox("输入区间第二个值") ‘区间第二个值的输入

f1 = 3 * X1 ^ 7 - 4 * X1 + 6

f2 = 3 * X2 ^ 7 - 4 * X2 + 6

If X1 < X2 Then ‘判断是否符合二分法条件

If X1 * X2 < 0 Then

x0 = X1 ‘以下为二分法算法

n = 0

Do

n = n + 1

X = (X1 + X2) / 2

f = 3 * X ^ 7 - 4 * X + 6

If f * f1 < 0 Then

X2 = X

f2 = f

End If

If f * f2 < 0 Then

X1 = X

f1 = f

End If

List2.AddItem "n=" & n & "," & "x=" & X

Loop While Abs(X - x0) > 0.000001 And n <= a

ElseIf X1 * X2 > 0 Then ‘提醒用户错误原因

MsgBox ("区间范围不对,请先输入较小数")

End If

ElseIf X1 > X2 Then

MsgBox ("区间范围不对,重新输入")

End If

ElseIf Option3.Value = True Then

List3.Clear

If Combo1.ListIndex = 0 Then

X1 = InputBox("输入区间的第一个值")

X2 = InputBox("输入区间第二个值")

f1 = 3 * X1 ^ 7 - 4 * X1 + 6

f2 = 3 * X2 ^ 7 - 4 * X2 + 6

If X1 < X2 Then

If X1 * X2 < 0 Then

n = 0 ‘以下为弦截法算法

Do

x0 = X

n = n + 1

X = (f1 * X2 - f2 * X1) / (f1 - f2)

f = 3 * X ^ 7 - 4 * X + 6

If f * f1 > 0 Then

X1 = X

f1 = f

End If

If f * f2 > 0 Then

X2 = X

f2 = f

End If

List3.AddItem "n=" & n & "," & "x=" & X

Loop While Abs(X - x0) > 0.000001 And n <= a

ElseIf X1 * X2 > 0 Then

MsgBox ("区间范围不对,请先输入较小数")

End If

ElseIf X1 > X2 Then

MsgBox ("区间范围不对,重新输入")

End If

fileno = FreeFile ‘给予fileno一个空白内存Open App.Path & "\c.txt" For Append As #fileno ‘文件的保存位置

For i = 0 To List2.ListCount – 1 ‘利用循环结构将数据从列表

框中分离并保存

ss = List2.List(i)

b = Split(ss, ",")

相关文档
最新文档