Численный метод и обработка данных



                                                   Умножение и деление полиномов

 w = conv(u.v) — возвращает произведение полиномов, чьи коэффициенты — элементы векторов и и V.

Пример:

» f—[2.3.5.6]:d—[7.8.3]:r=conv(f,d)

г “

14 37 65 91 63 18

 [q.r] = deconv(v.u) — возвращает результат деления полинома v на полином u. Вектор q представляет собой частное от деления, а r — остаток от деления, так что выполняется соотношение v=conv(u,q)+r

18

.Пример:

» t-[14.37.65.91.63.18]:г-[7.8.3]:[w.e]-deconvСt.г

2.0 3.0000 5.0000 6.0000 1.0е-013

0 0 0.1421 -0.1421-0.2132-0.1066

                                                       Вычисление полиномов

В этом разделе приведены функции вычисления коэффициентов характеристического полинома, значения полинома в точке и матричного полинома.

 poly (А) — для квадратной матрицы А размера nхn возвращает вектор-строку размером n+1, элементы которой являются коэффициентами характеристического полинома det(A-sI), где I — единичная матрица, a s — оператор Лапласа. Коэффициенты упорядочены по убыванию степеней. Если вектор состоит из n+1 компонентов, то ему соответствует полином вида с s"+...+c s+c ;

poly(r) — для вектора г возвращает вектор-строку р с элементами, представляющими собой коэффициенты полинома, корнями которого являются элементы вектора r. Примеры:

А =

2 3 6

3 8 6

1 7 4

» d=poly(A) d =

1.0 -14.0000 -1.0000-40.0000

» А-[3.6.8:12.23.5:11.12,32]

А -

3 6 8

1223 5

1112 32

» poly(A) ans -

1.0 -58.0000 681.0000 818.0000

 roots (с) — вычисляет корни полинома с. Вектор-строка с содержит коэффициенты полинома, упорядоченные по убыванию степеней. Если с имеет n+1 компонентов, то полином, представленный этим вектором, имеет вид s"+...+cns+cn+1.

Пример:

» х=[7.45.12.23]:d=roots(x) d =

-6.2382

-0.0952+0.7195i

-0.0952 —0.7195i

А=[-6.2382 -0.0952+0.71951 -0.0952 -0.71951];

B=Poly (А)

В=[1.0000 6.4286 1.7145 3.2859]

В*7 ans =

7.0 45.000212.001523.0013

 polyval (р.х) — функция polyval вычисляет значения полинома р для каждого элемента х;

 polyvalm(p.X) — вычисляет значения полинома для матрицы.

Пример:

» D=pascal(5) D =

1 1 1 1 1

1 2

3 4 5

1 3

6 10 15

1 4

10 20 35

1 5

15 35 70

» f-poly(d)

19

f -

» polyvalm(f.D) j

ans - У

1.0e-006*

-0.0003 -0.0011-0.0038-0.0059-0.0162 -0.0012 -0.0048-0.0163-0.0253-0.0692 -0.0034 -0.0131-0.0447-0.0696-0.1897 -0.0076 -0.0288-0.0983-0.1529-0.4169 -0.0145-0.0551-0.1883-0.2929-0.7984

Данный пример иллюстрирует также погрешности численных методов, поскольку точное решение дает нулевую матрицу.

                                                      Разложение на простые дроби

