«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу выполнить подгонку экспоненциальной и логарифмической кривой в Python?

Как я могу выполнить подгонку экспоненциальной и логарифмической кривой в Python?

Опубликовано 8 ноября 2024 г.
Просматривать:506

How can I perform exponential and logarithmic curve fitting in Python?

Подбор кривой: экспоненциальный и логарифмический подходы в Python

Хотя подгонка полиномиальной кривой легко доступна в Python с помощью функции Polyfit(), в этом руководстве рассматриваются методы построения экспоненциальной и логарифмической кривой. подгонка.

Логарифмическая подгонка

Чтобы подогнать строку вида y = A B log x, просто выполните полиномиальную аппроксимацию y по log x.

import numpy as np

x = np.array([1, 7, 20, 50, 79])
y = np.array([10, 19, 30, 35, 51])

coeffs = np.polyfit(np.log(x), y, 1)
print("y ≈", coeffs[1], "log(x)  ", coeffs[0])  # y ≈ 8.46 log(x)   6.62

Экспоненциальная аппроксимация

Чтобы соответствовать строку вида y = Ae^{Bx}, возьмите логарифм обеих частей и выполните полиномиальную аппроксимацию log y по x.

x = np.array([10, 19, 30, 35, 51])
y = np.array([1, 7, 20, 50, 79])

coeffs = np.polyfit(x, np.log(y), 1)
print("y ≈ exp(", coeffs[1], ") * exp(", coeffs[0], " * x) = 0.670 * exp(0.105 * x)")

Для большей точности , используйте веса, пропорциональные y, используя ключевое слово w в функции polyfit().

coeffs = np.polyfit(x, np.log(y), 1, w=np.sqrt(y))
print("y ≈ exp(", coeffs[1], ") * exp(", coeffs[0], " * x) = 4.12 * exp(0.0601 * x)")

Обратите внимание, что большинство Приложения для электронных таблиц и научных калькуляторов используют невзвешенную формулу для экспоненциальной регрессии, поэтому избегайте весов, если желательна совместимость. преобразования.

из scipy.optimize import Curve_fit # Логарифмическая аппроксимация coeffs, _ = Curve_fit(lambda t, a, b: a b * np.log(t), x, y) print("y ≈", coeffs[1], "log(x) ", coeffs[0]) # y ≈ 6,62 8,46 log(x) # Экспоненциальная аппроксимация с первоначальным предположением coeffs, _ = Curve_fit(lambda t, a, b: a * np.exp(b * t), x, y, p0=(4, 0,1)) print("y ≈", coeffs[0], "exp(", coeffs[1], " * x) = 4,88 exp(0,0553 x)")

Предлагая начальное предположение, Curve_fit может достичь желаемый локальный минимум для экспоненциальной аппроксимации, что приводит к более точной аппроксимации, чем преобразованный метод полифита.
            
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3