如何在Python中做指数和对数的曲线拟合

如何在Python中做指数和对数的曲线拟合

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

曲线拟合是构建一条曲线或数学函数的过程,它与一系列数据点的拟合度最高,可能受到约束。

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

让我们考虑两个方程

y = alog(x) + b 其中a ,b是该对数方程的系数。

y = e (ax)*e(b) **其中a ,b**是该指数方程的系数。

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

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

语法: numpy.polyfit(x, y, deg)

参数:

x ->x坐标
y ->y坐标
deg -> 拟合多项式的程度。所以,如果deg是1,我们得到线性多项式的系数,如果是2,我们得到二次多项式的系数。

对数曲线拟合

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

导入 Libraries

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

创建/加载数据

由于我们已经导入了所需的库,我们必须创建两个名为x和y的数组。在创建这两个数组后,我们必须在numpy.log()方法的帮助下对x和y的值进行记录。

# 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)

输出:

如何在Python中做指数和对数的曲线拟合?

数据的拟合

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

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

输出:

如何在Python中做指数和对数的曲线拟合?

获取输出

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

y = 5.04*log(x) - 10.79
y = 5.04 * log_x_data - 10.79  
  
print(y)

输出:

如何在Python中做指数和对数的曲线拟合?

Plotting 结果

现在,让我们用xlog_data和ylog_data绘制图表,用xlog_data和我们得到的y方程式绘制另一个图表。为了在python中绘制图形,我们将使用Matplotlib.pyplot.plot()函数的帮助。

语法: matplotlib.pyplot.plot(x-coordinates, y-coordinates)

参数:

x:数据点的横坐标
y:数据点的垂直坐标

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

输出:

如何在Python中做指数和对数的曲线拟合?

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

指数曲线拟合

我们将重复上面的过程,但唯一不同的是对数函数被指数函数取代。

首先,让我们创建数据点

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

输出:

如何在Python中做指数和对数的曲线拟合?

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

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

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

输出:

如何在Python中做指数和对数的曲线拟合?

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

y = e(0.69x)*e(0.085) **** final equation. 
y = np.exp(0.69) * np.exp(0.085*x_data)
  
print(y)

输出:

如何在Python中做指数和对数的曲线拟合?

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

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

输出:

如何在Python中做指数和对数的曲线拟合?

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

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Numpy教程