2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 Нужно составить и решить уравнение по комбинаторике
Сообщение12.04.2014, 12:40 
Есть общее уравнение вида:

$aA+bB+cC \le E $

Где $A$, $B$, $C$ - энергия разных веществ.
$a$, $b$, $c$ - целое число, моль.

Есть ограничение, для $a, b, c$. Их сумма не может превышать $n$ - заданное число моль исходного вещества. Вещество $A$ содержит 2 моль исходного вещества (его энергия обозначается как $A$), $B$ - 3 моль, а C - 4 моль. Например, если $n=4$ моль, то максимум 2 моль $A$, 1 моль $B$, 1 моль $C$. Не могу сформулировать это математически.
$E, n$ - задаются. $A, B, C$ - известные числа. Нужно найти такую комбинацию $a, b, c$, при которой сумма энергий была как можно ближе к значению $E$.
Хотя бы один из коэффициентов не должен быть равен нулю
Подобную задачу можно решить в маткаде или екселе?

Есть начальное количество вещества - $n$ моль. Из него образуются продукты $A, B, C$. При этом выделяется энергия $A, B, C$. На вещество $A$, тратится 2 моль изначального вещества, на $B$ - 3 моль, на $C$ - 4 моль. Чтобы пошел процесс превращения начального вещества, мы затрачиваем энергию $E$. Дано условие, что продукты будут стремиться максимально затратить энергию. Поэтому должно получится такое соотношение продуктов, чтобы сумма энергий образования продуктов была максимально близка к $E$. Задача: найти наиболее близкое к $E$ соотношение продуктов $A, B, C$.

Нужен универсальный алгоритм, в будущем будет более 20 продуктов со своими энергиями.

Пример:

$A=20; B=50; C=30; E=100$; $n=10$
$5A=100$
$4A=80$
$2B=100$
$3C=90$ вариант не возможен, так как 12 моль, а исходного 10.
$2A+2C=100$, но это невозможно, поскольку $n=10$, а тут 12 моль.
$2A+B=90$
и т.д....
Далее мы смотрим, в каких вариантах значение наиболее ближе к $E$, и который выполняет условие $n=10$

Какую-нибудь программу для решения этой задачи посоветовать можете? И как в ней выполнить алгоритм?

 
 
 
 Re: Нужно составить и решить уравнение по комбинаторике
Сообщение12.04.2014, 12:45 
$a=b=c=0$

 
 
 
 Re: Нужно составить и решить уравнение по комбинаторике
Сообщение12.04.2014, 12:48 
Cash в сообщении #848620 писал(а):
$a=b=c=0$

Я там ошибся, исправил. Е не равняется нулю.

 
 
 
 Re: Нужно составить и решить уравнение по комбинаторике
Сообщение12.04.2014, 13:23 
Ну так $0 \cdot A+0\cdot B+0\cdot C≤Е$
Почему нет?

 
 
 
 Re: Нужно составить и решить уравнение по комбинаторике
Сообщение12.04.2014, 13:28 
Потому, что какое то число энергии должно получится.

Должна быть определенное соотношение энергий А, B, С. В идеале быть равной Е. Либо максимально близкой к ней.
Вариант 0, не соответствует поставленной задаче.

 
 
 
 Re: Нужно составить и решить уравнение по комбинаторике
Сообщение12.04.2014, 13:30 
Аватара пользователя
Ну и что. Ноль может быть меньше $E$

 
 
 
 Re: Нужно составить и решить уравнение по комбинаторике
Сообщение12.04.2014, 13:32 
Ну хорошо, ещё одно доп условие, хотя бы один из коэффициентов не должен быть равен нулю.

 
 
 
 Re: Нужно составить и решить уравнение по комбинаторике
Сообщение12.04.2014, 13:43 
Аватара пользователя
Это похоже на задачу целочисленного линейного программирования. Только там обычно ищут наилучшее (в некотором смысле) решение. Но можно ставить задачу и по-другому: найти какое-то решение или перечислить все.
Если переменных всего три, проще решить задачу перебором.

 
 
 
 Re: Нужно составить и решить уравнение по комбинаторике
Сообщение12.04.2014, 13:54 
Переменных будет 20+ штук. Просто я пока хочу понять алгоритм на простом примере.
Мне нужно найти наилучшее решение. Смысл в том, чтобы получить такую вариацию, при которой значение будет как можно ближе к Е.

 
 
 
 Posted automatically
