Найдено результатов: 2

Решение линейного уравнения

Мне нужно программно решить систему линейных уравнений в C, Objective C или (при необходимости) C++.

Вот пример уравнений:

-44.3940 = a * 50.0 + b * 37.0 + tx
-45.3049 = a * 43.0 + b * 39.0 + tx
-44.9594 = a * 52.0 + b * 41.0 + tx

Исходя из этого, я хотел бы получить наилучшее приближение для a , b и tx .

math   linear-algebra   system   linear-equation    

559   10   16:03, 1st July, 2020


Парсер уравнений (выражений)с приоритетом?

Я разработал анализатор уравнений с использованием простого алгоритма стека, который будет обрабатывать двоичные файлы (+, -, |, &, *, /, etc) операторы, унарные (!) операторы и скобки.

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

Так что прямо сейчас "1+11*5" возвращает 60, а не 56, как можно было бы ожидать.

Хотя это подходит для текущего проекта, Я хочу иметь рутину общего назначения, которую можно использовать для последующих проектов.

Отредактировано для ясности:

Что такое хороший алгоритм для разбора уравнений с приоритетом?

Я заинтересован в чем-то простом для реализации и понимаю, что я могу кодировать сам, чтобы избежать проблем лицензирования с доступным кодом.

Grammar:

Я не понимаю вопроса grammar - я написал это от руки. Это достаточно просто, чтобы я не видел необходимости в YACC или Bison. Мне просто нужно вычислить строки с такими уравнениями, как "2+3 * (42/13)".

Язык:

Я делаю это в C, но меня интересует алгоритм, а не конкретное языковое решение. C-это достаточно низкий уровень, чтобы его можно было легко перевести на другой язык, если возникнет такая необходимость.

пример кода

Я опубликовал тестовый код для простого синтаксического анализатора выражений , о котором я говорил выше. Требования к проекту изменились, и поэтому мне никогда не нужно было оптимизировать код для производительности или пространства, поскольку он не был включен в проект. Он написан в оригинальной многословной форме и должен быть легко понятен. Если я сделаю что-нибудь еще с ним в плане приоритета операторов, я, вероятно, выберу макрос hack , потому что он соответствует rest программы в простоте. Если я когда-нибудь использую это в реальном проекте, я буду использовать более компактный/быстрый парсер.

Смежный вопрос

Умный дизайн математического анализатора?

-Adam

algorithm   parsing   equation    

778   22   23:00, 2nd August, 2020