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