Загрузить архив: | |
Файл: ref-30341.zip (92kb [zip], Скачиваний: 324) скачать |
Лабораторная работа №2.
Интерполяция.
Интерполяцией в вычислительной математике называют способ нахождения промежуточных значений величины по имеющемуся дискретному набору известных значений. Существует также близкая к интерполяции задача, которая заключается в аппроксимации какой-либо сложной функции другой, более простой функцией. Если некоторая функция слишком сложна для производительных вычислений, можно попытаться вычислить её значение в нескольких точках, а по ним построить, то есть интерполировать, более простую функцию. Разумеется, использование упрощенной функции не позволяет получить такие же точные результаты, какие давала бы первоначальная функция. Но в некоторых классах задач достигнутый выигрыш в простоте и скорости вычислений может перевесить получаемую погрешность в результатах.
Линейная интерполяция
Линейной интерполяцией называют интерполяцию алгебраическим двучленом функции , заданной в двух точкахи отрезка . В случае если заданы значения в нескольких точках, функция заменяется кусочно-линейной функцией.
Для одномерной интерполяции таблично заданных функций в MatLabиспользуется функция interp1(x,y,xi), которая возвращает вектор yi, содержащий элементы, соответствующие элементам xi и полученные линейной интерполяцией векторов xи y.
Выполним интерполяцию функции и отображающий график полученной функции:
>> x=[0:0.5:5];
>> y=exp(sin(x));
>> xi=[0:0.01:5];
>> yi=interp1(x,y,xi);
>> plot(x,y,'*',xi,yi);
График интерполирующей функции на рисунке:
Так как при линейной интерполяции точки просто последовательно соединяются отрезками прямых, график интерполирующей кривой получается не гладким. В этом смысле, гораздо лучшие результаты может дать сплайн-интерполяция.
В MatLabкубическая сплайн-интерполяция реализуется следующей функцией:
yi=spline(x,y,xi)
Реализация сплайн-интерполяции функции :
>> x=[0:5];
>> y=exp(sin(x));
>> xi=[0:0.1:5];
>> yi=spline(x,y,xi);
>> plot(x,y,'*',xi,yi);
Полученный график на рисунке:
Лабораторная работа №3.
Численное дифференцирование.
Численное дифференцирование - совокупность методов вычисления значения производной дискретно заданной функции. В основе численного дифференцирования лежит аппроксимация функции, от которой берется производная, интерполяционным многочленом. Все основные формулы численного дифференцирования могут быть получены при помощи первого интерполяционного многочлена Ньютона (формулы Ньютона для начала таблицы). Основными задачами являются вычисление производной на краях таблицы и в ее середине.
Численное дифференцирование в программе MatLabвыполняется с помощью функции diff(X), возвращающей конечные разности смежных элементов массива Х. Возвращаемый массив имеет на один элемент меньше, чем исходный. Для вычисления приближённого значения производной, необходимо полученный вектор разделить на шаг приращения по переменной Х.
Построим график первой производной функции :
>> syms x;
>> y=1/(x*(sqrt(x)^3)+4);
>> dydx=diff(y,x);
>> xpl=linspace(0.5,0.6);
>> ypl=subs(y,x,xpl);
>> plot(xpl,ypl);
Полученный график на рисунке:
Лабораторная работа №4.
Решение обыкновенных дифференциальных уравнений.
Решение обыкновенных дифференциальных уравнений (ОДУ) широко применяется в практике научно – технических расчётов. Хотя линейные ОДУ могут иметь решение в виде специальных функций, многие физические системы нелинейны и описываются нелинейными ОДУ, не имеющими аналитического решения. В этом случае приходится использовать численные методы решения ОДУ.
Чтобы решить ОДУ, необходимо знать значения зависимой переменной и производных при некоторых значениях независимой переменной. Если эти дополнительные условия задаются при одном значении независимой переменной, то такая задача называется задачей Коши. Если же условия задаются при двух или более значениях независимой переменной, то задача называется краевой.
Задача Коши.
Задачу Коши можно сформулировать следующим образом: пусть дано ОДУ:
и начальное условие . Требуется найти функцию , удовлетворяющую как указанному уравнению, так и начальному условию.
Рассмотрим две группы численных методов решения задачи Коши: одношаговые и многошаговые.
Одношаговые методы
Одношаговые методы - это методы, в которых для нахождения следующей точки на кривой требуется информация лишь об одном предыдущем шаге. Простейшим из одношаговых методов является метод Эйлера:
Метод Эйлера имеет невысокую точность (порядка h).
Для достижения более высокой точности ( порядка ) используется метод Рунге-Кутта четвёртого порядка:
, где
,
,
,
.
Многошаговые методы
В многошаговых методах для отыскания следующей точки кривой требуется информация более чем об одной из предыдущих точек.
Решение задачи Коши средствами MatLab
Инструментарий для решения ОДУ в MatLab представлен следующими встроенными функциями:
ode45 — одношаговые явные методы Рунге-Кутта 4-го и 5-го порядка. Это классический метод, рекомендуемый для начальной пробы решения. Во многих случаях он дает хорошие результаты;
ode23 — одношаговые явные методы Рунге-Кутта 2-го и 4-го порядка. При умеренной жесткости системы ОДУ и низких требованиях к точности этот мето;. может дать выигрыш в скорости решения;
ode113 — многошаговый метод Адамса-Башворта-Мултона переменного порядка Это адаптивный метод, который может обеспечить высокую точность решения
ode23tb — неявный метод Рунге-Кутта в начале решения и метод, использующий формулы обратного дифференцирования 2-го порядка в последующем . Несмотря на сравнительно низкую точность, этот метод может оказаться более эффективным, чем ode15s;
ode15s — многошаговый метод переменного порядка (от 1 до 5, по умолчанию 5), использующий формулы численного дифференцирования. Это адаптивный метод, его стоит применять, если решатель ode45 не обеспечивает решения;
ode23s — одношаговый метод, использующий модифицированную формулу Розенброка 2-го порядка. Может обеспечить высокую скорость вычислений при низкой точности решения жесткой системы дифференциальных уравнений;
ode23t — метод трапеций с интерполяцией. Этот метод дает хорошие результаты при решении задач, описывающих колебательные системы с почти гармоническим выходным сигналом;
bvp4c служит для проблемы граничных значений систем дифференциальных уравнений вида y '== f(t,y), F(y(a), y(b), p) = 0 (краевая задача);
pdepe нужен для решения систем параболических и эллиптических дифференциальных уравнений в частных производных, введен в ядро системы для поддержки новых графических функций Open GL, пакет расширения Partial Differential Equations Toolbox содержит более мощные средства.
Все решатели могут решать системы уравнений явного вида у' = F(£, y). Решатели ode15s и ode23t способны найти корни дифференциально-алгебраических уравнений M(t)y' = F(t, у},, где М называется матрицей массы. Решатели ode!5s, ode23s, ode23t и ode23tb могут решать уравнения неявного вида M(t,y) у' = F(t, у). И, наконец, все решатели, за исключением ode23s, который требует постоянства матрицы массы, и bvp4c, могут находить корни матричного уравнения вида M(t, у) у' - F(t, у). ode23tb, ode23s служат для решения жестких дифференциальных уравнений . ode15s -жестких дифференциальных и дифференциально-алгебраических уравнений, ode23t -умеренно жестких дифференциальных и дифференциально-алгебраических уравнений.
Рассмотрим дифференциальное уравнение 2-го порядка, известное как уравнение Ван дер Поля.
Это уравнение может быть представлено в виде системы ОДУ в явной форме Коши:
Первый шаг процедуры интегрирования - это создание М-файла для вычисления правых частей ОДУ; присвоим этому файлу имя vdpol.
function xdot = vdpol(t, x)
xdot = [x(2); x(2) .* (1 - x(1).^2) - x(1)];
Чтобы проинтегрировать систему ОДУ, определяемых функцией vdpol в интервале времени 0 <= t <= 20, вызовем функцию ode23:
t0 = 0; tf = 20;
x0 = [0 0.25]'; %Начальные условия
[t, X] = ode23('vdpol', t0, tf, x0);
plot(t, X), grid, hold on
gtext('x1'), gtext('x2')
Список литературы:
1Дьяконов В. П. Справочник по применению системы PC MATLAB. — М.: «Физматлит», 1993. — С. 112.
2Иглин С.П. Математические расчёты на базе MATLAB. БХВ, 2005, Санкт-Петербург, Россия, 640 с.
Министерство образования и науки Украины
Донецкий национальный университет
Физический факультет
Контрольная работа
По теме: ЕОМ
Студента пятого курса З/О
Специальность: радиофизика и электроника
Антонова Александра Михайловича
Донецк, 2009