• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

  • Автор темы Drednoud
  • Дата начала
Статус
Закрыто для дальнейших ответов.
D

Drednoud

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

. Пользователь вводит приближенные значения "х" и "y" и "е"(точность)
А теперь косяки:
1. Ответ он мне выводит и "х" и "y" отрицательные, хотя по графику "х" положительный
2. Решая в ручную он мне выдает не понятные ответы.
Я просто в шоке
Кто может посмотрите, где может быть здесь ошибка
Код:

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
Код:




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


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
 
A

alex77755

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

. Пользователь вводит приближенные значения "х" и "y" и "е"(точность)
А теперь косяки:
1. Ответ он мне выводит и "х" и "y" отрицательные, хотя по графику "х" положительный
2. Решая в ручную он мне выдает не понятные ответы.
Я просто в шоке
Кто может посмотрите, где может быть здесь ошибка
<pre><code class="vbscript"></code></pre>

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

ошибка в функциях: функция должна выдавать значение "y", а у тебя "0"
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!