我正在尝试创建一个我自己的python模块,在其中我可以解决y = ax + b等简单函数。我希望能够用变量和其他任务来计算这样的方程式,如重写和替换。
我知道SymPy的存在,但我正在尝试自己创建它,以了解如何用计算机语言解决数学并扩展我的编程技巧。我现在只是努力让符号成为我可以工作的变量。我查看了SymPy项目的源代码,但似乎没有找到任何有用的intel。
所以我的问题是:如何创建一个我可以在python方程式中使用的变量?
答案 0 :(得分:0)
据我了解你,你需要先写一个词法/语法解析器。从this开始阅读,了解您需要做多少工作=)
答案 1 :(得分:0)
考虑你提到的那种表达式,y = ax + b。我知道没有计算机语言不需要你用乘法运算符来编写它,因此y = a * x + b。
要开始创建您感兴趣的内容的任务,您可以为这些表达式创建解析器,例如使用pyparsing
库的表达式。
>>> import pyparsing as pp
>>> operand = pp.Word(pp.alphanums)
>>> equals = pp.Literal('=')
>>> multiply = pp.Literal('*')
>>> add = pp.Literal('+')
>>> linear_functionlinear_function = operand + equals + operand + multiply + operand + add + operand
>>>
>>> linear_function.parseString('y = a*x+b')
(['y', '=', 'a', '*', 'x', '+', 'b'], {})
>>> linear_function.parseString('y = 3*x+5')
(['y', '=', '3', '*', 'x', '+', '5'], {})
它已经能够处理变量x
的符号或常数乘数。 (但仅此而已。一个足够有趣的语法会相当复杂。)
通过这样解析所识别的项目的常用方法是将它们放在一个表中,该表可以由字符串本身索引。所以,如果我需要计算y
的值,我会根据解析检查表中所需的值。
如果我需要解决x
,那么我需要一些能够查看解析后的字符串的算法,确定要应用的解决方案算法,应用它,然后查看上述表格,了解生成最终解决方案 - 如果可能的话。
我在45年左右没有研究过这个问题。这些东西以前称为符号表。