我试图创建一般大小的符号矩阵(S表示LxL),我想将矩阵的每个元素设置为索引的函数,即:< / p>
if(self.slidingViewController.currentTopViewPosition == ECSlidingViewControllerTopViewPositionCentered){
[self.slidingViewController anchorTopViewToRightAnimated:YES];
}
else{
self.slidingViewController.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"someID"];
[self.slidingViewController resetTopViewAnimated:YES];
}
我试着用同情的方式跑步,我得到了
S[m,n] = (u+i/2*(n-m))/(u-i/2*(n-m)) * (u+i/2*(n+m))/(u-i/2*(n+m))
通过Stack Exchange搜索我从去年发现了这个问题: Sympy - Dense Display of Matrices of Arbitrary Size 这是没有答案的,并不完全相同。这是同一个问题,还是我只是想在同情(或一般的电脑)中做一件不可能的事情?
答案 0 :(得分:0)
这当然可以做到。 docs提供了一些示例。这是一个
>>> Matrix(3, 4, lambda i,j: 1 - (i+j) % 2)
Matrix([
[1, 0, 1, 0],
[0, 1, 0, 1],
[1, 0, 1, 0]])
答案 1 :(得分:0)
我知道这很古老,但是我遇到了同样的问题,并认为我会分享一个对我有用的解决方案。 您需要使用FunctionMatrix对象,而不是MatrixSymbol。对于背景,我在Python 3.5.2。上使用SymPy 1.6.1。
这是一个例子。使用下面的代码,我设置了一些迭代符号以及要用于矩阵f(i,j)
的元素的函数u
。
# Import SymPy for symbolic computations
import sympy as sym
# Index variables
i,j = sym.symbols('i j', integer=True);
N = sym.Symbol('N', real=True, integer=True, zero=False, positive=True);
# The function we'll use for our matrix
def f(i,j):
# Some arbitrary function...
return i + j;
# Define a function matrix where elements of the matrix
# are a function of the indices
U = sym.FunctionMatrix(N, N, sym.Lambda((i,j), f(i,j)));
现在,让我们通过将所有元素加起来来尝试使用矩阵中的元素...
U_sum = sym.Sum(u[i,j], (i, 0, N), (j, 0, N));
U_sum
>>>
N N
___ ___
╲ ╲
╲ ╲
╱ ╱ (i + j)
╱ ╱
‾‾‾ ‾‾‾
j = 0 i = 0
然后,让我们告诉SymPy计算总和
our_sum.doit().simplify()
>>> N * ( N**2 + 2*N + 1 )