Решение дифференциальных уравнений первого порядка
методом Последовательных приближений (простых итераций).

Данный проект VBA позволяет решать дифференциальные уравнения первого порядка одним из численных методов, а именно, методом Последоватеьных приближений (или простых итераций).

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

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

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


VBA EXCEL Решение дифференциальных уравнений

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

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

Подсказка:
Собственно, процедура заполнения массивов х и у по методу Последоватеьных приближений будет выглядеть так:

Sub MethodIterac_fromCell()
   Dim couend As Boolean 'флаг окончания итераций
   Dim cou As Integer 'счетчик итераций
   Dim maxe As Double 'максимальное отклонение
   Dim old As Double
   Dim e As Double
   Dim i As Integer

For i = 1 To n
    x(i) = x(0) + i * h
Next i

Do While Not couend
    couend = True
    cou = cou + 1
    maxe = 0

    For i = 1 To n
       old = y(i) 'значение на предыдущем шаге
       Range("D4") = x(i - 1)
       Range("D5") = y(i - 1)
       y(i) = y(i - 1) + h * Range("D3") 'очередной элемент очередного приближения

       e = Abs(old - y(i)) 'изменение
       If maxe < e Then maxe = e 'максим.отклонение на данной итерации
    Next i

    If maxe > epsilon Then couend = False 'продолжение, на следующую итерацию
Loop
End Sub

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

скачать xlsm-файл

Удачного Вам тестирования!



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




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

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

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

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


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


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

Program code