2016-11-18 12 views
0

Например, я могу ввести в Google или WolframAlpha 6+6 или 2+237, которые можно запрограммировать, запросив у пользователя a и b, а затем оценку return a+b. Однако я могу также ввести 5*5^(e) или любую другую комбинацию, однако программа жестко запрограммирована только для вычисления выражений a+b.Как математические программы могут принимать уравнения любой формы?

Легко представить более сложные проблемы с кодом на любом распространенном языке.

return 5*pow(5,Math.E) #pseudocode 

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

x = Input("enter coefficient") 
b = input("enter base") 
p = input("enter power") 
print(x*pow(b,p)) 

С помощью этого кода, я заперт в к моя программа только способна оценить проблему формы x*b^p.

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

+1

Это очень широкий вопрос - вероятно, слишком широкий и не по теме. Я редактировал ваши теги - «динамическое программирование» - это нечто очень специфическое, что вы здесь не имеете в виду. Попробуйте googling «символические математические библиотеки». (Не ваш downvoter, btw. = /) – BadZen

+0

Написав парсер выражений. Люди пишут код так, как они пишут какой-либо другой код - с помощью текстового редактора и клавиатуры. –

+0

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

ответ

1

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

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

Тем не менее, существуют уровни «понимания», встроенные в продукты, доступные в сети. Google и WolframAlpha определенно «высокого класса». Они пытаются приблизиться как можно ближе к определению грамматик, способных представлять человеческое высказывание, по крайней мере, по существу. Ближе к нижнему концу относятся такие продукты, как Sympy, которые принимают гораздо более строго определенный ввод.

После того, как программное обеспечение решит, какая часть ввода является существительным, а что является глаголом, так сказать, он продолжает выполнять запрошенные действия.

Чтобы понять больше, вам, возможно, придется изучать формальный язык, искусственный интеллект, программирование и области, которые я не могу себе представить.