Looking forward to a proof of convergence in an iterative process.

chen2003qq

New member
Joined
May 6, 2024
Messages
1
[imath]{M_j^{T + 1} = \frac{{\sum\limits_i {(W_{ij}^T \times {D_i})} }}{{{S_j}}}}[/imath]

[math]{W_{ij}^T = \frac{{{S_j}/{{(M_j^T)}^\lambda } \times {f_{ij}}}}{{\sum\limits_j {({S_j}/{{(M_j^T)}^\lambda } \times {f_{ij}})} }}}[/math][math]{M_j^0 = \sum\nolimits_i {\frac{{{D_j} \times {f_{ij}}}}{{\sum\nolimits_r {{S_r} \times {f_{ir}}} }}} }[/math]​


I have the above three equations for calculating the variable M, and it is clear that it is an iterative procedure and the value of M will change as the iteration goes on. All variables, such as S, D and f, are above zero, and T means the iteration number. [imath]\lambda[/imath] is a constant parameter of which the value will be set manually.

My problem is, that I found that when [imath]\lambda[/imath] is smaller than 1, M will finally reach convergence, while when [imath]\lambda[/imath] is bigger than 1, it will not reach convergence. But how to prove that? I made some tries but failed to prove it.

I guess it might involve Jensen's inequality and I could also release a simple code for testing my hypothesis. Here is the code in python:
import numpy as np
M = np.array([10, 10, 3])
D = np.array([60,20])
S = np.array([0.1, 0.2, 0.2])
f = np.array([[0.2, 0.4, 30],[0.2,0.6,0.5]])
Q = (S * f).T / (S * f).sum(1)
M = (D * Q).sum(1) / S
P = ((D * f.T).T / (D * f.T).sum(1)).T
l = 0.8 # l is the lambda
S_cast = S / M**l
Q = (S_cast * f).T / (S_cast * f).sum(1)
M = (D * Q).sum(1) / S
for i in range(10000):
M0 = M
S_cast = S / M**l
Q = (S_cast * f).T / (S_cast * f).sum(1)
M = (D * Q).sum(1) / S
print(M) # end for loop
Could anyone give me some help with that problem?

Thanks very much
 
Top