我在Martlab中有一个使用Lanczos算法运行的程序,正在尝试将其转换为Python。我有以下问题:
在Matlab中,我有以下循环:
beta(2)=0;
for j=2:m+2
w = A*V(:,j) - beta(j)*V(:,j-1);
alpha(j) = w'*V(:,j);
w = w - alpha(j)*V(:,j);
beta(j+1) = norm(w,2);
V(:,j+1) = w/beta(j+1);
end
我已经在Python中实现了以下方式:
beta(2)=0
for j in range [2: m+2]:
w=A*V[:,j] - beta(j)*V[:,j-1]
alpha(j)=w.transpose()*V[:,j]
w = w - alpha(j)*V[:,j]
beta(j+1)=norm(w,2)
V[:,j+1]= w/beta(j+1)
问题是我不断收到错误消息SyntaxError:“无法分配给函数调用”。我不断收到此错误消息的可能原因是什么?这不是缩进问题。
谢谢!
嗯,这不是将值分配给数组的正确方法。在Matlab / Octave中,您可以通过执行arr(2)来访问数组元素,但这在python中并不成立。在Python中,如果要访问数组arr(基于0的索引)中第二个索引的元素,则编写arr [2]。变量名后的括号表示调用或定义函数。 this(2)表示调用函数this()并传递2作为参数。我希望这能使您摆脱错误。
另外,请考虑编写一些简单的python程序,这些程序将使您对语法有所了解。