Сообщение12.04.2014, 13:57 
 i  Тема перемещена из форума «Помогите решить / разобраться (М)» в форум «Карантин»
Svinks

1. Запишите формулы в соответствии с требованиями Правил форума, т.е. в $\TeX$.
Краткие инструкции можно найти здесь: topic8355.html и topic183.html.
Кроме этого, в теме Видео-пособия для начинающих форумчан можно посмотреть видео-ролик "Как записывать формулы".

2. Приведите свои попытки решения и/или укажите затруднения.

После того как исправите сообщение, сообщите об этом в теме Сообщение в карантине исправлено, и тогда тема будет возвращена.

 
 
 
 Posted automatically
Сообщение12.04.2014, 19:22 
 i  Тема перемещена из форума «Карантин» в форум «Помогите решить / разобраться (М)»


Внимание! Стартовый пост был изменен.

 
 
 
 Re: Нужно составить и решить уравнение по комбинаторике
Сообщение12.04.2014, 21:44 
Всё таки никак не могу придумать, как записать условие ограничения для молей.

 
 
 
 Re: Нужно составить и решить уравнение по комбинаторике
Сообщение12.04.2014, 21:54 
Аватара пользователя
Я вот тоже не все ваши высказывания поняла.
Svinks в сообщении #848619 писал(а):
Вещество $A$ содержит 2 моль исходного вещества (его энергия обозначается как $A$), $B$ - 3 моль, а C - 4 моль. Например, если $n=4$ моль, то максимум 2 моль $A$, 1 моль $B$, 1 моль $C$. Не могу сформулировать это математически.
Не есть хорошо обозначать вещество и "содержащуюся" в нем энергию одной и той же буквой. И откуда еще взялось "исходное вещество"? Наверное, надо расписать процесс подробнее.

Что касается решения - посмотрите по теме "целочисленное линейное программирование". Там алгоритмы не совсем тривиальные. Неспециалисту запрограммировать их будет непросто. Есть ли их реализации в простых и доступных пакетах - не знаю, дождитесь кого-то, кто в этом разбирается.

 
 
 
 Re: Нужно составить и решить уравнение по комбинаторике
Сообщение12.04.2014, 22:44 
У нас есть метан $CH4$. Это исходное вещество. Допустим его 10 молей. Воздействуя на него, мы можем получить укрупнение цепи, причём может получится множество различных продуктов. Каждый из продуктов имеет свою энтальпию образования. Есть предположение, что образоваться будет сочетание продуктов, сумма энергия которые будет максимально равна энергии подведенной к системе. Допущение, что эта энергия уже конечная, то есть тепловые потери уже учтены.

Побочные продукты:

$C2H6$
$C3H8$
$C4H12$

У каждого из них свой тепловой эффект, рассчитанные через термохимические уравнения.

Очевидно, что из 10 моль метана не может получится 3 моли бутана, если получается 2 моль бутана, то не может получится еще моль пропана. При этом, бутан может получится, если подать на систему энергию в достаточном количестве.

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

И тут вопрос, если у меня будет 20-50 побочных продуктов, компьютеры смогут перебрать варианты? Не выйдет так, что на это способны будут лишь суперкомпьютеры и годы вычислений? По идеи, это можно обойти низким значением моли метана и невысоким количеством энергии.

 
 
 
 Re: Нужно составить и решить уравнение по комбинаторике
Сообщение12.04.2014, 22:50 
Аватара пользователя
20-50 переменных это, вроде, не много.

-- 12.04.2014, 23:56 --

Svinks в сообщении #848830 писал(а):
Очевидно, что из 10 моль метана не может получится 3 моли бутана, если получается 2 моль бутана, то не может получится еще моль пропана. При этом, бутан может получится, если подать на систему энергию в достаточном количестве.
Не зная химии процессов, ничего не поняла. Что из этого верно:
1. Число атомов $C$ слева и справа в формуле преобразования совпадают (или слева не меньше).
2. Число атомов $H$ слева и справа в формуле преобразования совпадают (или слева не меньше).
3. Каждое преобразование из метана в побочный продукт требует некоторой энергии, запас которой ограничен. На что рассчитывается эта энергия? На одну молекулу метана? На одну молекулу побочного продукта?

 
 
 [ Сообщений: 18 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group