I have the equation: $$ x_i = a \sum_{j=1}^n A_{ij} k_j x_{j}^b$$ Given a, b, $A_{ij}$ and $K_j$, can I use iterate numerical method to solve $x_i$?
That is given the initial value of $x_j$ on the RHS and solve the $x_i$ on the LHS, then assign the value of $x_i$ on the LHS to the $x_j$ on the RHS, and so on until $|x_i - x_j|$ is very small.
I write the following matlab code
n = 100;
X = ones(n,1);
diff = 1;
tol = 10^(-10);
%b = 3.2;
b = 0.8;
a = 1.2;
A = magic(n)
K = rand(n,1)
while diff>tol
X_new = a*A*(X.^b.*K);
diff = norm(X - X_new);
X = X_new;
end
My questions are:
- Is this method right?
- If it is right, under what condition can I find the solution?
I don't think that you will get much out of this approach for $b>1$. Take the one dimensional problem $x = f(x)= a x^2$, $a>0$. There are two solutions $x=0$ which is a stable fixed point and $x=1/a$ which is an unstable fixed point $f'(1/a)=2>1$. So your method wouldn't converge to the non-trivial solution. I bet that you will encounter the same problem in general for $b>1$.
For $-1<b<1$ it may work, for example it does for $x=f(x)=a x^b$: Fixed point $x_0=a^{1/(1-b)}$ and $f'(x_0)=a b x_0^{b-1}=b$ so the fixed point is stable in that case. I tried a numerical example with some random 3 by 3 matrix and it converged nicely when e.g. $b=0.8$ or $b=-0.8$.