Система нелинейных уравнений, метод Ньютона - VB
Формулировка задачи:
Решить систему нелинейных уравнений методом Ньютона корни найти с точностью ε=0,001
M (1;1)
Решение задачи: «Система нелинейных уравнений, метод Ньютона»
textual
Листинг программы
- Sub Kramer2(A() As Double, B() As Double, R() As Double)
- Det# = A(1, 1) * A(2, 2) - A(2, 1) * A(1, 2)
- Det1# = B(1) * A(2, 2) - B(2) * A(1, 2)
- Det2# = A(1, 1) * B(2) - A(2, 1) * B(1)
- R(1) = Det1# / Det#
- R(2) = Det2# / Det#
- End Sub
- Function f1(x As Double, y As Double) As Double
- f1 = Exp(x) - Exp(y) - 1
- End Function
- Function Dxf1(x As Double) As Double
- Dxf1 = Exp(x) - Exp(y) - 1
- End Function
- Function Dyf1(y As Double) As Double
- Dyf1 = -Exp(y)
- End Function
- Function f2(x As Double, y As Double) As Double
- f2 = x ^ 3 + y ^ 3 - 1
- End Function
- Function DxF2(x As Double) As Double
- DxF2 = 3 * x ^ 2
- End Function
- Function DyF2(x As Double) As Double
- DyF2 = 3 * y ^ 2
- End Function
- Sub Newton()
- Dim Jac(1 To 2, 1 To 2) As Double
- Dim B(1 To 2) As Double
- Dim R(1 To 2) As Double
- x1# = 1
- x2# = 1
- Do
- Debug.Print x1#; " "; x2#
- Jac(1, 1) = Dxf1(x1#)
- Jac(1, 2) = Dyf1(x2#)
- Jac(2, 1) = DxF2(x1#)
- Jac(2, 2) = DyF2(x2#)
- B(1) = -f1(x1#, x2#)
- B(2) = -f2(x1#, x2#)
- Kramer2 Jac(), B(), R()
- If Sqr(R(1) ^ 2 + R(2) ^ 2) < 0.0000001 Then Exit Do
- x1# = x1# + R(1)
- x2# = x2# + R(2)
- Loop
- '::: Контрольная печать
- Debug.Print f1(x1#, x2#)
- Debug.Print f2(x1#, x2#)
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д