Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatika2013-Of2010.doc
Скачиваний:
25
Добавлен:
26.03.2015
Размер:
5.06 Mб
Скачать

Приближенное решение дифференциальных уравнений

Рассмотрим дифференциальное уравнение первого порядка:

Требуется найти решение на интервале [x0, xn], удовлетворяющее начальному условию y(x0) = y0.

Для приближенного решения дифференциального уравнения интервал [x0, xn] разбивается на n частей с шагом h:

xi+1 = xi + h, i = 0, 1, 2, …, n1.

Согласно методу Эйлера значения yi определяются по формуле

yi+1 = yi + h f(xi, yi).

Алгоритм метода Эйлера.

1. Ввод n, конечного значения xn, начального значения x0 (в переменную x), ввод y0 (в переменную y).

2. Вычисление h =x = x0, y = y0.

3. Вывод x, y.

4. Вычисление y = y + hf(x,y), x = x + h.

5. Если x > xn, то переход к пункту 6, иначе – переход к пункту 3.

6. Конец вычислений.

Например, пусть нужно найти решение дифференциального уравнения на отрезке [0, 1].

Зная начальные условия, определим y(0,01) и y(0,02):

y(0,01) = 1 + 0,01( – 21 + 0) = – 0,98;

y(0,02) = – 0,98 + 0,01( – 2( – 0,98) + 0,01) = –0,78.

Аналогичным образом определяются остальные значения y на отрезке [0, 1].

Для получения достоверных результатов значение h должно быть достаточно мало, при этом можно не выводить все получающиеся значения x и y. Целесообразно внести изменения в алгоритм программы так, чтобы вычисления проводились с малым шагом, а вывод результатов − с большим.

Расчетные формулы метода Рунге Кутта четвертого порядка имеют вид:

k1 = hf(xi, yi),

k2 = hf(xi + , yi + ),

k3 = hf(xi + , yi + ),

k4 = hf(xi + h, yi + k3),

yi+1 = yi + (k1 + 2 k2 + 2 k3 + k4), xi+1 = xi + h, i = 0, 1, 2, …, n – 1.

Для разработки программы, реализующей метод Рунге Кутта можно использовать тот же алгоритм, что и для метода Эйлера, внеся в него соответствующие изменения.

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

x0 = 0, y0 = 1, h = 0,1.

Надо найти решение на отрезке [0; 1].

Программа решения этого уравнения методом Эйлера может иметь следующий вид:

Sub CommandButton1_Click()

х = Val(InputBox(“Введите начальное значение х”))

y = Val(InputBox(“Введите начальное значение y”))

хn = Val(InputBox(“Введите конечное значение х”))

h = Val(InputBox(“Введите шаг”))

i = 1

Do

y = y + h * (0.2 * y + x)

x = x + h

Cells(i, 1) = x : Cells(i, 2) = y : i = i + 1

Loop While x<= xn

End Sub

Решение дифференциальных уравнений в приложении Mathcad. В приложении Mathcad решить дифференциальное уравнение можно, записав формулы выбранного метода. Например, для решения методом Эйлера уравнения

x0 = 0, y0 = 1, h = 0,1

на рабочем поле приложения Mathcad надо записать:

h := 0.1 n := 3 i := 0..n x0 := 0 y0 := 1

xi+1 = xi + h yi+1 = yi + h (0.2∙yi + xi)

x= y =

Имеются также встроенные функции для решения дифференциальных уравнений, например функцияrkfixed.

На рисунке приведена страница документа в приложении Mathcad с решением системы дифферен-циальных уравнений

на отрезке [1; 3].

Здесь x1, x2 – левая и правая границы интервала, на котором ищется решение; Np – число точек, в которых определяется решение; y0, y1 – начальные условия; D(x, y) – вектор правых частей системы.

На рисунке приведены также графики решения, характеризующие зависимость R(1, i) от R(0, i) и зависимость R(2, i) от R(0, i), т. е. зависимость y от x и зависимость z от x.

Назад