![]() ![]() ![]() ![]() ![]()
Раздел: Документация
0 ... 92 93 94 95 96 97 98 ... 365 Интегралы с переменным верхним пределом Интеграл с переменным верхним пределом представляет собой некоторую функцию, например Для вычисления такого интеграла придется написать две функции: fint — для подынтегральной функции, и Fy — которая находит значения интеграла для каждого значения у. Тексты требуемых функций приведены в листинге 6.8, причем Fy является основной функцией, a fint — подфункцией. function f = Fy(y) f = quadl{@fint, 0, у, 1.0e-09); function f = fint(x) f = exp(x) .*{sin(x) - cos{x)),- Теперь можно вычислить интеграл при любом значении верхнего предела, задав его в качестве аргумента Fy. Построение графика зависимости интеграла от верхнего предела осуществляется при помощи fplot » fplot(@Fy, to, pi]) Текущий раздел посвящен операциям с полиномами и решению задачи интерполяции при построении полинома, наилучшим образом приближающего двух- и трехмерные табличные данные. Операции с полиномами Умножение, деление, сложение и вычитание Напомним, что полиномы в MATLAB представляются в виде вектора коэффициентов (задание полинома, нахождение всех его корней и вычисление значений описано в разд. "Вычисление всех корней полинома" данной главы). у ![]() о Листинг 6.8. Файл-функция, вычисляющая значение интеграл ![]() Полиномы и интерполяция Умножение двух полиномов осуществляется при помощи conv. Например, для вычисления произведения л(л) полиномов р(х) = х5 + а3 + L и q(x) = x2 + 2x + 3 следует создать два вектора их коэффициентов и использовать их в качестве аргументов conv: »р = [10100 1]; » q = [12 3]; » S = conv{p, q) S - 12423123 В результате получается полином седьмой степени, соответствующий вектору S s(х) = х7 + 2л-6 + 4л5 + 2х4 + За3 + л2 + 2а+3 . Функция deconv осуществляет деление полиномов с остатком. Она вызывается с двумя выходными аргументами — частным и остатком от деления: » [d, г] = deconv(p, q) d = 1-222 г = 0000 -10 -5 Размер вектора, содержащего коэффициенты остатка, равен максимальному из размеров векторов, соответствующих делимому полиному и его делителю. Для сложения и вычитания полиномов в MATLAB нет специальной функции. В то же время использование знака "+" для нахождения суммы полиномов разной степени приведет к ошибке, т. к. нельзя складывать векторы разных размеров. Если вы изучили работу с массивами и создание файл-функций, то написание собственной функции для нахождения суммы полиномов не представляет большого труда. Алгоритм сложения полиномов, которым соответствуют векторы р и q, достаточно прост, требуется: 1.Выбрать максимальный размер из двух векторов. 2.Соответствующим образом преобразовать каждый из двух векторов к максимальному размеру. 3.Сложить новые векторы. В листинге 6.9 приведен текст файл-функции poiysum, находящей значение суммы полиномов. Листинг 6.9. Файл-функция polysum, вычисляющая сумму полиномов function s = polysum(p, q) % вычисление суммы полиномов, заданных векторами коэффициентов % нахождение наибольшей из длин входных векторов maxlen = max(length(р), length(q)) ; % создание вспомогательных векторов pi и ql длины maxlen, % имеющих нулевые элементы pi = zeros(1, maxlen); ql = zeros(1, maxlen); % преобразование исходных векторов к векторам одинакового % размера maxlen pi (maxlen - length(р) + l:maxlen) = р; ql (maxlen - length(q) + l:maxlen) = q; % вычисление коэффициентов полинома, являющегося суммой исходных % полиномов s = pi + ql; Теперь для нахождения суммы и разности полиномов следует использовать polysum. » s = polysum(р, q) s = 101124 » d = polysum(p, -q) d = 101-1-2-2 Вычисление производных Функция pioiyder предназначена для вычисления производной не только от полинома, но и от произведения и частного двух полиномов. Вызов poiyder с одним аргументом — вектором, соответствующим полиному, приводит к вычислению вектора коэффициентов производной полинома: » р = [10 10 0 1]; » pi = poiyder(р) Р1 = 5 0 3 0 0 0 ... 92 93 94 95 96 97 98 ... 365 |