📜  如何在Python进行指数和对数曲线拟合?

📅  最后修改于: 2022-05-13 01:54:52.763000             🧑  作者: Mango

如何在Python进行指数和对数曲线拟合?

在本文中,我们将学习如何在Python进行指数和对数曲线拟合。首先我们想到的问题是什么是曲线拟合?

曲线拟合是构建曲线或数学函数,它最适合一系列数据点,可能受到约束。

  • 对数曲线拟合:对数曲线是对数函数的绘图。
  • 指数曲线拟合:指数曲线是指数函数。

让我们考虑两个方程

我们将在上面的方程上拟合两条曲线,并找到最适合它的曲线。对于Python的曲线拟合,我们将使用一些库函数

  • 麻木的
  • matplotlib.pyplot

我们还将使用 numpy.polyfit() 方法来拟合曲线。此函数采用三个参数 x、y,多项式 degree(n) 返回第 n 次多项式的系数。

对数曲线拟合

要进行对数曲线拟合,我们必须遵循下面将在实现中解释的一些步骤。

导入库

Python
import numpy as np
  
# It is for ploting the curve
import matplotlib.pyplot as plt


Python3
# Points on X-axis
x_data = np.array([11, 23, 31, 43, 51]) 
  
# Points on Y-axis
y_data = np.array([2, 4, 6, 8, 10])     
  
print(x_data)
print(y_data)
  
# Taking log of x values
xlog_data = np.log(x_data)             
  
print(xlog_data)


Python3
# Given log values of x , y as input
curve = np.polyfit(log_x_data, y_data, 1)
  
print(curve)


Python3
y = 5.04 * log_x_data - 10.79  
  
print(y)


Python3
# Blue color
plt.plot(log_x_data, y_data)
  
# Best fit in orange
plt.plot(log_x_data, y)


Python3
x_data = np.array([11, 19, 31, 39, 51])
print(x_data)
  
y_data = np.array([5, 8, 32, 84, 110])
print(y_data)


Python3
ylog_data = np.log(y_data)
print(ylog_data)
  
curve_fit = np.polyfit(x_data, log_y_data, 1)
print(curve_fit)


Python3
y = np.exp(0.69) * np.exp(0.085*x_data)
  
print(y)


Python3
# Blue 
plt.plot(x_data, y_data)
  
# best fit in orange
plt.plot(x_data, y)


创建/加载数据

由于我们已经导入了所需的库,我们必须创建两个名为 x 和 y 的数组。在创建这两个数组之后,我们必须在 numpy.log() 方法的帮助下获取 x 和 y 中值的日志。

蟒蛇3



# Points on X-axis
x_data = np.array([11, 23, 31, 43, 51]) 
  
# Points on Y-axis
y_data = np.array([2, 4, 6, 8, 10])     
  
print(x_data)
print(y_data)
  
# Taking log of x values
xlog_data = np.log(x_data)             
  
print(xlog_data)

输出:

数据拟合

之后,获得 x 和 y 数组的对数值,在 numpy.polyfit() 的帮助下,我们找到方程的系数。由于我们采用了线性方程,因此在 polyfit 方法中,我们将在度参数中传递 1。

蟒蛇3

# Given log values of x , y as input
curve = np.polyfit(log_x_data, y_data, 1)
  
print(curve)

输出:

获取输出

所以我们得到的系数为 [5.04, -10.79] ,我们可以得到曲线的方程,即 (y= a*log(x)+y, 其中 a,b 是系数)

y = 5.04*log(x) - 10.79

蟒蛇3

y = 5.04 * log_x_data - 10.79  
  
print(y)

输出:



绘制结果

现在,让我们绘制图表,一个是 xlog_data、ylog_data,另一个是我们获得的 xlog_data 和 y 方程。为了在Python绘制图形,我们将借助 Matplotlib.pyplot.plot()函数。

蟒蛇3

# Blue color
plt.plot(log_x_data, y_data)
  
# Best fit in orange
plt.plot(log_x_data, y)

输出:

上图中黄线代表原x和y坐标图,蓝线是我们计算得到的坐标图,是最合适的。

指数曲线拟合

我们将重复与上述相同的过程,但唯一的区别是对数函数被指数函数代替。

首先,让我们创建数据点

蟒蛇3



x_data = np.array([11, 19, 31, 39, 51])
print(x_data)
  
y_data = np.array([5, 8, 32, 84, 110])
print(y_data)

输出:

Equation: y = e(ax)*e(b)

在这个方程中,我们将绘制图形,a、b 是我们可以使用 numpy.polyfit() 方法获得的系数。现在让我们找出度数为指数函数的系数。

蟒蛇3

ylog_data = np.log(y_data)
print(ylog_data)
  
curve_fit = np.polyfit(x_data, log_y_data, 1)
print(curve_fit)

输出:

因此,a = 0.69 和 b = 0.085 这些是我们可以得到曲线方程的系数,即 (y = e (ax) *e (b),其中 a, b 是系数)

y = e(0.69x)*e(0.085)  final equation. 

蟒蛇3

y = np.exp(0.69) * np.exp(0.085*x_data)
  
print(y)

输出:



现在,让我们借助 Matplotlib.pyplot.plot()函数绘制图形。

蟒蛇3

# Blue 
plt.plot(x_data, y_data)
  
# best fit in orange
plt.plot(x_data, y)

输出:

上图中蓝线代表原x和y坐标图,橙色线是我们计算得到的坐标图,是最合适的。

因此,这是在 NumPy 和 matplotlib 的帮助下在Python中拟合指数和对数曲线的过程。