I have a problem when I'm trying to use NMinimize in my RecurrenceTable, like in this example :
int[a_, gamma_] = Simplify[Integrate[(-a^5 + a)/(gamma - a^3), a]];
moyenne = {1.0702438969345758`, 1.0990804105051308`};
alphaa[A1_, A0_, gammatheta_] = A1/(A0*gammatheta);
alphab[A1_, A0_, B0_, gammatheta_,
gamma_] = (gamma*(1 - A0^3/B0^3) +
alphaa[A1, A0, gammatheta]^3*(A0^3/B0^3))^(1/3);
gamma[gammar_, gammatheta_] = gammar/gammatheta;
B1[A1_, A0_, B0_, gammatheta_,
gammar_] = (alphab[A1, A0, B0, gammatheta,
gamma[gammar, gammatheta]]*B0)/(alphaa[A1, A0, gammatheta]*A0)*
A1;
Relation[gammatheta_, gammar_, A1_, A0_, B0_] =
Simplify[int[
alphab[A1, A0, B0, gammatheta, gamma[gammar, gammatheta]],
gamma[gammar, gammatheta]] -
int[alphaa[A1, A0, gammatheta], gamma[gammar, gammatheta]]];
recurrencetableA1B1 =
RecurrenceTable[{A1r[1] == 50, B1r[1] == 70,
A1r[n + 1] == A1 /.
NMinimize[{Re[
Relation[moyenne[[1]], moyenne[[2]], A1, A1r[n],
B1r[n]]]^2 +
Im[Relation[moyenne[[1]], moyenne[[2]], A1, A1r[n],
B1r[n]]]^2, A1 > 50}, A1][[2]],
B1r[n + 1] ==
B1[( A1 /.
NMinimize[{Re[
Relation[moyenne[[1]], moyenne[[2]], A1, A1r[n],
B1r[n]]]^2 +
Im[Relation[moyenne[[1]], moyenne[[2]], A1, A1r[n],
B1r[n]]]^2, A1 > 50}, A1][[2]]), A1r[n], B1r[n],
moyenne[[1]], moyenne[[2]]] }, {A1r, B1r}, {n, 1, 30}]
The error reads :
NMinimize::nnum: The function value 0.0272898 Im[-(206882./A1r[n]^3)+2 Sqrt[3] ArcTan[Power[<<2>>] Plus[<<2>>]]-2 Sqrt[3] ArcTan[Power[<<2>>] Plus[<<2>>]]+<<9>>+Log[1.01788 +0.942684 Power[<<2>>]+0.873041 Power[<<2>>]]]^2+0.0272898 Re[-(206882./A1r[n]^3)+<<12>>+Log[1.01788 +0.942684 Power[<<2>>]+0.873041 Power[<<2>>]]]^2 is not a number at {A1} = {50.0915}.
I assume this problem appears because that NMinimize does not "read" the value of A1r[1] and B1r[1]. How can I solve this problem please ?
NArgMin[...]
instead ofA1 /. NMinimize[...][[2]]
, this also issues error messages, but at least gives the answer. $\endgroup$ – Alx Dec 10 '19 at 3:35