python判断两个代数式本质上是不是一样?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python判断两个代数式本质上是不是一样?相关的知识,希望对你有一定的参考价值。

python判断两个代数式本质上是否一样 代码

代数式不一定是可计算的,表达式是可计算的,两者含义不同。

不能直接求值的原因:

1:代数式中的代数量是未知的;

2:代数式中的运算符不一定有对应的python运算;

3:即使能求值并且结果相等,也不代表本质相同,(例5+1、2*3、36**0.5)

因此,需要更复杂的方法来实现该功能。


python对象都可以通过重构__eq__方法来重新定义两个对象之间的比较规则。

定义【代数式(AlgebraicExpression)】类,重新实现它的__eq__方法:比较self和待比较代数式的等价规范形式(standardization)是否一致。

class AlgebraicExpression(object):

....def __eq__(self, other):

........assert isinstance(other, AlgebraicExpression)

........return str(self.standardization)==str(other.standardization)


等价规范形式

将运算符按最高优先级拆分为多个子运算式与运算符,子运算式做同样的处理,直至子运算式不包含运算符;

运算率和等价规则决定代数式有等价形式:

1:按运算率将可解耦的括号全部解耦;

2:并在同优先级中对算符排序;

3:按等价规则对多目运算中算子排序;

4:然后按顺序重新组装。

参考技术A Python判断两个代数式本质上是否是一样,我认为这个判断两个代数式本质上应该是一样的 参考技术B equals判断的是值是否相同,==判断的是引用是否相同。内容相同的两个字符串其引用可能是不同的。 今天在用Python时,也刚好遇到判断字符串是否相等的问题,纠结了一下,想知道Python中字符串是否有equals方法,但是并没有找到。 参考技术C 1.说明 可以使用 == 运算符判断两个集合是否相等(包含相同的元素),即判断集合 a 和集合 b 中的元素是否相同. 2.语法 set_a == set_b 3.参数 set_a:集合 a. set_b:集合 b. 4.返回值 返回布尔值,如果集合 a 和集合 b 中的元素相同,则返回 True,否则返回 False. 5.实例 # 创建集合a = "刀", "枪", "剑", "戟"b = "戟", "剑", "枪", "刀"c = "斧", "钺", "钩", "叉"# 判断两个集合是否相等print("a==b返回:", a == b) # 返回Trueprint("a==c返回:", a == c) # 返回Falseprint("a
m.yisu.com

以上是关于python判断两个代数式本质上是不是一样?的主要内容,如果未能解决你的问题,请参考以下文章

抽象轻松web

线性代数本质4:矩阵乘法

关系代数

线性代数的本质-07-点积与对偶性

python-判断两个序列的成员是否一样

线性代数的本质-03-矩阵与线性变换