numeric
::leastSquares
Решение методом наименьших квадратов линейных уравнений
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
numeric::leastSquares(A
, B
, <mode
>, <method
>, options
)
numeric::leastSquares(A, B)
вычисляет матричный X, который решает линейное матричное уравнение A X = B в смысле наименьших квадратов: столбцы X j X
минимизируйте, где j B является столбцами B
.
Для данного векторного B векторный X минимизирует, если и только если X является решением “нормальных уравнений” A H A X = A H B, где A, H является Эрмитовым, транспонирует m ×n матричный A. Решение уникально если rank (A) = n.
numeric::leastSquares
позволяет решать несколько задач наименьших квадратов одновременно путем объединения нескольких 'правых сторон' B j по столбцам к матричному B
.
Если никакие не возвращаются, тип задан с помощью опции ReturnType = d
, доменный тип данных о возврате зависит от типа входной матрицы A
:
Специальное решение X, а также ядро массива A возвращено как массивы.
Специальное решение и ядро hfarray доменного типа DOM_HFARRAY
возвращены как hfarrays.
Для плотного матричного A типа Dom::DenseMatrix()
, оба специальное решение X, а также ядро возвращены как матрицы типа Dom::DenseMatrix()
по звонку выражений MuPAD®.
Для всех других матриц категории Cat::Matrix
, оба специальное решение X, а также ядро возвращены как матрицы типа Dom::Matrix()
по звонку выражений MuPAD. Это включает входные матрицы A
из типа Dom::Matrix(...)
, Dom::SquareMatrix(...)
, Dom::MatrixGroup(...)
и т.д.
Без Symbolic
, входные данные преобразованы в числа с плавающей запятой. Матричный A не должен содержать неконвертируемые параметры, если Symbolic
используется. Если такие объекты найдены, numeric::leastSquares
автоматически переключатели к его символьному режиму, выдавая предупреждение. Это предупреждение может быть подавлено через NoWarning
.
Символьные параметры в B приняты без предупреждения. Однако HardwareFloats
не может использоваться, если существуют какие-либо символьные параметры в A или B.
Если A, H A имеет нетривиальное ядро, решение методом наименьших квадратов X, не уникален. Возвращаемое значение X
специальное решение уравнения A H A X = A H B. С SVD
метод, X
специальное решение со столбцами минимальной Евклидовой длины.
Результат вычисляется с HardwareFloats
может отличаться от решения, вычисленного с SoftwareFloats
или Symbolic
!, В частности, дело обстоит так для систем с нетривиальным ядром. Далее, результаты вычисляются с QRD
и SVD
может отличаться.
Ядро вычисляется только в символьном режиме (опция Symbolic
). Все методы с плавающей точкой возвращают значение NIL
для ядра.
С Symbolic
, n ×d матричный KernelBasis
самое общее решение A H A X = 0. Его столбцы охватывают d - размерное ядро A H A.
Если ядро является 0-мерным, возвращаемое значение KernelBasis
целое число 0. Если KernelBasis
возвращен как массив, размерность, d ядра является d
= op(KernelBasis, [0, 3, 2]])
. Если KernelBasis
возвращен как матрица типа Dom::Matrix()
или Dom::DenseMatrix()
, размерностью d ядра является d
= KernelBasis::dom::matdim(KernelBasis)[2]
.
Без опции Symbolic
, реализованные алгоритмы заботятся о числовой стабилизации.
С Symbolic
, приняты точные данные. Решения методом наименьших квадратов вычисляются через numeric::matlinsolve( AH A, AH B , Symbolic)
. Символьные попытки стратегии максимизируют скорость, и не заботится о числовой стабилизации! Не используйте Symbolic
для систем, включающих записи с плавающей точкой! В конкретном, должном к округлению, это может произойти, которым не найдено никакое решение A H A X = A H B. В таком случае, [FAIL, NIL, NIL]
возвращен. См. Пример 4.
Все записи A
и B
должны быть арифметические выражения.
Кроме матриц типа Dom::Matrix(...)
, Cat::Matrix
объекты A
от матричных областей, таких как Dom::DenseMatrix
(...)
или Dom::SquareMatrix
(...)
внутренне преобразованы в массивы по выражениям через expr(A)
. Обратите внимание на то, что опция Symbolic
должен использоваться, если записи не могут быть преобразованы в числовые выражения.
То же самое сохраняется для матриц B
переданный как Cat::Matrix
объекты.
Функция чувствительна к переменной окружения DIGITS
, который определяет числовую рабочую точность.
Мы рассматриваем матричный A ранга 1:
A := array(1..3, 1..2, [[1, 2], [1, 2], [1, 2]]): B := [3, 4, 5]:
Нормальные уравнения имеют набор с 1 параметром решений:
[X, KernelBasis, Res] := numeric::leastSquares(A, B, Symbolic)
Численный метод QRD
производит специальное решение:
[X, KernelBasis, Res] := numeric::leastSquares(A, B, QRD)
Численный метод SVD
производит решение X минимальной нормы:
[X, KernelBasis, Res] := numeric::leastSquares(A, B, SVD)
delete A, B, X, KernelBasis, Res:
Мы рассматриваем плохо обусловленную проблему наименьших квадратов. Конструкцией следующая сверхрешительная система имеет точное решение X = [1, 2, …, n]:
m := 10: n := 8: A := array(1..m, 1..n, [[1/(i + j + 100) $ j=1..n] $ i=1..m]): B := array(1..m, [_plus(A[i,j]*j $ j=1..n) $ i=1..m]): numeric::leastSquares(A, B, Symbolic)
Матрица коэффициентов A довольно плохо обусловлена:
singvals := numeric::singularvalues(A): conditionOfA := max(op(singvals))/min(op(singvals))
Следовательно, округление оказывает решительное влияние в числовом приближении. Методы дают к результатам различного качества:
numeric::leastSquares(A, B, QRD)
numeric::leastSquares(A, B, SVD)
delete m, n, A, B, singvals, conditionOfA:
Этот пример включает символьный параметр c
в матричном A. Опция Symbolic
должен использоваться:
A:= matrix([[c, 2], [1/3, 2/3], [1/7, 2/7]]): B:= [1, 2, 3]: numeric::leastSquares(A, B, Symbolic)
normal(%)
delete A, B:
Записи с плавающей точкой могут вызвать проблемы в сочетании с опцией Symbolic
, потому что расчет не стабилизируется численно в символьном узле. Следующий матричный A имеет ранг 2:
A := matrix([[1, 30], [10.0^(-15), 31*10.0^(-15)]]):
Однако из-за округления, ‘нормальный матричный’ A H A имеет ранг 1. Никакое решение не найдено с Symbolic
:
A::dom::transpose(A) * A
numeric::leastSquares(A, [31, 32*10^5], Symbolic)
Никакая такая проблема не возникает в числовых схемах. Обратите внимание, однако, что численные методы дают к различным результатам в этой чрезвычайно плохо обусловленной проблеме:
numeric::leastSquares(A, [31, 32*10^5], QRD)
numeric::leastSquares(A, [31, 32*10^5], SVD)
delete A:
|
m ×n матрица доменный тип |
|
m ×p матрица доменного типа |
|
Один из флагов |
|
Один из флагов |
|
С С По сравнению с Если никакой Если результат не может быть вычислен с аппаратными плаваниями, арифметику программного обеспечения ядром MuPAD пробуют. Если текущее значение Может быть несколько причин аппаратной арифметики, чтобы перестать работать:
Если никакой Если Обратите внимание на то, что Запаздывающие цифры в результатах с плавающей точкой вычисляются с |
|
Предотвращает преобразование входных данных к числам с плавающей запятой. Точная арифметика используется. Эта опция заменяет Эта опция должна использоваться, если матричный A содержит символьные параметры, которые не могут быть преобразованы в числа с плавающей запятой. Нормальные уравнения A H A X = A H B передаются Если проблема наименьших квадратов не имеет уникального решения, специальное решение, X возвращен вместе с ядром A H A. См. Пример 1. ПримечаниеЭта опция не должна использоваться в системах с коэффициентами с плавающей точкой! Числовая нестабильность может произойти в операциях с плавающей точкой. Далее, если ранг A не максимален, то |
|
Используйте разложение QR. Все записи A должны быть конвертируемыми к значениям с плавающей точкой. Это - метод по умолчанию. Матричный A не должен содержать символьные параметры, которые не могут быть преобразованы в числа с плавающей точкой. Если такие объекты найдены, то Предупреждение может быть подавлено опцией Символьные параметры в B приняты без предупреждения. Они обрабатываются алгоритмом с плавающей точкой. Числовые выражения такой как и т.д. приняты и преобразованы в плавания. Если проблема наименьших квадратов не имеет уникального решения, только специальное решение возвращено. Ядро не вычисляется: это возвращено как Метод Создание условий дано отношением самого большого сингулярного значения A, разделенного на самое маленькое сингулярное значение A. Если это значение является большим, проблема плохо обусловлена. См. пример 2. |
|
Используйте сингулярное разложение. Все записи A должны быть конвертируемыми к значениям с плавающей точкой. Матричный A не должен содержать символьные параметры, которые не могут быть преобразованы в числа с плавающей точкой. Если такие объекты найдены, то Предупреждение может быть подавлено опцией Символьные параметры в B приняты без предупреждения. Они обрабатываются алгоритмом с плавающей точкой. Числовые выражения такой как и т.д. приняты и преобразованы в плавания. Если проблема наименьших квадратов не имеет уникального решения, столбцы X j решения, X имеет минимальную Евклидову длину. Ядро не вычисляется: это возвращено как Сингулярное разложение A = U D VH используется, чтобы решить нормальные уравнения в форме D 2 VH X = D UH B. Для маленьких или нулевых сингулярных значений d j в D = diag (d 1, d 2, …), соответствующие компоненты V H обнуляются x. Обычно, численный метод Создание условий дано отношением самого большого сингулярного значения A, разделенного на самое маленькое сингулярное значение A. Если это значение является большим, проблема плохо обусловлена. |
|
Отключает предупреждения Если символьные коэффициенты найдены в A, |
|
Опция, заданная как Возвратите (специальное) решение и ядро как матрицы доменного типа |
Список [X, KernelBasis, Residues]
возвращен.
(Специальное) решение методом наименьших квадратов X
n ×p матрица.
С Symbolic
, KernelBasis
n ×d матрица (d является размерностью ядра A H A). Его столбцы охватывают ядро A H A. Если ядро тривиально, KernelBasis
целое число 0.
Без Symbolic
, ядро не вычисляется. Значение NIL
возвращен для KernelBasis
.
Список арифметических выражений Residues
состоит из минимизированных отклонений наименьших квадратов, соответствующих столбцам X
и B
.