Similar presentations:
Компьютерный практикум по математическому анализу в среде Matlab. Практическое занятие 6
1.
Компьютерный практикум по математическому анализу в среде MatlabПрактическое занятие 6
http://serjmak.com/2students/matlabma/seminar6.ppt
Темы
Операции с полиномами: умножение, сложение, деление,
вычитание. Вычисление производных полиномов. Интерполяция и
сглаживание. Построение сплайнов, метод наименьших квадратов.
Интерполяция двумерных и многомерных данных.
Теория:
http://serjmak.com/2students/matlabma/1.%20Matlab7_Anufr.pdf
[1] (стр. 271-280)
2.
Matlab: краткая теорияВозможные функции для выполнения заданий:
Полином задаётся вектором его коэффициентов:
x^3+3x^2+3 -> p= [1 3 0 3] (считая нулевые коэффициенты).
polyval (p, 1) считает значение полинома от аргумента (в данном
случае 1). Аргумент может быть матрицей или вектором.
roots(p) вычисляет корни полинома (аргументом служит вектор
коэффициентов).
conv(a,b) – произведение двух полиномов (заданных векторами его
коэффициентов).
[d, r] = deconv(a,b) – деление полиномов с остатком (d – частное, r остаток).
Для сложения и вычитания полиномов нет специальных функций;
если полиномы одинаковой степени, то проблем нет; если же –
разной, то меньший вектор с коэффициентами полинома меньшей
степени надо дополнить соответствующими значениями (нулями),
чтобы его длина соответствовала большему полиному и можно было
выполнять операции сложения и вычитания.
polyder(p) – вычисление производной от полинома (p – вектор
коэфициентов); polyder(p,q) – вычисление производной от
произведения двух полиномов, заданных векторами p и q.
3.
Matlab: краткая теорияВозможные функции для выполнения заданий:
[n, d] = polyder(p,q) – вычисление производной от отношения двух
полиномов, заданных векторами p и q; n – числитель отношения
(вектор коэффициентов полинома-числителя), d – знаменатель
отношения (вектор коэффициентов полинома-знаменателя
получающегося отношения полиномов).
Задача приближения некоторых дискретных данных (например,
таблично заданной функции (по точкам: х, у)) к некоторой функции,
которую они представляют, тем самым находя, например, закон
движения точки, решается с помощью критериев интерполирования,
при котором аппроксимирующая функция совпадает с табличной в
узлах (этих точках х, у), и сглаживания, основанного на минимизации
некоторого критерия, например – суммы квадратов отклонений в
узлах.
polyfit (x,y,p) – построение полинома фиксированной степени для
приближения табличной функции одной переменной; x,y – векторы со
значениями табличной функции, p – требуемая степень полинома для
сглаживания. При изменении степени полинома возможно ухудшение
приближения.
poly2sym(p) – отображение полинома в «человеческом» виде
4.
Matlab: краткая теорияВозможные функции для выполнения заданий:
Интерполяция сплайнами – аппроксимация данных, указанных для
табличной функции, сплайнами (полиномами на определённом
участке) какого-то порядка. Интерполяция по соседним точкам –
сплайнами нулевого порядка (степень полинома на каждом участке
равна нулю), значение в каждой промежуточной точке принимается
равным ближайшему значению, заданному в таблице. Т.е. данные
приближаются ступенчатой функцией (на графике между точкамиузлами, заданными в таблице, видны ступеньки). Линейная
интерполяция – просто соединение узловых точке прямыми, в
результате получаем ломаную линию (или сплайн первого порядка).
Интерполяция кубическими сплайнами (3 порядка) используется для
получения более гладкой функции.
ynear=interp1(x,y,xi,’тип интерполяции’) – интерполяция любым из
перечисленных способов. х,у – значения узловых точек, xi –
координаты абсцисс промежуточных (между узловыми) точек
табличной функции, тип интерполяции – nearest (по соседним
точкам), linear (линейная, по умолчанию), spline (кубическими
сплайнами), pchip (кубическими эрмитовыми сплайнами); ynear –
вектор значений функции («интерполянта») в промежуточных точках.
5.
Matlab: краткая теорияВозможные функции для выполнения заданий:
Интерполяция двумерных данных – построение функции двух
переменных, приближающей заданные в точках (х,у) значения z. Узлы
задаются с помощью meshgrid, сама функция интерполяции –
interp2(x,y,z,xi,yi,’тип интерполяции’). x,y,z задаются с помощью
meshgrid и самой фунции z(x,y), xi,yi тоже задаются с помощью
meshgrid, а тип интерполяции – это уже наверняка знакомые фразы
nearest (по соседним точкам), bilinear или linear (билинейная, по
умолчанию), bicubic или cubic (бикубическими сплайнами), spline
(кубическими сплайнами).
Для аппроксимации трёхмерных данных есть функция interp3,
многомерных - interpn. Многомерные сетки создаются функцией
ndgrid. Многомерное приближение производится аналогично
двухмерному.
6.
Matlab: задание1) Перемножьте полиномы x^5+x^4+x+3 и x^3+2x^2+x-10. Ответ
напишите с помощью disp в том же виде, что и полиномы в этом
задании (а не с помощью вектора коэффициентов).
2) Найдите частное от деления полинома x^8+x^5+x^2-1 на полином
x^3+2x-1. Ответ напишите с помощью disp в том же виде, что и
полиномы в этом задании (а не с помощью вектора коэффициентов).
3) Найдите остаток от деления полинома x^7+x^5+x^4-3x^3-2x^2-16x-1 на
полином x^3-116x+1. Ответ напишите с помощью disp в том же виде,
что и полиномы в этом задании.
4) Сложите полиномы x^9+x^6+4x^5+2x^4+3x^3+x+3 и 3x^5+2x^2-3x-9.
Ответ напишите с помощью disp в том же виде, что и полиномы в этом
задании (а не с помощью вектора коэффициентов).
5) Найдите разность полиномов x^8+2x^7+4x^4+2x^3+3x+3 и x^9+2x.
Ответ напишите с помощью disp в том же виде, что и полиномы в этом
задании (а не с помощью вектора коэффициентов).
6) Найдите производную от полинома 2x^6+3x^5+x^3-10x^2-x+1024.
Ответ напишите сами знаете в каком виде.
7.
Matlab: задание7) Дана табличная функция, заданная точками x = [0.1 0.3 0.4 0.6 0.7
0.9 1.0 1.3 1.6 2.0] и у = [-3 -5 -2 -1 0 1 3.5 6 2.5 8]. Приблизьте её
методом наименьших квадратов полиномами 3, 4, 5, 6 и 7
степени. Отобразите её и приближения на графике в одном окне
(всего 6 графиков). Подпишите легенду, отражающую саму
функцию и степень полинома для каждого приближения.
8) Для той же функции из п. 7 используйте 4 типа интерполяции
сплайнами (всего должно быть 5 графиков в одном окне с
легендой, отражающей тип приближения). Промежуточные
точки задайте от x(1) до x(10) с шагом 0.01.
9) Для функции z=sin(3pix)*sin(3piy)*e^(-x^2-y^2) на области x,y=0:1
с шагом 0.2 постройте в 5 различных областях одного окна
сначала саму функцию (surfl), а затем в остальных областях – 4
приближения всевозможными способами (nearest, bilinear,
bicubic, spline). Для промежуточных значений используйте шаг
0.02 в той же области x,y. Подпишите (title), где какое
приближение. Помедитируйте над результатом. Вспомните
antialiasing, 3D-компьютерные игры.
10) На почту!