Чтобы развернуть вопрос Майкла, код, в том виде, в котором он существует в настоящее время, не выдает числовых значений, поскольку значения A и B не были установлены.
Если для A и B выбраны значения, FindRoot больше не возвращает символический ответ.
g[r_] := (A^r - 1)/(A^r - B^r);
A = .4; B = .5;
func[r_] := Piecewise[{{g[r], r < -.01}, {g[r], r > .01}}];
roots = Table[0, {10}];
q = Table[pp, {pp, .01, 0.1, 0.01}];
Do[roots[[i]] = FindRoot[func[r] == q[[i]], {r, 0.9}];, {i, 1, 10}];
Print[r /. roots];
{-201.021,-198.983,-196.97,-194.98,-186.987,-178.398,-170.282,-162.61,-155.352,-148.484}
Для вашего второго блока кода я предполагаю, что ваша проблема вызвана r2 [[i]] в:
Do[ Pa2[[i]]=funcOC[r2[[i]]], {i,1,10} ];
Я думаю, вы имели в виду:
Do[ Pa2[[i]]=funcOC[i], {i,1,10} ];
Вы хотели использовать корни, которые вы нашли в первом блоке кода? Если это так, вам нужно заменить.
r2=r;
с
r2=r /. roots;