Мне нужно решить следующее неприводимое трансцендентное уравнение. Я сделал следующее:
Data = Import["FILE NAME", "Table"]; (*get actual data from a file*)
l = Range[31, 249];
(*generate G,t pairs for the equation*)
t = Data[[l, 1]]*10^-3; (*time in ms, convert to s*)
G = Data[[l, 2]];
k = (4*Pi*1.33/633*^-9)*Sin[10 Degree/2];
sb = 0.25*^-3;(*beam size in m*)
\[Omega] = 2;(*speed of rotation in rad/s*)
s = \[Omega]/(2 Degree);
\[Sigma] = Table[0, {Length[l]}]; (*data holder, to be filled in for loop*)
For[j = 1, j <= Length[l], j++,
y = sig /.NSolve[{G[[j]] == Exp[-((k*s*sb*t[[j]])^2)/(2*(k*sb*sig*t[[j]])^2 + 1)]*1/Sqrt[2*(k*sb*sig*t[[j]])^2 + 1]), sig >= 0}, sig, Reals][[1]];
\[Sigma][[j]] = {t[[j]]*10^3, G[[j]], y};
];
\[Sigma]
Все работает до фактической попытки найти значения для sig. Затем я начинаю получать сообщения:
Solve::ratnz: Solve was unable to solve the system with inexact coefficients. The answer was obtained by solving a corresponding exact system and numericizing the result.
что приводит к тому, что результаты становятся очень неточными. Например, в какой-то момент я случайно поставил 2 в числителе экспоненты, и это не повлияло на выходные результаты. Это означает, что эта процедура Ratnz сильно приближает решение к точке почти нечувствительности к фактическим входным данным. Как видно из следующего примера данных, данные не настолько отличаются по точкам, чтобы допустима нечувствительность к коэффициенту 2.
Example Data (will be read in from text file during import):
t(ms) G(t)
1.00000E-003 8.09982E-001
1.20000E-003 8.05885E-001
1.40000E-003 8.02226E-001
Как мне заставить mathematica решать имеющуюся систему, а не очень плохое ее приближение?