こちらの問題がある。
まず、お絵描きしてみる。
#%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import math
T = 30
a = [0] * T
a[0] = 0.5
for i in range(T-1):
a[i+1] = 1/(4*a[i]-1)
x = [i for i in range(T)]
# figureを生成する
fig = plt.figure()
# axをfigureに設定する
ax = fig.add_subplot(1, 1, 1)
# axesに散布図を設定する
ax.scatter(x, a , s=10, c='b')
a2 = [0] * T
a2[0] = 0.3
for i in range(T-1):
a2[i+1] = 1/(4*a2[i]-1)
ax.scatter(x, a2 , s=10, c='g')
a3 = [0] * T
a3[0] = -0.1
for i in range(T-1):
a3[i+1] = 1/(4*a3[i]-1)
ax.scatter(x, a3 , s=10, c='purple')
a4 = [0] * T
a4[0] = -1
for i in range(T-1):
a4[i+1] = 1/(4*a4[i]-1)
ax.scatter(x, a4 , s=10, c='orange')
a5 = [0] * T
a5[0] = 1
for i in range(T-1):
a5[i+1] = 1/(4*a5[i]-1)
ax.scatter(x, a5 , s=10, c='red')
# 表示する
plt.show()
収束しそうだ。
実際、特性方程式を立てて、分数にして、いろいろと計算したら、一般解が求まる。
それはそうとして、
こういった数列は、自然数に対して定義されている。
これを実数や複素数に拡張すると、どうなるか。
(つまり、1.5個目の数、とか、1+2j個目の数、とか)
一般解はnを含む。これに単純に代入してやれば、求まりそうだ。
フィボナッチ数列を考える。
お絵描きを始めましょうか。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import math
# 円周率の定義
pi = np.pi
e = math.e
phi = (1+5**0.5)/2
import cmath
def powc(a,b):
if a == 0:
if b.real == 0 and b.imag == 0:
return 1
else:
return 0
else:
g =1
if a < 0:
g = cmath.exp(pi/2*1j*(b))
a = -a
re = b.real
im = b.imag
t = a**re
edb = math.log(a**im, e)
print(edb)
y = cmath.exp(edb*1j)
ans = t*y*g
return ans
def fib(n):
ans = (powc(phi,n+0j) - powc(1- phi,n+0j))/5**0.5
return ans
fib(6+3j)