Sage 中的任意长度向量

问题描述 投票:0回答:1

我想生成一个由任意值组成的向量,其长度取决于变量。

我所拥有的有效方法:

var('x')

n = 5
A = [var('a{}'.format(i)) for i in range(n)]

for i in range(n):
    assume(0 <= A[i])
assume(x <= max(A))

product_fn = prod(A)
integral = integrate(product_fn, x)
print(integral)

我想要的(不起作用):

var('x')
var('g')

A = [var('a{}'.format(i)) for i in range(g)]

for i in range(len(A)):
    assume(0 <= A[i])

assume(x <= max(A))

product_fn = prod(A)
integral = integrate(product_fn, x)
print(integral)
TypeError: unable to convert g to an integer

我知道这是由于

var
与 python 变量不同,但我是 Sage 新手,不知道如何解决这个问题。

python sage
1个回答
0
投票

这是一个有趣的问题。也就是说,可以创建一系列符号变量,其长度取决于另一个符号变量的值吗?

但是,如果你想使用直接基于 Python 的任何东西(你的列表理解和

range
)来做到这一点,那么它注定会失败。 Python 想知道你创建的列表有多长。您的错误出现是因为
range
函数需要整数才能工作,而
g
这里是一个符号变量,其值可以是给定表达式中的任何其他符号或数字。 (
range(2.11001)
会返回什么?)

从实际角度来看,是否可以延迟创建这些变量,直到您真正知道

g
应该是什么,然后使用您的第一个解决方案? (也许在一个函数中?)

© www.soinside.com 2019 - 2024. All rights reserved.