Взяв пользовательское уравнение и используя его в сабвуфере VBA для вычисления числовых значений - PullRequest
0 голосов
/ 29 октября 2019

В настоящее время я работаю над программой для выполнения расчетов Рунге Кутты 4-го порядка для обыкновенных дифференциальных уравнений. Одно из требований к программе заключается в том, что пользователь вводит уравнение, которое он хочет вычислить для операции 4-го порядка. Есть ли способ взять введенное пользователем уравнение из определенной ячейки и использовать его в VBA sub для вычисления новых значений y?
Уравнения будут представлять собой многозначные многочленные уравнения, содержащие x и y. Это цикл, который я надеюсь использовать для выполнения вычислений, где equa в настоящее время является функцией с заранее установленным уравнением для тестирования, но планируется, чтобы оно было введено пользователем.


n = (xf - xi) / h

For i = 1 To n
    k1 = equa(x, y)
    y1 = y + k1 * h / 2

    k2 = equa(x + h / 2, y1)
    y2 = y + k2 * h / 2

    k3 = equa(x + h / 2, y2)
    y3 = y + k3 * h / 2

    k4 = equa(x + h, y3)

    yf = y + ((k1 + 2 * k2 + 2 * k3 + k4) * (1 / 6) * h)

    Cells(7 + i, 1).Value = y

    x = x + h
Next i

1 Ответ

1 голос
/ 29 октября 2019

Простой пример использования Evaluate:

Debug.Print Resolve("2*<x> + 3*<y>",1,2) '>>8


Function Resolve(sEq As String, x, y)
    Resolve = Application.Evaluate(Replace(Replace(sEq, "<x>", x), "<y>", y))
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...