МНК

Форум пользователей пакета Maple

Модератор: Admin

Кли
Сообщения: 147
Зарегистрирован: Пт ноя 04, 2016 4:54 pm

МНК

Сообщение Кли » Пн мар 04, 2019 4:00 pm

Здравствуйте!!! Как реализовать минимизацию переопределенной системы?
https://ru.wikipedia.org/wiki/Метод_наи ... _квадратов

Код: Выделить всё

restart;
with(linalg):
5*x+7*y=14;
3*x+2*y=12;
7*x+y=9;
6*x+5*y=17;                     
A:=matrix([[5,7],[3,2],[7,1],[6,5]]);
b:=vector([14,12,9,17]);
A1:=evalf(inverse(multiply(transpose(A),A)));
A2:=multiply(transpose(A),b);
x:=multiply(A1,A2);

Kitonum
Сообщения: 2076
Зарегистрирован: Ср дек 31, 2008 1:55 pm
Откуда: г. Пенза

Re: МНК

Сообщение Kitonum » Пн мар 04, 2019 5:42 pm

Для вашей задачи есть отдельная команда LinearAlgebra:-LeastSquares . Пакет linalg давно устарел и его лучше не использовать:
restart;
with(LinearAlgebra):
Eq1:=5*x+7*y=14;
Eq2:=3*x+2*y=12;
Eq3:=7*x+y=9;
Eq4:=6*x+5*y=17;
Sol:=LeastSquares({Eq1,Eq2,Eq3,Eq4}, {x,y});
evalf(Sol);

Кли
Сообщения: 147
Зарегистрирован: Пт ноя 04, 2016 4:54 pm

Re: МНК

Сообщение Кли » Пн мар 04, 2019 5:54 pm

а минимизировать уже не надо?

Kitonum
Сообщения: 2076
Зарегистрирован: Ср дек 31, 2008 1:55 pm
Откуда: г. Пенза

Re: МНК

Сообщение Kitonum » Пн мар 04, 2019 6:15 pm

Не надо.

Кли
Сообщения: 147
Зарегистрирован: Пт ноя 04, 2016 4:54 pm

Re: МНК

Сообщение Кли » Пн мар 04, 2019 6:22 pm

ок, понял, спасибо)))

Кли
Сообщения: 147
Зарегистрирован: Пт ноя 04, 2016 4:54 pm

Re: МНК

Сообщение Кли » Чт мар 07, 2019 7:22 pm

а как найти сумму отклонений?

Kitonum
Сообщения: 2076
Зарегистрирован: Ср дек 31, 2008 1:55 pm
Откуда: г. Пенза

Re: МНК

Сообщение Kitonum » Чт мар 07, 2019 11:36 pm

Нахождение суммы квадратов отклонений для найденного решения:
restart;
with(LinearAlgebra):
Eq1:=5*x+7*y=14;
Eq2:=3*x+2*y=12;
Eq3:=7*x+y=9;
Eq4:=6*x+5*y=17;
Sol:=LeastSquares({Eq1,Eq2,Eq3,Eq4}, {x,y});
evalf(eval(`+`(op(map((lhs-rhs), [Eq1,Eq2,Eq3,Eq4])^~2)), Sol));

Markiyan Hirnyk
Сообщения: 1313
Зарегистрирован: Вс дек 04, 2011 11:07 pm

Re: МНК

Сообщение Markiyan Hirnyk » Пт мар 08, 2019 9:39 am

Иной способ - применить DirectSearch:

Код: Выделить всё

DirectSearch:-SolveEquations([Eq1, Eq2, Eq3, Eq4]);
[40.031052155562236, Vector[column](4, [2.51100392017952600, -5.12179680447659802, 2.00180886191407836, -1.86704853777850665]), [x = 1.3750376843913412, y = 1.376545071174689], 50]
Сумма квадратов отклонений равна 40.031052155562236.

Кли
Сообщения: 147
Зарегистрирован: Пт ноя 04, 2016 4:54 pm

Re: МНК

Сообщение Кли » Пт мар 08, 2019 12:59 pm

благодарю