Система нелинейных уравнений, метод Ньютона - 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

Оцени полезность:

10   голосов , оценка 4.2 из 5
Похожие ответы