/ / Перевірка доцільності системи недостатньо визначених лінійних рівнянь [закрита] - java, math, лінійна алгебра, лінійна, лінійне

Перевірте доцільність недоопределеної лінійної системи рівнянь [closed] - java, математика, лінійна алгебра, лінійне, лінійне програмування

Я хочу написати Java-процедуру, яка перевіряє, чи можлива система лінійних рівнянь. У мене більше змінних, ніж рівнянь, тому система недооцінена.
Чи існує якийсь стандартний алгоритм для цього? А якщо так, то яка його складність часу?

Відповіді:

1 для відповіді № 1

Я вважаю, що ви шукаєте (щоб написати повний вирішувач, так чи інакше) Гаусова елімінація. Для просто перевірки, чи можна вирішити, ядумаю, ви можете просто перевірити наявність, принаймні, стільки лінійно незалежних рівнянь, як існують змінні для вирішення (лінійна незалежність в основному просто означає, що вектори, утворені з коефіцієнтів рівнянь aren "паралельно. лінійної незалежності і проходить через приклад гаусової елімінації, див тут.

Що стосується часової складності, то я відвожу вашу увагу це обговорення, хоча я сумніваюся, що це буде найменшим сенсом, поки ви не ввели себе в процес ліквідації Гаусса.

Вибачте за відсутність специфічної для Java інформації, я більше з C + +, і я в основному просто вказую вам, як котити свої власні.


1 для відповіді № 2

Те, що ви шукаєте, називається метод симплекс. Просто запустіть a розв'язувач лінійного програмування (Інструмент лінійного програмування / Бібліотеки для Java) на вашій задачі, встановивши цільову функцію в нуль (або будь-яку іншу довільну постійну).

Очікувана складність часу є поліноміальною. Найгірший складний випадок є експоненціальним, але він є дуже дуже рідкісні; тільки штучні приклади, як відомо, приймають так довго.