Python:递归函数,用于计算两个向量之差的和
我有一个矩阵Python:递归函数,用于计算两个向量之差的和,python,recursion,matrix,vector,sum,Python,Recursion,Matrix,Vector,Sum,我有一个矩阵M和初始向量v0。我想写一个递归函数来执行M*v{I},这样我就可以找到v{I}和v{I+1},这样向量差的所有元素之和都小于0.45 例如: 将numpy导入为np M=np.数组([[0,0,0,0.5,0,0],[1,0,0,0,0,0,0.5,0],[0,1,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0]) M=M.aType(浮动) v0=np.数组([1/6,1/6,1/6,1/6,1/6,1/6]) v1=np.点(M,v0) v2
M
和初始向量v0
。我想写一个递归函数来执行M*v{I}
,这样我就可以找到v{I}
和v{I+1}
,这样向量差的所有元素之和都小于0.45
例如:
将numpy导入为np
M=np.数组([[0,0,0,0.5,0,0],[1,0,0,0,0,0,0.5,0],[0,1,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0])
M=M.aType(浮动)
v0=np.数组([1/6,1/6,1/6,1/6,1/6,1/6])
v1=np.点(M,v0)
v2=np.点(M,v1)
v3=np.点(M,v2)
v4=np.点(M,v3)
v5=np.点(M,v4)
x=np.绝对值(v4-v5)
打印(总和(x))
这里,我想要的输出是sum(x)=0.42
的值以及向量v4
和v5
。到目前为止我已经试过了,但还是卡住了
def diff_sum(M,v):
v1=np.点(M,v)
x=np.绝对值(v-v1)
x=总和(x)
如果x<0.45:
返回(x、v、v1)
其他:
微分和(M,np.dot(M,v1))
返回(x、v、v1)
我不确定为什么需要递归,但这可以通过循环轻松完成:
def diff_sum(M,vi1):
er=1
while (er>0.45):
vi=vi1.copy()
vi1=M @ vi
er=np.abs(vi1-vi).sum()
return vi,vi1,er
vn1,vn,er=diff_sum(M,v0)
用numpy递归?这就像粉笔和奶酪的混合,请不要:(看起来你想要的是一个循环,而不是一个递归函数。)