Python Sage中的常量?变量在使用后被消灭

时间:2011-08-29 05:34:31

标签: python sage

昨天我开始搞乱开源计算机代数系统Sage。 Sage使用Python将几个开源软件包绑定到一个编码接口中。

不幸的是,不仅Sage是新的,Python也是如此。我今天花了很多时间来学习两者。我能说什么?曾经是一个书呆子,总是一个书呆子...

当我开始研究多维度的矢量系统时,问题出现了。

如下所示,我试图使用var('w')来封装变量x,y,z。这将允许我说f(w)而不是f(x,y,z)。当你有多个方程时真的很方便。问题是我第一次使用w后,它会重置为'w'。

不断将w重新分配给“x,y,z”是否有任何方法可以设置常量?根据Python网页上的规范,它看起来不像它。

作为PS,我对这个问题的解决方案让我觉得有些笨拙。我不是学生,而是40多岁的书呆子,对今天的技术感到惊讶。所以我没有TA或教授或同学请求帮助。

  

我的解决方案......

1)定义另一个变量:
    V = VAR( 'V')
    V =(X,Y,Z)

2)每次运行函数后 - f(x),g(x),h(x) - 重新赋值     瓦特= V

谢谢, 利奥

  

** * 代码 * < / EM> ** *

x=var('x')
y=var('y')
z=var('z')
w=var('w')

w=(x,y,z); print(w) #prints out 'x,y,z'

f(w) = ((2*x - y + 0*z)==0); print(w) #prints out 'w'
g(w) = ((-x + 2*y - z)==-1); print(w) #prints out 'w'
h(w) = ((0*x - 3*y + 4*z)==4); print(w) #prints out 'w'

solve((f(w), g(w), h(w)), w)) #returns errors since it needs to be 
#solved in x,y,z, not w

1 个答案:

答案 0 :(得分:1)

w = var('w'):w是一个名为'w'的符号对象。

w =(x,y,z):w是三个符号对象的元组。要使用此元组定义表达式函数,可以使用“*”来解包元组:当w ==(x,y,z)时,f(* w)与f(x,y,z)相同。

因此,以下代码将正确解决():

x=var('x')
y=var('y')
z=var('z')

w=(x,y,z)

f(*w) = (2*x - y + 0*z)==0
g(*w) = (-x + 2*y - z)==-1
h(*w) = (0*x - 3*y + 4*z)==4

solve((f,g,h), w)