I am trying to solve a system of nonlinear euqations in a sporting league. I have 20 teams, and 4 variables for each team (i):
- a_i = avg_attempt_rate
- b_i = avg_give_up_attempt_rate
- c_i = avg_success_rate
- d_i = avg_give_up_success_rate
If team j was to play team k then team j's block rate would be: (a_j + b_k)*(c_j + d_k)
If team j was to play team n then team j's block rate would be: (a_j + b_n)*(c_j + d_n)
and so on... for all 760 combinations
With real numbers:
team j
- average block attempt rate of 0.1
- average block success rate of 0.5
team k (worse than team j so team j will perform better)
- average give up block attempt rate is 0.06
- average give up block attempt rate is 0.02
when team j plays team k its block rate will be (0.1 + 0.06)*(0.5 + 0.02)....
I have the block rate values for all 760 combinations and need to estimate a_i, b_i, c_i and d_i for each team.
the rates are bound between 0 and 1.
Is it possible to solve this set of nonlinear equations? If so, what is the best way?
Thanks in advance for your help.
First of all, Welcome to the site !
The problem is the same for linear and nonlinear overdetermind systems of equations. Each of them write $$f_i(x_1,x_2,\cdots,x_n)=0 \qquad \text{for} \quad i=1,2,\cdots,m\qquad \text{with} \quad m>n$$
Consider that this is an optimization problem and define a norm $$\Phi(x_1,x_2,\cdots,x_n)=\sum_{i=1}^m \Big[f_i(x_1,x_2,\cdots,x_n) \Big]^2$$ and you look for the minimum of it. At this condition, you must have $$\frac{\partial \Phi(x_1,x_2,\cdots,x_n)}{\partial x_1}=\frac{\partial \Phi(x_1,x_2,\cdots,x_n)}{\partial x_2}=\cdots=\frac{\partial \Phi(x_1,x_2,\cdots,x_n)}{\partial x_n}=0$$ which means that you face now a square system of $n$ equations.
If the equations are linear, the new system is linear too; so no problem and the solution is unique.
If the equations are nonlinear, the new system is nonlinear too. Here the problem is that we cannot guarantee that there is only one minimum and one of the key problems is the quality of the initial estimates you need to provide to the solver.