Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм для решения задачи 
:(
    Опции темы
spamoney
Дата 18.12.2010, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 8.7.2008

Репутация: нет
Всего: нет



Здравствуйте, помогите составить алгоритм для следующей задачки:

Есть следующая таблица:

Y/X 100 300 900 600 100
700  -      -      -      -      -
300  -      -      -      -      -
100  -      -      -      -      -
600  -      -      -      -      -
300  -      -      -      -      -

Необходимо вместо прочерков поставить 9 цифр (не меньше, не больше), таким образом что бы сумма каждой строки по X соответсвовала уже извесному (начальному) числу по X, аналогично и по Y

т.е пример:

Y/X 100 300 900 600 100
700  -    100 600     -     -
300 100   -   200     -     -
100  -       -   100     -     -
600  -    200    -   400    -
300  -       -      -  200  100

Смотрим соответсвие:
Y1=700=100+600
Y2=300=100+200
....
X3=900=600+200+100
X4=600=400+200
....

Помогите пожалуйста составить алгоритм который бы вывел все возможные варианты расстановки 9 чисел, а то я уже всю голову сломал...
PM MAIL   Вверх
Akina
Дата 18.12.2010, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Ну так это же тривиальное решение системы линейных уравнений.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
_Y_
Дата 18.12.2010, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Akina, мне много лет назад понадобилось решить систему 16 линейных уравнений. Оказалось не так просто - машинная ошибка съедала все.

Судя по даным, они целочисленные. Может это можно использовать?


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Akina
Дата 18.12.2010, 23:00 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(_Y_ @  18.12.2010,  21:15 Найти цитируемый пост)
Оказалось не так просто - машинная ошибка съедала все.

 smile Ошибка при расчёте определителя матрицы 16*16 не может быть такой большой! видимо, был выбран неправильный метод. Мне приходилось решать системы с сотню уравнений - и как-то особой потери точности не наблюдалось... к тому же всегда можно выполнить итерационное уточнение решения.

Цитата(_Y_ @  18.12.2010,  21:15 Найти цитируемый пост)
Судя по даным, они целочисленные. Может это можно использовать? 

При наличии гарантии, что решение существует, и оно целочисленное - можно.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
_Y_
Дата 19.12.2010, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(Akina @ 18.12.2010,  23:00)
 smile Ошибка при расчёте определителя матрицы 16*16 не может быть такой большой! видимо, был выбран неправильный метод.

Если вдаваться в детали, то я пробовал разные методы. Помню брал Гаусса с разной точностью, итерационный, еще уйму каких-то. Давно было.

Проблема же заключается в том, что чем больше линейных уравнений в системе, тем больше, для получения достоверного результата, должны разниться известные величины. А у меня разброс между ними был в пределах процентов 10-20 только (сколь помню). Ну, например, уравнения с такого рода коэффициентами
Код

a0 + a1*200 + a2*200 + ... + a16*200 = 0
.............
a0 + a1*210 + a2*190 + ... + a16*205 = 0

ни один алгоритм не соглашался воспринимать как достоверно различающиеся.

Как я понял из первого поста, известные значения в заданной таблице могут быть любыми. Возможно и размер матрицы может быть не только 5х5. Поэтому и сомнения у меня возникли.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Фантом
Дата 19.12.2010, 19:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 2
Всего: 49



Цитата(_Y_ @  19.12.2010,  16:19 Найти цитируемый пост)
Если вдаваться в детали, то я пробовал разные методы. Помню брал Гаусса с разной точностью, итерационный, еще уйму каких-то. Давно было.

Скорее всего, Вы просто наткнулись на систему с близким к нулю определителем матрицы. А это действительно проблемный случай, причем при любом размере системы.
PM   Вверх
_Y_
Дата 19.12.2010, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Фантомименно. Проблема в том, что чем больше размер системы, тем больше этот самый эпсилон, определяющий близость определителя к нулю для данного вычислительного метода при данной машинной ошибке.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1178 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.