iDmitriyWinX
@iDmitriyWinX
Разверните мне сервер на NGNX, пожалуйста

Существует ли алгоритм выведения неизвестного из формулы?

Привет, была идейка создать Vk Mini App для конвертации величин друг в друга (да, таких там реально нет, хочу быть первым), и как бы с этим проблем нет, но потом у меня появилась реально крутая идея (для меня): Научить своё приложение выражать неизвестное из формулы.

Допустим, у нас есть формула количества теплоты, которое выделяет проводник (Закон Джоуля-Ленца): Q=I^2*R*t

И мы хотим найти из всего этого силу тока

  1. Для удобства поменяем их местами: I^2*R*t=Q
  2. Избавимся от произведения сопротивления проводника с временем прохождения тока в левой части нашего уравнения: I^2*R*t=Q | : Rt
  3. Получаем I^2=Q : Rt
  4. Результатом решения этого неполного квадратного уравнения будет взятие квадратного корня из правой части: I=+√Q : Rt


Отлично, мы только что увидели человеческую логику решения уравнения, а как быть с компьютером?

На какие подзадачи нужно разбить данную задачу? Научить программу читать уравнения подобного вида (без квадратных, для начала), научить действовать согласно математическим законам?
  • Вопрос задан
  • 146 просмотров
Решения вопроса 3
gbg
@gbg
Баянист. Тамада. Услуги.
Ну, вы собираетесь написать систему символьной алгебры с нуля, а это - сложная задача. Лучше просто напишите коннектор к maxima или octave, они умеют это делать.

Разработка же с нуля, это огромное количество RnD, да еще требующее довольно специфичных знаний в области высшей алгебры (ничего общего со школьной алгеброй не имеет).

Для начала, нужно научиться хотя бы хранить уравнение (в виде строки или в виде ОПЗ, или в виде AST, или еще как-то) и делать с ним эквивалентные преобразования.
Ответ написан
@dmshar
Не только maxima или octave, но и Python/SymPy имеет аналогичные средства. (Кстати, разработки в этом направлении ведутся как минимум с начала 70-ых годов прошлого века). Но повторять подвиг их разработки - надо иметь большое нахальство (в хорошем смысле), глубокие знания в математике (мат.логике, алгебре, теории формальных грамматик и очень много в чем еще) и программировании (причем, не на классических языках программирвоания, а на всяких LISP да PROLOG - впрочем, я не слежу, что в этой области сейчас в тренде), и вообще-то говоря не малую команду квалифицированных сподвижников. Да и зачем? Бери, пользуйся готовым. Ну если очень хочется - встрой в свое приложение, благо все доступно, вплоть до исходного кода.
Ответ написан
wataru
@wataru
В общем случае решения может и не быть вообще. Если формула - нетривиальный полином 20-ой степени, то решения символьного вообще не существует.

Системы символьной алгебры грубо говоря умеют кучу частных случаев. Типа туда забита формула решения линейных и квадратных уравнений.

Судя по всему, ваша задача - весьма частная. Если формула может быть только произведением величин в каких-то степенях, то алгоритм вы уже описали - перенести все лишнее в другую сторону и взять корень нужной степени.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы