Решение уравнения несколькими способами - VB
Формулировка задачи:
решить уравнение sinx + x - 1 = 0 методами половинного деления, методом хорда, методом касательных(Ньютона) и методом итераций
Решение задачи: «Решение уравнения несколькими способами»
textual
Листинг программы
Function F(x As Double) As Double F = Sin(x) + x - 1 End Function Function DF(x As Double) As Double DF = Cos(x) + 1 End Function Function Fi(x As Double) As Double Fi = 1 - Sin(x) End Function Function hord(ByVal a#, ByVal b#, ByVal eps#) Dim x1#, x2#, k% eps = 10 ^ (-eps) x2 = a k = 1 Do x1 = x2 x2 = x1 - (x1 - b) * (F(x1) / (F(x1) - F(b))) k = k + 1 Loop While (Abs(x2 - x1) > eps) hord = x2 & " k=" & k End Function Function N(ByVal a#, ByVal b#, ByVal eps#) Dim x1#, x2#, k% eps = 10 ^ (-eps) x2 = (b + a) / 2 k = 1 Do x1 = x2 x2 = x1 - (F(x1) / DF(x1)) k = k + 1 Loop While (Abs(x2 - x1) > 2 * eps) N = (x1 + x2) / 2 & " k=" & k + 1 End Function Function bs(ByVal a#, ByVal b#, ByVal eps#) Dim c#, k% eps = 10 ^ (-eps) k = 0 While Abs((b - a) / 2) >= eps c = (a + b) / 2 If Sgn(F(a)) <> Sgn(F(c)) Then b = c Else a = c k = k + 1 Wend bs = c & " k=" & k + 1 End Function Function Iter(ByVal a#, ByVal b#, ByVal eps#) Dim x1#, x2#, k% eps = 10 ^ (-eps) k = 0 x2 = a Do x1 = x2 x2 = Fi(x1) k = k + 1 Loop While Abs(x1 - x2) > eps Iter = x2 & " k=" & k + 1 End Function Private Sub Command1_Click() Dim a#, b#, e# a = 0: b = 1: e = 15 MsgBox "N:" & vbTab & N(a, b, e) & vbLf & _ "hord:" & vbTab & hord(a, b, e) & vbLf & _ "bs:" & vbTab & bs(a, b, e) & vbLf & _ "Iter:" & vbTab & Iter(a, b, e) End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д