Я не думаю, что вам нужна какая-либо рекурсивная функция. A для l oop может выполнить sh it:
import numpy as np
A = np.array([[.8, .3], [.2, .7]])
u0 = np.array([1,0])
# Initialize list U to store values of u_i
U=[u0]
N=3
for i in range(N):
U.append(A@U[-1])
print(f'u{i+1} value is {U[-1]}')
u1 value is [0.8 0.2]
u2 value is [0.7 0.3]
u3 value is [0.65 0.35]
U
[array([1, 0]),
array([0.8, 0.2]),
array([0.7, 0.3]),
array([0.65, 0.35])]
Я не совсем понимаю, зачем вам нужна функция halfer
. Но если вы все равно это сделаете, вы можете использовать списочное понимание:
a=np.array([1,2,3])
[a/2.0**i for i in range(5)]
[array([1., 2., 3.]),
array([0.5, 1. , 1.5]),
array([0.25, 0.5 , 0.75]),
array([0.125, 0.25 , 0.375]),
array([0.0625, 0.125 , 0.1875])]