Решение дифференциальных уравнений первого порядка
методом Рунге-Кутта.

Данный проект VBA позволяет решать дифференциальные уравнения первого порядка одним из численных методов, а именно, методом Рунге-Кутта.

Исходные данные:

  • границы интервала a и b;
  • шаг интегрирования h;
  • начальное значение для решения y(a), позволяющее правильно определить константу…
вводятся в соответствующие ячейки столбца «J».

И самое главное (самая ответственная часть) необходимо без ошибок ввести формулу в ячейку «D3». Эта формула получается из заданного уравнения и представляет функцию, являющуюся производной от решения. Ее параметрами может быть как только х (т.е. ячейка «D4»), так и х совместно с у (т.е. ячейкой «D5»). На рисунке показан пример ввода формулы для заданного уравнения…
В ячейки «D4» и «D5» вводить ничего не нужно… Туда значения будет подставлять макрос…

Код Шифр Цезаря на C# Visual Studio 2012 JW Player here replace

Если не удалось запустить видео, воспользуйтесь этой ссылкой ... видео на YouTube



VBA EXCEL Решение дифференциальных уравнений методом Рунге-Кутты

После этого остается нажать кнопку «Решить» и … если Вы не забыли включить макросы, то увидите, быстро меняющиеся текущие значения в ячейках столбца «D», а после окончания цикла расчета значений у, произойдет изменение графиков.

Графики должны быть построены на заданном Вами интервале (на рисунке от -0,4 до 1,25)…
В каждой точке, где производная (график синего цвета) пересекает ось , функция решения(красная) должна иметь экстремум (максимум или минимум)…
Если терпением Вы не отличаетесь, то не задавайте очень длинный интервал и/или очень мелкий шаг…

Подсказка:
Собственно, процедура заполнения массивов х и у по методу Рунге-Кутта будет выглядеть так:
(при этом глобальная переменная D3formula предварительно инициализируется: D3formula = Range("D3").Formula)

Private Function func(x As Double, y As Double) As Double 'производная
Dim f As String
'функция вычисляется по формуле, введенной пользователем в ячейку D3 (гед D4 - это x, D5 - это y)
    f = Replace(D3formula, "D4", CStr(x))
    f = Replace(f, "D5", CStr(y))
    Range("D3").FormulaLocal = f
    func = Range("D3")
End Function

Sub MethodRungeKutta()
'вспомогательные переменные
Dim k1 As Double, k2 As Double, k3 As Double, k4 As Double
Dim i As Integer

For i = 1 To n 'нулевые значения уже есть

    x(i) = x(0) + i * h
    k1 = func(x(i - 1), y(i - 1))
    k2 = func(x(i - 1) + h / 2, y(i - 1) + k1 * h / 2)
    k3 = func(x(i - 1) + h / 2, y(i - 1) + k2 * h / 2)
    k4 = func(x(i), y(i - 1) + k3 * h)

    y(i) = y(i - 1) + h / 6 * (k1 + 2 * k2 + 2 * k3 + k4) 'значения вычисляются
        p(i - 1) = k1 'сохранение в массив для графика

Next i
End Sub

Чтобы на диаграмме отобразились рассчитанные графики, производится заполнение соответствующих диапазонов в столбцах «AA-AB-AC»… Можете сравнить результаты с этим табличным вариантом.


Условия получения кода?    Показать?





Другие примеры на тему «РЕШЕНИЕ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ»:




Если на этой странице не нашлось того, что Вы так искали...

         Не расстраивайтесь, не все потеряно... Смело щелкайте...

исходный код на заказ. orenstudent.ru Автоматизация документов MS Office. orenstudent.ru исходный код на заказ. orenstudent.ru Помогите найти и устранить ошибку в исходном коде программы. orenstudent.ru Skype-консультирование по программированию
Скайп-консультации

Акция !!!
Весь код по 49 руб


требуются
школьники!


и СТУДЕНТЫ!
Кому не плевать
на деньги!
Сайт помощи студентам по программированию и информатике

Program code