|
|
|
| Доброе время суток, уважаемые знатоки!
Что Вы думаете о создании калькулятора с возможностью использования в выражении переменных? Т.е. например, при вводе строки a + a, калькулятор должен выдать на ответе 2a.
Я поставился целью написать подобное чудовище, которое будет вычислять алгебраические выражения из школьной программы. С синтаксическим, семантическим и лексическим анализами я более менее разобрался. А теперь придётся похоже учить калькулятор законам математики =(.
Может кто-нибудь сталкивался с чем-либо подобным? Буду благодарен Вашим комментариям! | |
|
|
|
|
|
|
|
для: nytrogen
(09.07.2009 в 20:53)
| | Не просто сталкивался, но в данный момент активно этим занимаюсь :) Правда всего пару дней и дальше разбора выражения и работы с матрицами дело не дошло (разнообразные действия с матрицами, от СЛОЖЕНИЯ она или нет и до ПРИВЕСТИ К ТРЕУГОЛЬНОМУ ВИДУ). Ну а разбор выражений вида "2*A+B*C", где A,B,C - матрицы... (хотя может решать и простые "2+5*6+4/2"
Сейчас просто енту времени делать это дальше, но думаю на выходных продолжу... Вещь это определёно полезная, но многие вещи будет сделать очень сложно, к примеру как записать пределы или интегралы?
Но это еще и само по себе интересно, так как надо напрягать мозг, а делать это для программирования очень интеерсно и полезно ;)
ЗЫ. только я не совсем понял зачем a*a запиисывать, как 2a? | |
|
|
|
|
|
|
|
для: DEM
(10.07.2009 в 01:31)
| | >Ну а разбор выражений вида "2*A+B*C", где A,B,C - матрицы
Эм, не совсем понял, матрицы, это то бишь детерминанты? (сори, я прост только школу закончил).
>к примеру как записать пределы или интегралы?
Это тоже не ко мне, я такое пока и не планирую, даже не знаю, что это такое =)
>только я не совсем понял зачем a*a запиисывать, как 2a?
Я привёл пример примитивного действия с переменными: 2 плюс 2 равно 2а (там не умножение, а сложение). Дело в том, что я не ставлю целью выполнять какие-то астрономические расчёты, а просто напросто, используя законы алгебры, вычислять задаваемое выражение. Вот например такое:
Калькулятор должен выдать ответ:
Кстати, сегодня придумал интересное решение - использовать структуру бинарного дерева для анализа выражения. Пока это в разработке.
Да, и ещё важная деталь. Дроби он должен складывать без приколов, т.е. 1/2 + 1/3 будет равно 5/6, так же как и корни считать с умом, то бишь корень из 108 - это ничто иное как 6 корней из 3. | |
|
|
|
|
автор: . (10.07.2009 в 02:20) |
|
|
для: DEM
(10.07.2009 в 01:31)
| | Приведение матрицы к треугольному виду осуществляется по алгоритму. Алгоритм есть (есть лемма о том, что любая невырожденная матрица может быть приведена к треугольной, её доказательство и есть алгоритм). Поэтому в этой части думать не придётся.
P.S.
Опасная тендения, как говорил Пётр Петрович. Царство ему... | |
|
|
|