Косяк в программе Vba

Тема в разделе "Visual Basic", создана пользователем Drednoud, 14 апр 2011.

Статус темы:
Закрыта.
  1. Drednoud

    Drednoud Гость

    Написал программу для Решения системы из 2-х нелинейных уравнений методом Ньютона при ε =0.003
    sin(2x)-y-1,2x-0,4=0
    0,8x^2+1,5y-1=0 Это само задание

    . Пользователь вводит приближенные значения "х" и "y" и "е"(точность)
    А теперь косяки:
    1. Ответ он мне выводит и "х" и "y" отрицательные, хотя по графику "х" положительный
    2. Решая в ручную он мне выдает не понятные ответы.
    Я просто в шоке
    Кто может посмотрите, где может быть здесь ошибка
    Код (LotusScript):
     
    Option Explicit
    Function F(x, y As Double) As Double
    F = Sin(2 * x) - y - 1.2 * x - 0.4
    End Function
    Function G(x, y As Double) As Double
    G = 0.8 * x ^ 2 - 1.5 * y - 1
    End Function
    Function Fx(x As Double) As Double
    Fx = 2 * Cos(2 * x)
    End Function

    Function Gx(x As Double) As Double
    Gx = 1.6 * x
    End Function
    Private Sub CommandButton1_Click()
    Dim e As Double
    Dim a As Double
    Dim b As Double
    Dim Px As Double
    Dim Py As Double
    Dim J As Double
    Dim Dx As Double
    Dim Dy As Double
    Dim i As Integer
    Dim k As Integer
    Const Gy = -1.5
    Const Fy = -2.2
    a = Val(UserForm1.TextBox1.Text)
    b = Val(UserForm1.TextBox2.Text)
    e = Val(UserForm1.TextBox3.Text)
    k = 0
    For i = 0 To 100

    J = ((Fx(a)) * (Gy) - ((Gx(a)) * (Fy)))
    Dx = (-1 * (F(a, b)) * (Gy) - (-1 * (G(a, b)) * (Fy)))
    Dy = ((Fx(a)) * (-1 * (G(a, b)))) - ((Gx(a)) * (-1 * (F(a, b))))
    Px = Dx / J
    Py = Dy / J
    a = a + Px
    b = b + Py
    k = k + 1
    If Abs(Px) <= e And Abs(Py) <= e Then Exit For
    Next i

    Range("G44").Value = a
    Range("G43").Value = b
    Range("G46").Value = k

    Label1.Caption = "Приближенное значение корня x* = " & b & "; " & _
    "Приближенное значение корня y* =" & (a) & "; " & _
    "Количество итерации необходимых для получения корней с заданной точностью =" & (k)
    End Sub
    Код ( (Unknown Language)):
     



    Добавлено: Это мои уравнения


    sin(2x)-y-1,2x-0,4=0 y1= sin(2x)-1,2x-0,4
    0,8x^2+1,5y-1=0 y2= (1-0,8x^2)/1,5
    x y1 y2
    0,5 -0,158529015 -0,533333333
    0,6 -0,187960914 -0,474666667
    0,7 -0,25455027 -0,405333333
    0,8 -0,360426397 -0,325333333
    0,9 -0,506152369 -0,234666667
    1 -0,690702573 -0,133333333
    1,1 -0,911503596 -0,021333333
    1,2 -1,164536819 0,101333333
    1,3 -1,444498628 0,234666667
    1,4 -1,74501185 0,378666667
    1,5 -2,058879992 0,533333333
    1,6 -2,378374143 0,698666667
    1,7 -2,695541102 0,874666667
    1,8 -3,002520443 1,061333333
    1,9 -3,291857891 1,258666667
     
  2. alex77755

    alex77755 Well-Known Member

    Регистрация:
    15 фев 2009
    Сообщения:
    128
    Симпатии:
    0
    ошибка в функциях: функция должна выдавать значение "y", а у тебя "0"
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей