числовой::
Решение методом наименьших квадратов линейных уравнений
Блокноты 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 в смысле наименьших квадратов: j X столбцов 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]
. Cf. Пример 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. Cf. Пример 1. ПримечаниеЭта опция не должна использоваться для систем с коэффициентами с плавающей точкой! Числовая нестабильность может произойти в операциях с плавающей точкой. Далее, если ранг A не максимален, то |
|
Используйте разложение QR. Все записи A должны быть конвертируемыми к значениям с плавающей точкой. Это - метод по умолчанию. Матричный A не должен содержать символьные параметры, которые не могут быть преобразованы в числа с плавающей точкой. Если такие объекты найдены, то Предупреждение может быть подавлено опцией Символьные параметры в B приняты без предупреждения. Они обрабатываются алгоритмом с плавающей точкой. Числовые выражения такой как и т.д. приняты и преобразованы в плавания. Если проблема наименьших квадратов не имеет уникального решения, только специальное решение возвращено. Ядро не вычисляется: это возвращено как Метод Создание условий дано отношением самого большого сингулярного значения A, разделенного на самое маленькое сингулярное значение A. Если это значение является большим, проблема плохо обусловлена. Cf. Пример 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
.