linalg
:: scalarProduct
Скалярное произведение векторов
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
linalg::scalarProduct(u
, v
, <Real
>)
linalg::scalarProduct(u, v)
вычисляет скалярное произведение векторов и относительно стандартного основания, т.е. суммы.
Скалярное произведение также называется “скалярным произведением” или “скалярным произведением”.
Если звонок компонента векторов, u
и v
не задают запись "conjugate"
или если опция Real
задан, то linalg::scalarProduct
использует определение u 1 v1 + … + u n vn скалярного произведения.
Векторы u
и v
должны быть заданы по тому же звонку компонента.
linalg::scalarProduct
может быть переопределен к различному скалярному произведению. Это также влияет на поведение функций, таких как linalg::angle
, linalg::factorQR
, linalg::isUnitary
, norm
(для векторов и матриц), linalg::orthog
и linalg::pseudoInverse
зависят от определения linalg::scalarProduct
. Смотрите Пример 3.
Свойства идентификаторов учтены.
Мы вычисляем скалярное произведение векторов (i, 1) и (1, - i):
MatC := Dom::Matrix(Dom::Complex): u := MatC([I, 1]): v := MatC([1, -I]): linalg::scalarProduct(u, v)
Мы вычисляем скалярное произведение векторов и с символьными записями u 1, u 2, v 1, v 2 по стандартному звонку компонента для матриц:
delete u1, u2, v1, v2: u := matrix([u1, u2]): v := matrix([v1, v2]): linalg::scalarProduct(u, v)
Можно использовать assume
, чтобы сказать системе, что символьные компоненты должны представлять вещественные числа:
assume([u1, u2, v1, v2], Type::Real):
Затем скалярное произведение и упрощает до:
linalg::scalarProduct(u, v)
Также опция Real
может быть задана:
unassume(u1, u2, v1, v2): linalg::scalarProduct(u, v, Real)
Одно конкретное скалярное произведение в вещественном векторном пространстве непрерывных функций на интервале [0, 1] задано
.
Чтобы вычислить ортогональное основание, соответствующее полиномиальному основанию 1, t, t 2, t 3, … относительно этого скалярного произведения, мы заменяем стандартное скалярное произведение следующей процедурой:
standardScalarProduct := linalg::scalarProduct: unprotect(linalg): linalg::scalarProduct := proc(u, v) local F, f, t; begin // (0) f := expr(u[1] * v[1]); // (1) t := indets(f); if t = {} then t := genident("t") else t := op(t, 1) end_if; // (2) F := int(f, t = 0..1); // (3) u::dom::coeffRing::coerce(F) end:
Мы запускаем с шага (0)
, чтобы преобразовать f (t) g (t) к выражению основного доменного типа, такого, что системная функция int
на шаге, (2)
может обработать свой вход (это не необходимо, если элементы звонка компонента векторов уже представлены элементами основных областей).
Шаг (1)
извлекает неопределенные из полиномов, шаг (2)
, вычисляет скалярное произведение, как задано выше и шаг, (3)
преобразовывает результат назад в элемент звонка компонента векторов u
и v
.
Обратите внимание на то, что мы должны оставить идентификатор, защищенный от записи без защиты, linalg
, в противном случае присвоение привело бы к сообщению об ошибке.
Мы затем создаем матрицу, которая состоит из первых пяти из вышеупомянутых полиномов:
P := matrix([[1, t, t^2, t^3, t^4]])
Если мы теперь выполняем процедуру Ортогонализации Грама-Шмидта на столбцах P
с функциональным linalg::orthog
, мы добираемся:
S := linalg::orthog(linalg::col(P, 1..4))
Каждый вектор в S
является ортогональным к другим векторам в S
относительно измененного скалярного произведения. Мы проверяем это на первый вектор:
linalg::scalarProduct(S[1], S[j]) $ j = 2..nops(S)
Наконец, мы отменяем переопределение скалярного произведения, чтобы не столкнуться с проблемой с последующими вычислениями:
linalg::scalarProduct := standardScalarProduct: protect(linalg, Error):
|
Векторы той же размерности (вектором является n ×1 или 1 ×n матрица области категории |
|
Используйте u 1 v1 + … + u n vn как определение скалярного произведения, т.е. подавите использование |
Элемент звонка компонента u
и v
.