Hello,
I am trying to use algebra_solver, but couldn’t get the code right. Any help on the issue is greatly appreciated!
Here is my function and then try to solve it.
vector algebra_system(vector effpi,vector theta, real[] x_r, int[] x_i){
vector[1] rslt;
rslt[1]=(theta[1]+theta[2]/effpi[1]+theta[3]/effpi[1]^2) - (theta[4]+theta[5]*effpi[1]);
return rslt;
}
real desrfunc (real effpi,
real toxpi,
vector param,
real[] x_r,
int[] x_i){
real a = param[1];
real b = param[2];
real c = param[3];
real rhop;
real rhoq;
real desr;
vector[1] effpi0;
real toxpi0;
vector[1] effpi_guess=[0.5]';
vector[5] param_ex=append_row(append_row(param, -toxpi/(effpi-1)), toxpi/(effpi-1));
effpi0 = algebra_solver(algebra_system, effpi_guess, param_ex, x_r, x_i);
toxpi0 = a + b/effpi0[1] + c/effpi0[1]^2;
rhop=sqrt(effpi0[1]^2+toxpi0^2);
rhoq=sqrt(effpi^2+toxpi^2);
desr =(rhop>0)? rhoq/rhop-1: -500;
return desr;
}