взлом

Открытая медицинская библиотека

Статьи и лекции по медицине ✚ Библиотека студента-медика ✚ Болезни и способы их лечения.

Хирургия Function display(p)
просмотров - 284

% @polynom/display.m

disp(' ');

disp([inputname(1),' = '])

disp(' ');

disp([' ' char(p)])

disp(' ');

Одним из важнейших способов управления поведением объекта служит переопределœение для него базовых математических операторов. Делается это также, как и в предыдущем случае, при определœении конструкторов и конверторов. А именно, нужно завести в папке, содержащей методы класса M-файл с именем, соответствующем имени переопределяемого оператора и в этом файле определить функцию с этим же именем, к примеру:

function r = plus(p,q)

% @POLYNOM/PLUS.M

p = polynom(p);

q = polynom(q);

k = length(q.c) - length(p.c);

r = polynom([zeros(1,k) p.c] + [zeros(1,-k) q.c]);

Такая функция, определœенная в файле @polynom/plus.m позволит складывать полиномы, как обычные объекты MATLAB - вещественные матрицы, вектора или числа. При этом, принудительное преобразование формальных аргументов к типу полинома в первых строках этой функции гарантирует, что будут правильно вычисляться смешанные выражения:

" p = polynom([1 2 3]);

" q = polynom([3 2 1]);

" pq = p + q;

" p1 = p + 1;

" q1 = 1 + q;

Вызовы функции zeros() в методе сложения полиномов дополняют нулями коэффициенты более короткого полинома из двух. В таблице приводится полный список имен методов для переопределœения всœех операторов MATLAB:

Оператор Метод Описание
a + b plus(a,b) Сложение
a - b minus(a,b) Вычитание
-a uminus(a) Унарный минус
+a uplus(a) Унарный плюс
a.*b times(a,b) Поэлементное умножение
a*b mtimes(a,b) Матричное умножение
a./b rdivide(a,b) Правое поэлементное делœение
a.\b ldivide(a,b) Левое поэлементное делœение
a/b mrdivide(a,b) Правое матричное делœение
a\b mldivide(a,b) Левое матричное делœение
a.^b power(a,b) Поэлементное возведение в степень
a^b mpower(a,b) Матричное возведение в степень
a < b lt(a,b) Меньше
a > b gt(a,b) Больше
a <= b le(a,b) Меньше или равно
a >= b ge(a,b) Больше или равно
a ~= b ne(a,b) Неравно
a == b eq(a,b) Равно
a & b and(a,b) Логическое И
a | b or(a,b) Логическое ИЛИ
~a not(a,b) Логическое НЕ
a:d:b или a:b colon(a,d,b) colon(a,b) Оператор "двоеточие" - генерация
a.' transpose(a) Транспонирование
a' ctranspose(a) Комплексно-сопряженное транспонирование
[a b] horzcat(a,b,...) Горизонтальная конкатенация
[a; b] vertcat(a,b,...) Вертикальная конкатенация
a(s1,s2,...sn) subsref(a,s) Ссылка по индексу
a(s1,...,sn) = b subsasgn(a,s,b) Присваивание по индексу
b(a) subsindex(a,b) Индексирование
Вывод в командной строке display(a) Распечатка значения