资讯专栏INFORMATION COLUMN

实现一个【伪】四则运算封闭的符号运算和求解

bang590 / 2152人阅读

摘要:最后实现的符号运算,符号与实数对四则运算封闭,符号与符号对加减封闭多么偷懒啊哈哈哈哈原谅我没文化上,知道了的通过单元测试要实现方法。

最后的效果:

if __name__ == "__main__":
    import doctest
    doctest.testmod()
    x = Symbols("x")
    print(x * 2 + 1 == 8.0 * x + 6).solution

打印:
{"x": -0.8333333333333334}
这里用了8.0是因为众所周知的Python2.7+,对于整数除法用的是整除,3/2=1什么的,Python3后来有用//这个操作符的,这里不是重点,不用管

昨天快下班的时候事情做完了,于是开始划水,看到sympy是个符号运算的库,我就在想要是让我实现该有多难呢。。感觉真是非常适合新手/高中生的一个题目呢~

好吧,那么我们从四则运算封闭的符号系统做起~

下班后先写了一点,然后吃饭的时候构思了一下,写完啦。今天又补了一点求解一元一次方程。。。

学到的是

数学方面,符号对四则运算封闭的话,需要额外的两个参数:1、系数,2、次数。例如系数是2,次数是3。发现这个问题之后,果断摒弃了次数。最后实现的符号运算,符号与实数对四则运算封闭,符号与符号对加减封闭(多么偷懒啊哈哈哈哈~原谅我没文化)

Python上,知道了doctest的通过单元测试要实现__repr__方法。
不然在写文档测试时:

"""
>>> Symbols("x",2) / 4.0
Symbols("x",0.5)
"""

会报如下错误

Failed example:
 Symbols("x",2) / 4.0
Expected:
 Symbols("x",0.5)
Got:
 <__main__.Symbols object at 0x10d5718d0>

丢一个不知道能不能让爬虫爬到。关键词:doctest class test

还有知道了a+1重载__add__方法,而1+a并不需要重载Int,直接重载a的__radd__就行了。。

多元一次方程的话。。想了想感觉还是挺啰嗦的,就算了。。。
加上次数,感觉要涉及高数了。。。做起来好啰嗦。。
积分。。。阿西BUG,高数忘光了。如果我真的能有机会做的话

代码:https://gist.github.com/zjjott/0eb6ff1947cd213dd70a

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37737.html

相关文章

  • 用Python学数学之Sympy代数符号运算

    摘要:的符号运算如果之前是学数学相关专业了解计算机代数系统,就会对数学符号的运算比较熟悉,而如果之前是程序员,可能会有点不太明白,下面我们就来了解一下。 在我们初、高中和大学近10年的学习时间里,数学一直占据着非常大的分量,但是回忆过去可以发现,我们把大量的时间都花在反复解题、不断运算上,计算方法、运算技巧、笔算能力以及数学公式的记忆仿佛成了我们学习数学的全部。这些记忆和技巧没几年就忘掉了,...

    Jackwoo 评论0 收藏0
  • SICP Python 描述 1.2 编程元素

    摘要:程序用于在编程社群的成员之间交流这些想法。在编程中,我们处理两种元素函数和数据。在中,我们可以使用赋值语句来建立新的绑定,它包含左边的名称和右边的值。例如,它并不能处理赋值语句。这些图解的必要部分是函数的表示。 1.2 编程元素 来源:1.2 The Elements of Programming 译者:飞龙 协议:CC BY-NC-SA 4.0 编程语言是操作计算机来执行任务...

    CoorChice 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<