Для отношения полиномов b и а используются следующие функции:

 [r.p.k] = residue(b.a) — возвращает вычеты, полюса и многочлен целой части отношения двух полиномов b(s) и a(s

[b.a] = residue (r.p.k) — выполняет обратную свертку суммы простых дробей (см. более подробное описание в справочной системе) в пару полиномов с коэффициентами в векторах b и а.

Пример:

» b=[4,3.1];а=[1.3,7,1];[r.p,k]=residue(b,a) г =

1.9484 + 0.8064т

1.9484 - 0.80641 0.1033

Р “

-1.4239 + 2.13051 -1.4239 - 2.13051 -0.1523 к -

[ ]

» [bl.al]-residue(r.p.k)

Ы «

4.0 3.0000 1.0000 а1 =

1.0 3.0000 7.0000 1.000

                                                       Полиномиальная регрессия

Одна из наиболее известных аппроксимаций — полиномиальная.

 polyfit(x.y.n) — возвращает вектор коэффициентов полинома р(х) степени n, который с наименьшей среднеквадратичной погрешностью аппроксимирует функцию у(х).;

 [р,S] = polyfit(x.y.n) — возвращает коэффициенты полинома р и структуру S для использования вместе с функцией polyva 1 с целью оценивания или предсказания погрешности;

 [p.S] = polyfit (х.у. n.mu) возвращает коэффициенты полинома р и структуру S для использования вместе с функцией polyval с целью оценивания или предсказния погрешности, но так, что присходит центрирование (нормирование) и масштабирование. Центрирование и масштабирование не только улучшают свойства степенного многочлена, получаемого при помощи polyval, но и значительно повышают качественные характеристики самого алгоритма аппроксимации.

Пример (полиномиальная регрессия для функции sin(x)):

» х=(-3:0.2:3)'; y=sin(x): p“polyfit(x.y.3)

Рис. 17.14. Пример использования фу

Р -

-0.0953 0.0000 0.8651 -0.0000 » х=(-4:0.2:4)';y=sin(x);

» f=polyval(р.х);plot(x.y.'o'.x.f)

Следует помнить, что она достаточно точна в небольших окрестностях от точки х = 0, но может иметь большие погрешности за их пределами или в промежутках между узловыми точками.

. К сожалению, при степени полинома свыше 5 погрешность полиномиальной сильно возрастает и ее применение без центрирования и масштабирования становится рискованным.

 

 

20

Основы программирования

                                                         Основные типы данных

 Типы данных array и numeric являются виртуальными («кажущимися»), поскольку к ним нельзя отнести какие-либо переменные. Они служат для определения и комплектования некоторых типов данных. Таким образом, в MATLAB определены следующие основные типы данных, в общем случае представляющих собой многомерные массивы:

single — числовые массивы с числами одинарной точности;

double — числовые массивы с числами удвоенной точности;

char — строчные массивы с элементами-символами;

sparse — наследует свойства double, разреженные матрицы с элементами-числами удвоенной точности;

cel 1 — массивы ячеек; ячейки, в свою очередь, тоже могут быть массивами;

struct — массивы структур с полями, которые также могут содержать массивы;

functionjiandle — дескрипторы функций:

int32, uint32 — массивы 32-разрядных чисел со знаком и без знаков;

intl6,uintl6 — массивы 16-разрядных целых чисел со знаком и без знаков;

int8, uint8 — массивы 8-разрядных целых чисел со знаками и без знаков.

                                         М-файлы сценариев и функций

Есть два типа m-файлов: файлы-сценарии и файлы-функции. В процессе своего создания они проходят синтаксический контроль с помощью встроенного в систему MATLAB редактора/отладчика ш-файлов.

Файл-сценарий, именуемый также Script-файлом, является просто записью серии команд без входных и выходных параметров. Он имеет следующую структуру:

^Основной комментарий

^Дополнительный комментарий Тело файла с любыми выражениями

Важны следующие свойства файлов-сценариев:

они не имеют входных и выходных аргументов;

работают с данными из рабочей области;

в процессе выполнения не компилируются;

представляют собой зафиксированную в виде файла последовательность операций, полностью аналогичную той, что используется в сессии. Основной комментарий выводится при выполнении команд lookfor и help имя_каталога. Полный комментарий выводится при выполнении команды help Имя_файла. Имена файлов-сценариев нельзя использовать в качестве

 

 

21

параметров функций, та как файлы-сценарии не возвращают значений.

                                                    Структура М-файла-функции

М-файл-функция является типичным объектом языка программирования системы MATLAB. Структура с одним выходным параметром выглядит следующим образом:

function var=f_name(CnncoK_napaMeipoB)

^Основной комментарий ^Дополнительный комментарий Тело файла с любыми выражениями var-выражение

М-файл-функция имеет следующие свойства:

 он начинается с объявления function, после которого указывается имя переменной var — выходного параметра, имя самой функции и список ее входных параметров;

 функция возвращает свое значение и может использоваться в виде пате(Спи- сок_параметров) в математических выражениях;

 все переменные, имеющиеся в теле файла-функции, являются локальными, т. е.

действуют только в пределах тела функции;

 файл-функция является самостоятельным программным модулем, который общается с другими модулями через свои входные и выходные параметры;

 правила вывода комментариев те же, что у файлов-сценариев;

 файл-функция служит средством расширения системы MATLAB;

 при обнаружении файла-функции он компилируется и затем исполняется, а созданные машинные коды хранятся в рабочей области системы MATLAB.

Последняя конструкция vаг = выражение вводится, если требуется, чтобы функция возвращала результат вычислений.

Если функция используется как имеющая единственный выходной параметр, но имеет ряд выходных параметров, то для возврата значения будет использоваться первый из них. Это зачастую ведет к ошибкам в математических вычислениях.

                                                               Условный оператор

Условный оператор if в общем виде записывается следующим образом:

if Условие

Инструкции_1

el seif Условие Инструкции_2 else

Инструкции_3

end

Эта конструкция допускает несколько частных вариантов. В простейшем, nniai f...end: if Условие Инструкции end

Пока Условие возвращает логическое значение 1 (то есть «истина»), выполняются Инструкции, составляющие тело структуры if...end. При этом оператор end указывает на конец перечня инструкций. Инструкции в списке разделяются оператором , (запятая) или ; (точка с запятой). Если Условие не выполняется (дает логическое значение 0, «ложь»), то Инструкции также не выполняются.

Еще одна конструкция

if Условие Инструкции_1 else Инструкции_2 end

22

выполняет Инструкции_1, если выполняется Условие, или Инструкции_2 в противном случае.

Условия записываются в виде:

Выражение_1 Оператор_отношения Выражение_2,

причем в качестве Операторов_отношения используются следующие операторы: ==, <, >, <=, >= или ~=.

                                                            Циклы типа for...end

Циклы типа for...end обычно используются для организации вычислений с заданным числом повторяющихся циклов. Конструкция такого цикла имеет следующий вид:

for уаг=Выражение, Инструкция . Инструкция end

Выражение чаще всего записывается в виде s:d:e, где s — начальное значение переменной цикла var, d — приращение этой переменной и е — конечное значение управляющей переменной, при достижении которого цикл завершается. Возможна и запись в виде s :е (в этом случае d=l). Список выполняемых в цикле инструкций завершается оператором end.

Следующие примеры поясняют применение цикла для получения квадратов значений переменной цикла:

» for i=l:5 i*2. end: ans =

1

ans =

4

ans =

9

ans =

16 ans - 25

» for x=0:. 25:1 x*2. end; ans - 0

ans - 0.0625 ans - 0.2500

ans - 0.5625 ans =

1

Оператор continue передает управление в следующую итерацию цикла. Оператор break может использоваться для досрочного прерывания выполнения цикла. Как только он встречается в программе, цикл прерывается. Возможны вложенные циклы.

Следует отметить, что формирование матриц с помощью оператора : (двоеточие) обычно занимает намного меньше времени, чем с помощью цикла. Однако применение цикла нередко оказывается более наглядным и понятным.

                                         Циклы типа while...end

Цикл типа while выполняется до тех пор, пока выполняется Условие:

while Условие Инструкции end

Пример применения цикла whi 1 е уже приводился. Досрочное завершение циклов реализуется с помощью операторов break или continue.

Конструкция переключателя

Для осуществления множественного выбора (или ветвления) используется конструкция с переключателем типа switch:

switch switch_Bbipa)xeHHe case са5е_Выражение Список_инструкций

case {са$е_Выражение1. Са$е_выражение2. са5е_ВыражениеЗ,...}

Список_инструкций

otherwise,

Список_инструкций

end


Дата добавления: 2019-11-25; просмотров: 195; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!