- •Вычислительная математика
- •Оглавление
- •3. Численное интегрирование…………………………………………………...51
- •4. Уравнения в частных производных…………………………………………65
- •5. Численные методы линейной алгебры……………………………………...73
- •1. Численные методы решения обыкновенных дифференциальных уравнений Основные понятия
- •Элементы теории погрешностей
- •Численное дифференцирование. Аппроксимационные формулы
- •Задача Коши для обыкновенного дифференциального уравнения 1-го порядка. Метод Эйлера
- •Задача Коши для обыкновенных дифференциальных уравнений 1-го порядка. Методы Рунге-Кутта
- •Краевые задачи для обыкновенного дифференциального уравнения 2-го порядка
- •Метод Галеркина для обыкновенных дифференциальных уравнений 2-го порядка
- •2. Аппроксимация функций Интерполяционный многочлен Лагранжа
- •Многочлены Чебышева
- •Минимизация погрешности интерполяции полинома Лагранжа
- •Интерполяция с равноотстоящими узлами
- •Кусочная аппроксимация
- •Сплайн- интерполяция
- •Метод наименьших квадратов
- •Ортогональные полиномы
- •3. Численное интегрирование Простейшие квадратурные формулы
- •Квадратурные формулы Ньютона-Котеса
- •Экстраполяция по Ричардсону
- •Квадратурные формулы Гаусса, Чебышева
- •Метод Монте-Карло
- •4. Уравнения в частных производных
- •5. Численные методы линейной алгебры
- •Матрицы и действия над ними
- •Клеточные матрицы
- •Разложение матрицы на произведение двух треугольных матриц
- •Итерационные методы
- •Метод Якоби
- •Метод Зейделя
- •Практикум по вычислительной математике Лабораторные работы для Mathcad 2001i Professional Лабораторная работа № 1 Обращение матриц
- •Лабораторная работа №2 Решение системы нелинейных уравнений
- •Лабораторная работа №3 Построение уравнений регрессии
- •Лабораторная работа № 4 Разложение функций в ряд Фурье пополиномам Лежандра
- •Лабораторная работа № 5 Решение дифференциального уравнения второго порядка
- •Лабораторная работа № 6 «Аппроксимации»
- •Лабораторная работа № 7 Решение слау с помощью lu разложения
- •Лабораторная работа № 11 Метод прогонки
- •Синтаксис среды Maple
- •Данные множественного типа
- •Решение дифференциальных уравнений в среде Maple Примеры решения уравнений встроенными функциями
- •Примеры численного решения оду
- •Лабораторная работа №1 Решение оду различными методами
- •Задания для самостоятельного решения
- •Лабораторная работа № 2 Интерполяция функции полиномами Лежандра
- •Лабораторная работа № 3 Метод наименьших квадратов
- •Лабораторная работа № 4 Применение системы Maple в сопротивлении материалов
- •Эпюра q
- •Эпюра q
- •Эпюра q
- •Эпюра q Лабораторная работа № 5 Решение системы методом прогонки
- •Библиографический список
Задания для самостоятельного решения
Решить уравнение для
,
и условия
.
Объяснить получившееся решение.Решить уравнение для
,
и условия
.
Объяснить получившееся решение.
Лабораторная работа № 2 Интерполяция функции полиномами Лежандра
Задача: Функцию cos(x) на интервале [-1,1] интерполировать с помощью полиномов Лежандра. Полиномы Лежандра подчиняются следующей рекуррентной зависимости:
,
Функцию
будем интерполировать обобщенным
полиномом:
,
где
– полиномы Лежандра (нормированные,
для того, чтобы набор функций
соответствовал следующему правилу:
),
– коэффициенты, которые необходимо
определить.
Определение
скалярного произведения
.
Коэффициенты легко
вычислить, если последовательно умножить
скалярно обощенный полином на
,
например, на
:
,
.
По свойству,
определенному для
,
получим:
.
> restart:
n:=5; – количество функций в наборе
c:=-1; – левая граница интервала
d:=1; – правая граница интервала
y(x):=cos(x); – функция для интерполяции
Создадим рекурсивную процедуру, вычисляющую полиномы Лежандра
> P:=proc(i)
if i=0 then 1
else if i=1 then x
else if i>1 then (x*(2*(i-1)+1)*P(i-1)-(i-1)*P(i-2))/(i)
fi fi fi
end proc:
Создадим набор нормированных функций
> for i from 0 to n do
f[i]:=P(i)/sqrt(int(P(i)^2,x=c..d))
od:
Найдем коэффициенты
> for i from 0 to n do
a[i]:=int(f[i]*y(x),x=c..d);
end do;
С помощью оператора
цикла соберем функцию
> t(x):=0:
for i from 0 to n do
t(x):=t(x)+a[i]*f[i];
end do:
T(x)=t(x);
Построим графики функции, для сравнения:
>
Графики y (x)-
серый и t (x)
- черный
Отобразим функцию интерполяции в виде с действительными числами.
> evalf(%%);
Из графика очевидно, что для интерполяции функции cos(x) на интервале [-1,1] достаточно пяти членов суммы ряда.
Лабораторная работа № 3 Метод наименьших квадратов
Если набор точек получен из эксперимента с погрешностью, то нет необходимости в интерполяции полиномами Лежандра или сплайном. В этом случае пользуются кривыми, которые не проходят точно через выбранные точки, но приближенно описывают характер функции.
Рассмотрим
непрерывную функцию
,
аппроксимирующую дискретную зависимость
.
Выберем ее в следующем виде:
,
где
– заранее определенные базисные функции.
– необходимое
условие для заданной функции
.
N
– количество точек в наборе. Нахождение
функции
из условия минимума
S называется
методом наименьших квадратов.
S
имеет
минимум
в следующем
случае:
Если вынести неизвестные постоянные из сумм, а суммы, содержащие , перенести за знак равенства, получим следующую систему уравнений:
.
Для нашего случая
выберем набор базисных функций
.
Экспериментальные данные будем приближать
параболой.
Таким образом, система
уравнений приобретет вид:
.
Из нее получим
коэффициенты
,
по которым построим параболу:
.
> restart;
Сначала зададим набор данных в виде списков значений x и y.
x:=[-3,-2,1,3,6,7];
y:=[1,2,4,1,-3,1];
Спомощью функции nops посчитаем количество элементов в списке x.
n:=nops(x);
m:=3; – количество базисных функций. Найдем минимальное и максимальное значение x, для того, чтобы использовать это при построении графика. Присвоим значения правой и левой части интервала [a,b].
a:=min(x[i]$i=1..n);
b:=max(x[i]$i=1..n);
Определим процедуру,
которая будет вычислять суммы, являющиеся
коэффициентами системы уравнений.
Условное ее значение
> scmult:=proc (f1,f2)
sum(x[p]^f1*y[p]^f2,p=1..n);
end proc;
Определим расширенную матрицу f, которая будет представлением системы уравнений:
> f:=matrix(m,m+1);
Заполним ее элементы значениями:
> for i from 1 to m do
for j from 1 to m do
f[i,j]:=scmult(i+j-2,0);
od:
od:
for i from 1 to m do
f[i,m+1]:=scmult(i-1,1)
od:
> evalm(f); – выведем матрицу в поле вывода
Решение будем искать с помощью метода Жордана-Гаусса, который реализует функция gaussjord из пакета linalg:
> fres:=linalg[gaussjord](f);
Выделим последний столбец расширенной матрицы, который является решением системы.
> res:=linalg[col](fres,m+1);
Переменной r[1] присвоим значение графика точек из заданного списка. Для построения списка используем оператор перечисления:
>r[1]:=plot([[x[p],y[p]]$p=1..n],style=point,symbol=circle,symbolsize=20,color=blue):
Переменной r[2] присвоим значение графика параболы, использующий коэффициенты решения.
r[2]:=plot(sum(res[k]*t^(k-1),k=1..m),t=a-0.1..b+0.1,thickness=3):
Отобразим результат обоих построений на общем графике.
> plots[display](r[1],r[2]);
Программа, описанная выше, является универсальной для метода наименьших квадратов. Изменяя переменную m можно, получить решение для любой степени большей нуля. Для того, чтобы проходила точно через все точки решения, необходимо чтобы m была равна количеству точек. Если заменить присвоение m на m:=n;, то получится следующий график:
