Результаты поиска
Решение линейного уравнения
Мне нужно программно решить систему линейных уравнений в 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 .
Парсер уравнений (выражений)с приоритетом?
Я разработал анализатор уравнений с использованием простого алгоритма стека, который будет обрабатывать двоичные файлы (+, -, |, &, *, /, etc) операторы, унарные (!) операторы и скобки.
Использование этого метода, однако, оставляет мне все, что имеет одинаковый приоритет - он вычисляется слева направо независимо от оператора, хотя приоритет может быть применен с помощью скобок.
Так что прямо сейчас "1+11*5" возвращает 60, а не 56, как можно было бы ожидать.
Хотя это подходит для текущего проекта, Я хочу иметь рутину общего назначения, которую можно использовать для последующих проектов.
Отредактировано для ясности:
Что такое хороший алгоритм для разбора уравнений с приоритетом?
Я заинтересован в чем-то простом для реализации и понимаю, что я могу кодировать сам, чтобы избежать проблем лицензирования с доступным кодом.
Grammar:
Я не понимаю вопроса grammar - я написал это от руки. Это достаточно просто, чтобы я не видел необходимости в YACC или Bison. Мне просто нужно вычислить строки с такими уравнениями, как "2+3 * (42/13)".
Язык:
Я делаю это в C, но меня интересует алгоритм, а не конкретное языковое решение. C-это достаточно низкий уровень, чтобы его можно было легко перевести на другой язык, если возникнет такая необходимость.
пример кода
Я опубликовал тестовый код для простого синтаксического анализатора выражений , о котором я говорил выше. Требования к проекту изменились, и поэтому мне никогда не нужно было оптимизировать код для производительности или пространства, поскольку он не был включен в проект. Он написан в оригинальной многословной форме и должен быть легко понятен. Если я сделаю что-нибудь еще с ним в плане приоритета операторов, я, вероятно, выберу макрос hack , потому что он соответствует rest программы в простоте. Если я когда-нибудь использую это в реальном проекте, я буду использовать более компактный/быстрый парсер.
Смежный вопрос
-Adam