Я не подробно изучил вашу математику, но вы должны знать, что мелкие ошибки легко накачиваются всеми этими степенями и показателями.Вы должны попытаться заменить все переменные var
на var + e(var)
(на бумаге, да) и получить выражение для общей ошибки - без упрощения между этапами, потому что именно отсюда и возникает ошибка!
Этоэто также очень распространенная проблема в вычислительной гидродинамике, где вы можете наблюдать такие вещи, как «числовая диффузия», если ваша сетка не выровнена должным образом с моделируемым потоком.прийти и переписать уравнения, где это возможно, чтобы минимизировать числовую ошибку.
edit: уточнить пример
Скажем, у вас есть некоторая переменная x
и выражениеy=exp(x)
.Ошибка в x
обозначается e(x)
и является небольшой по сравнению с x
(скажем, e(x)/x < 0.0001
, но обратите внимание, что это зависит от используемого вами типа).Тогда вы могли бы сказать, что
e(y) = y(x+e(x)) - y(x)
e(y) ~ dy/dx * e(x) (for small e(x))
e(y) = exp(x) * e(x)
Так что увеличение абсолютной погрешности составляет exp(x)
, что означает, что около x=0
действительно нет проблем (не удивительно, поскольку в этот момент наклон exp(x)
равно значению x
), но для больших x
вы заметите это.
Относительная ошибка тогда будет
e(y)/y = e(y)/exp(x) = e(x)
, тогда как относительная ошибка в x
было
e(x)/x
, поэтому вы добавили коэффициент x
к относительной ошибке.