Решение задач методами Эйлера и Рунге-Кутта
1. Построить кубический сплайн, интерполирующий функцию у = (х) на [1,00; 1,20] для равномерного разбиения с шагом h = 0,04:
(х) = ln x
Найти значения в точках 1,05; 1,13; 1,17.
Решение
Построим таблицу значений функции на интервале [1,00; 1,20] с шагом
h = 0,04:
x |
(х) = ln x |
1 |
0 |
1,04 |
0,039221 |
1,08 |
0,076961 |
1,12 |
0,113329 |
1,16 |
0,14842 |
1,2 |
0,182322 |
Сплайн-интерполяция таблично заданной функции
На отрезке [a, b] задать одномерную сетку
>x> = {x>i> / x>i> = x>i>> –1> + h>i>, h>i> > 0, i = 1, 2, 3, …, n; x>0> = a, x>n> = b}
и значения y>i> = f(x>i>) в узлах сетки x>i>, i = 0, 1, 2, …, n.
Задать x* (a, b).
Положить a>i> = y>j>, i = 0, 1, 2, …, n.
Составить и решить трех диагональную систему методом прогонки:
Определить значения коэффициентов c>i>, i = 0, 1, 2, …, n.
Определить значения коэффициентов d>i> и b>i>, i = 1, 2, 3, …, n, воспользовавшись формулами:
d>i> = (c>i> – c>i>> >>–>> >>1>) / h>i>, i = 1, 2, …
Определить значение индекса 0 < k n из условия x* [x>k>> – 1>, x>k>].
Вычислить по формуле
S(x*) = S>k>(x*) = a>k> + b>k>(x* – x>k>) + (c>k> / 2)(x* – x>k>)2 + (d>k> / 6)(x* – x>k>)3.
Процесс завершен: S(x*) – результат интерполяции табличных данных в точку x* (a, b).
Результаты вычислений удобнее представлять в виде таблицы:
a>i> |
b>i> |
c>i> |
d>i> |
0,03922 |
0,96467 |
-1,188280 |
-29,70700 |
0,07696 |
0,92494 |
-0,798322 |
9,74897 |
0,11333 |
0,89366 |
-0,765997 |
0,80813 |
0,14842 |
0,85986 |
-0,92391 |
-3,94780 |
0,18232 |
0,84138 |
0,00000 |
23,09770 |
Значение функции в точке находится по формуле:
S(x*) = S>k>(x*) = a>k> + b>k>(x* – x>k>) + (c>k> / 2)(x* – x>k>)2 + (d>k> / 6)(x* – x>k>)3
2. Найти решение задачи Коши для дифференциального уравнения на равномерной сетке [a, b] с шагом 0,2 методом Эйлера и классическим методом Рунге-Кутта
, , 0 х 1
Решение. Метод Эйлера
- разностная аппроксимация Эйлера. Точность метода . Метод Рунге-Кутта
дифференциальный интерполирующий уравнение сплайн
Результаты вычислений удобнее представлять в виде таблиц:
Метод Эйлера
x |
y |
|
0 |
0 |
1 |
0,2 |
0,2 |
1 |
0,4 |
0,416 |
1.04 |
0,6 |
0,67392 |
1.1232 |
0,8 |
1,00639 |
1.25798 |
1 |
1,45926 |
1.45926 |
Метод Рунге-Кутта
i |
= |
||||||
0 |
0 |
1 |
0 |
0,02 |
0,0202 |
0,040808 |
1,0202 |
1 |
0,2 |
1,0202 |
0,0408081 |
0,0624363 |
0,0630852 |
0,0866629 |
1,08329 |
2 |
0,4 |
1,08329 |
0,086663 |
0,112662 |
0,113962 |
0,14367 |
1,19722 |
3 |
0,6 |
1,19722 |
0,143666 |
0,177667 |
0,180047 |
0,220362 |
1,37713 |
4 |
0,8 |
1,37713 |
0,22034 |
0,267713 |
0,271977 |
0,329821 |
1,64872 |
5 |
1 |
1,64872 |
0,329743 |
0,398989 |
0,406607 |
0,493278 |
2,05442 |
3. Найти решение задачи безусловной минимизации (х) min, х R2. Установить множество глобального решения
(х) =
>Решение>
>Данная задача решается методом сопряженных направлений (градиентов). Алгоритм данного метода представлен далее.>
Метод сопряженных направлений
Начать с точки x(0) = (x>1>(0), x>2>(0), …, x>n>(0))т и n-линейно независимых направлений s(i),
i = 1, 2, …, n, которые могут быть выбраны, например, совпадающими с координатными направлениями e(i), i = 1, 2, …, n. Положить k = 1.
Начиная с точки x(0) осуществить одномерный поиск для функции f(x) в направлении s(n) и определить точку z(1).
Начиная с точки z(1) осуществить последовательно n – 1 одномерный поиск для f(x) сначала в направлении s(1), а затем из полученной точки в направлении s(2) и т. д. до одномерного поиска в направлении s(n – 1) включительно. В результате этих действий будет определена точка x(2).
Начиная с точки x(2) осуществить одномерный поиск для f(x) в направлении s(n) и определить точку z(2).
Согласно обобщенному свойству "параллельного подпространства" направление
s(n + 1) = z(2) – z(1)
будет сопряженным по отношению к направлениям s(n), s(n – 1), …, s(n – k + 1) (для k = 1 – только к направлению s(n)).
Начиная с точки z(2) осуществить поиск в направлении s(n + 1) и определить x*.
Положить k: = k + 1. Если k = n, перейти к выполнению п. 8.
Положить z(1): = x* и s(i): = s(i + 1), i = 1, 2, …, n.и перейти к выполнению п. 2.
Процесс вычислений завершен: x* – точка минимума функции f(x).
Результаты вычислений удобнее представлять в виде таблицы:
Таблица результатов
k |
||||||||
0 |
0 |
0 |
1 |
1 |
0 |
|||
1 |
0 |
0 |
1 |
0 |
2 |
2 |
0 |
-4 |
2 |
2 |
0 |
0 |
1 |
-2 |
2 |
-2 |
-8 |
Точка (2,-2) – точка минимума функции. В этой точке функция принимает значение .