Решение связанного нелинейного уравнения в Matlab без масштабирования
Я пытаюсь решить два связанных алгебраического уравнения
f1(x,y) = 0;
f2(x,y) = 0;
типичный порядок величины функций f1
а также f2
являются 10^42
, Я запустил код Matlab, но он сказал, что решение не найдено. Я подумал, что проблема в том, что масштабы очень высоки. Пересчет всего уравнения довольно утомителен. Я хочу остановить функцию поиска корня (fsolve)
когда delta(f)/f < epsilon(say 1e-6)
, Как это условие может быть реализовано в Matlab? Любое альтернативное решение проблемы масштабирования также приветствуется.
1 ответ
RTFM (конечно, дружелюбно), https://de.mathworks.com/help/optim/ug/fsolve.html
Опции, которые вы можете предоставить солверу, содержат параметр TolFun
со значением по умолчанию 1e-6
это абсолютный допуск для значения функции. По-видимому, здесь нет положения относительно относительного допуска, поэтому вам нужно вычислить шкалу значений функции из начальной точки или более общие соображения, чтобы установить TolFun = scale * epsilon
,