2015-05-20 3 views
-1

У меня есть 36 линейных уравнений с 36 переменными в виде матрицы: A * X = B. И у меня есть два условия: сумма всех x (i) должна быть равна единице И все x (i)> 0. Уравнения в этих условиях не имеют точного ответа, поэтому я ищу приближенное решение с наименьшая квадратная ошибка, удовлетворяющая условиям. Я новичок в Matlab и совершенно новый для линейного программирования, поэтому любой комментарий поможет.Как найти приближенное решение набора линейных уравнений, удовлетворяющих некоторым условиям?

+1

Я не понимаю, почему нет точного решения. Каковы размеры 'X' и' B'? Кстати, 'X' кажется стохастической матрицей. Кроме того, ваш вопрос, по-видимому, лучше подходит для http://scicomp.stackexchange.com/ –

+1

возможного дубликата метода наименьшего квадрата с ограничением (http://stackoverflow.com/questions/30354653/least-square-method- с-a-constraint) – knedlsepp

+2

Пожалуйста, не публикуйте несколько другую формулировку своего вопроса каждый час. Скорее дайте нам достаточно информации в своем вопросе, чтобы дать вам правильный ответ. Вы начали с простых наименьших квадратов, затем добавили ограничение положительности и теперь ограничение 'sum (x (i)) == 1'. Немного о том, что вы пытаетесь решить с этим, тоже не плохо. – knedlsepp

ответ

0

Одним из способов решения набора линейных уравнений является использование правила Крамера. Вот эта ссылка: http://en.wikipedia.org/wiki/Cramer 's_rule

Как только вы получите набор решений, вы можете проверить два неравенства, если они удовлетворяют решению.

В противном случае лучшим было бы использовать метод Simplex или метод Big M, обрабатывающий все 38 в качестве ограничений для поиска решения. http://en.wikipedia.org/wiki/Simplex_algorithm http://en.wikipedia.org/wiki/Big_M_method

Надеюсь, это поможет.

+3

Для точных решений систем линейных уравнений вы делаете один LU-разложение матрицы 'A'. Это можно использовать для всех столбцов 'X'. Не используйте правило Крамера. Это дорого и численно нестабильно. На самом деле лучшим численным способом вычисления детерминант является LU-разложение. –

+1

Yuck @ Правило Крамера. Это хорошо для небольших систем (3 х 3), но для больших систем требуется большая вычислительная мощность и вызывает большую головную боль .... особенно потому, что вам нужно рассчитать детерминанту. Используйте LU-разложение, как упоминалось Хорстом. – rayryeng

Смежные вопросы