Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

25 Август 2019, 17:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice  без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Уважаемые знатоки ООо. Помогите решить задачку. Есть у  (Прочитано 4770 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ForumOOo (бот)

Offline Offline

Сообщений: 697


« Стартовое сообщение: 24 Ноябрь 2013, 18:28 »

Компонент: Calc
Версия продукта:
Сборка:
ОС:

Уважаемые знатоки ООо. Помогите решить задачку. Есть уравнение вида K1X1+K2X2+...K20X20=0 В уравнении Кі - константа. Каждый из Х - целое число в определенном
диапазоне (например Х1={0...10}, X2={0...1000} и т.д.) Необходимо сформировать матрицу ВСЕХ возможных корней уравнения. Как это можно сделать?

--
Подпись: Евгений
Записан
VlhOwn
Форумчанин
***
Offline Offline

Пол: Мужской
Расположение: Ростов-на-Дону
Сообщений: 1 076


« Ответ #1: 25 Ноябрь 2013, 08:36 »

А Вы знаете, как эта задача решается математически, без всяких калков и экселей? Если знаете, опишите или дайте ссылку, потом подумаем, как это представить программно.
Записан
Hasim
Форумчанин
***
Offline Offline

Сообщений: 754


Woe from wit


« Ответ #2: 25 Ноябрь 2013, 09:25 »

Есть уравнение вида K1X1+K2X2+...K20X20=0 В уравнении Кі - константа. Каждый из Х - целое число
Если Кі -целые числа, то это - линейное диофантово уравнение.
Если Кі - не целые числа, то все намного сложнее и решений  в целых числах, как правило, нет.
Записан
E.O.
Участник
**
Offline Offline

Сообщений: 9


« Ответ #3: 25 Ноябрь 2013, 10:38 »

Если Кі -целые числа,
Если Ki - не целое, но конечная десятичная дробь, то умножив левую и правую части на 10, 100 и т.д. мы получим уравнение с целыми числами.
Решение возможно рассмотреть исключительно перебором возможных сочетаний Xi, т.е. присваиваем Х1...Х19 значение 0, Х20=1. Выполняем проверку тождества. Если выполняется, в таблицу корней заносим значения Х1...Х20, Х20прибавляем 1, проверяем на нахождение Х20 в заданном диапазоне. Если не вышли - снова проверка тождества. Если Х20 за пределами диапазона - Х20 обнуляем, а Х19 увеличиваем на 1. И так до тех пор, пока не будут перебраны все возможные варианты.
Записан
kompilainenn
Мастер
*****
Offline Offline

Сообщений: 2 700



« Ответ #4: 25 Ноябрь 2013, 20:38 »

задача явно не для табличного процессора, а скорее для маткада
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
E.O.
Участник
**
Offline Offline

Сообщений: 9


« Ответ #5: 26 Ноябрь 2013, 11:05 »

задача явно не для табличного процессора
Ну почему же не для табличного процессора? Ведь один из корней можно найти используя функцию "поиск решения". А вот как найти все остальные корни, это вопрос. Да и задача стоит решить эту проблему средствами Calc или Excel.
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #6: 26 Ноябрь 2013, 13:01 »

Евгений, фразу насчет "Х1={0...10}, X2={0...1000} и т.д." воспринимаю как шутку: для "и т.д." Calc'у просто не хватит строк в таблице. Даже для восьми иксов, пробегающих целые значения от нуля до 10, при предложенном алгоритме строк не хватит. Разве что переходить в соседние столбцы и новые листы...

Можем, конечно, поковырять таблицу в свободное время...  хотя вряд ли... Как там сформулировал Жванецкий? "Трудно сделать процесс захватывающим при отсутствии конечного результата..."

"     -- Г-голубчики, -- сказал Федор Симеонович озадаченно, разобравшись в почерках. -- Это же п-проблема Бен Б-бецалеля. К-калиостро же доказал, что она н-не имеет р-решения.
     -- Мы сами знаем,  что она  не  имеет  решения,  --  сказал  Хунта, немедленно ощетиниваясь. -- Мы хотим знать, как ее решать.
     -- К-как-то ты странно рассуждаешь,  К-кристо...  К-как  же  искать решение, к-когда его нет? Б-бессмыслица какая-то...
     -- Извини, Теодор, но это ты очень странно рассуждаешь. Бессмыслица -- искать решение, если оно и так есть. Речь идет о том, как поступать с задачей,  которая решения не имеет.  Это глубоко принципиальный  вопрос, который,  как  я  вижу,  тебе,  прикладнику,  к сожалению,  не доступен. По-видимому, я напрасно начал с тобой беседовать на эту тему."
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
kompilainenn
Мастер
*****
Offline Offline

Сообщений: 2 700



« Ответ #7: 26 Ноябрь 2013, 14:26 »

Ну почему же не для табличного процессора?
потому что стоит задача "создать МАТРИЦУ ВСЕХ! возможных корней УРАВНЕНИЯ"! из терминов видно, что это Вам не баланс предприятия по закупкам ночных горшков считать, а это чистейшая МАТЕМАТИКА, для решения задач которой есть соответствующие инструменты. имхо
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #8: 26 Ноябрь 2013, 15:17 »

В общем, если действительно свести задачу к перебору всех возможных целочисленных значений X(i), то это просто пачка вложенных циклов с проверкой тождества в самой глубине... Не увлекает:много ручной писанины ради предсказуемого результата

[вложение удалено Администратором]
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
E.O.
Участник
**
Offline Offline

Сообщений: 9


« Ответ #9: 26 Ноябрь 2013, 18:39 »

много ручной писанины ради предсказуемого результата
Спасибо, это именно то, что требовалось
Записан
VlhOwn
Форумчанин
***
Offline Offline

Пол: Мужской
Расположение: Ростов-на-Дону
Сообщений: 1 076


« Ответ #10: 28 Ноябрь 2013, 21:49 »

В общем, если действительно свести задачу к перебору всех возможных целочисленных значений X(i), то это просто пачка вложенных циклов с проверкой тождества в самой глубине... Не увлекает:много ручной писанины ради предсказуемого результата

Ну, количество ручной писанины можно несколько сократить.

Сначала рассмотрим задачу нахождения всех целочисленных корней уравнения ax+T=b, где x - неизвестная, a и b - константы, а T целочисленно изменяется в диапазоне от Tmin до Tmax.
Очевидно, что искомый результат получится, если разделить все целые числа диапазона [b-Tmax,b-Tmin] на a и отфильтровать целые.

Теперь представим наше уравнение в виде системы
k1*x1+Y=0
k2*x2+...kn*xn=Y

Очевидно, что Y целочисленно изменяется от значения Ymin = для всех ki>0 сумма ki*min(xi) + для всех ki<0 сумма ki*max(xi) до значения Ymax=для всех ki<0 сумма ki*min(xi) + для всех ki>0 сумма ki*max(xi)
Тогда первое уравнение мы решать умеем, а второе - рекурсивный вызов исходной процедуры в цикле по значениям Y.

Не уверен, что считать эта программа будет быстрее, но писать придется меньше и увлекательней Улыбка
Записан
kompilainenn
Мастер
*****
Offline Offline

Сообщений: 2 700



« Ответ #11: 29 Ноябрь 2013, 07:13 »

что считать эта программа будет быстрее
программа! отдельная желательно, а не как не табличный процессор...
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!