Наименьших квадратов подходят
У вас есть N показания, fₙ и dₙ с n = 1,…,N , сила и смещение, и у вас нет k , пружинная постоянная ... Идеальное соотношение - k dₙ = fₙ , но мы знаем, что,из-за неопределенности измерений идеальное соотношение никогда точно не проверяется, и мы имеем ошибку, eₙ = k dₙ - fₙ .Лучшее, что мы можем сделать, - это минимизировать некоторую меру ошибки ...
После упоминания, что другой популярный выбор - минимизировать максимум абсолютного значения ошибки, давайте посмотрим, что происходит, когда мы пытаемсяминимизировать сумму квадратов ошибок (или, с другой точки зрения, длину вектора ошибок в N -мерном пространстве):
S = sum((k dₙ - fₙ)²) = sum(k²dₙ² - 2 k dₙ fₙ + fₙ²) =
= k² sum(dₙ²) - 2 k sum(dₙ fₙ) + sum(fₙ²).
В этом выраженииединственная переменная - k , поэтому, чтобы найти минимум, нам просто нужно обнулить производную от S по k .Используя небольшую алгебру
S' = 2 k sum(dₙ²) - 2 sum(dₙ fₙ) =0 ⇒ k = sum(dₙ fₙ)/sum(dₙ²)
(помните, что k - не постоянная пружины, а наша лучшая оценка постоянной пружины).
В Python
f, d = [...], [...]
...
k = sum(dn*fn for dn,fn in zip(d,f) / sum(dn**2 for dn in d)