圆面积计算公式(如何计算圆面积)
我们用机器学习来计算圆的面积。
问任何人圆的面积是多少,他们都会告诉你是r,但是如果你问他们为什么,他们可能不知道。
这是因为圆的面积公式的证明在大多数情况下要么不直观,要么不令人满意,要么充满了积分等高级数学概念。
参考统计学习和机器学习的核心原理,我们可以使用蒙特卡罗模拟和多项式/二次回归来创建基于计算的方法来找到圆面积的公式。
我们用蒙特卡罗方法得到圆的面积,不需要任何数学运算。蒙特卡罗方法用于探索不规则形状的区域,以预测股票市场的情况。这种方法的核心思想是引入随机性,度量来自系统的反馈,甚至在不了解系统原理的情况下获取有效信息。
在应用蒙特卡罗近似圆的面积时,我们生成一些随机坐标点(x1,x2),这两个方向的坐标由负半径向正半径均匀展开绘制。我们把250,000个这样的坐标点放在圆里,正如中心极限定理(或大数定律)所描述的那样。研究中使用的随机样本点越多,结果就越准确。
对于圆中的每个点,我们可以引入落入圆中的点数的计数变量。将所有随机点放入后,圆圈中的点数除以总点数(本研究中为250,000)代表正方形中圆圈面积的分数。正方形的边长是圆半径的两倍,所以正方形的面积是4r,其中R是圆的半径。将之前得到的分数乘以4r,得到圆的面积。通过蒙特卡罗方法,不用数学计算公式就可以非常接近地得到圆的真实面积。
原因很简单,结果几乎完全准确!
我们可以求出任意给定半径r的圆的面积,但此时我们还没有得出圆的公式。为了找到公式,我们需要创建一个二次方程进行建模。方程需要一个半径,并试图输出面积。为了精确地拟合方程,我们必须为每个半径的蒙特卡罗近似区域收集数据。
将numpy作为np导入
从tqdm导入tqdm #只是一个进度条指示器
#为每个近似值生成的随机化点数
数量_点数= 250_000
#列出存储半径及其相应的面积近似值
半径= []
面积= []
#对于1到100之间的500个等距值中的每一个:
对于tqdm(np.linspace(1,100,500))中的半径:
#圆圈中点数的计数器
in_circle = 0
对于范围内的I(num _ points):
#从由切线框界定的均匀分布中生成x和y坐标
xcoor = NP . random . uniform(-半径,半径)
y cor = NP . random . uniform(-半径,半径)
#如果该点在圆内,则向in_circle添加一个
如果xcoor * * 2+ycor * * 2
in_circle += 1
#获取圆内点的分数
area_frac = in_circle/num_points
#附加近似面积和半径
areas.append(area_frac*(4*(半径**2)))
半径.追加(半径)
下一步是编写一个拟合数据的二次项模型(回归模型),y =ax。我们可以通过作图来验证数据是二次项,而不是三阶或四阶多项式。本质上,这是一个基本的机器学习问题,所以回想一些基本术语:
模型参数:模型主动调整,寻找最佳参数。这种情况下,参数为a,如果有n个参数,则模型称为n维。我们应用的基本模型是一维的,用于图像分类的深度神经网络可能有数百万个维度。
损失函数:损失函数是评价当前的模仿情况,希望找到误差程度最低的参数集,从而使损失函数最小。比如某个参数J的损失函数值为技术资源网3,参数K的损失函数值为2,那么就要选择参数K。
平均误差(MAE):我们将应用损失函数/缺陷度量,因为它易于应用和理解。给定模型的当前参数(a)和预测值,平均绝对误差是指预测值和真实值之间的平均差值,较低的MAE意味着模型更适合数据。
学习率:为了优化参数,模型会在特定的“方向”上逐步调整参数。由于我们目前的模型只优化了一个参数(A),我们只需要决定在一维平面上是增加还是减少参数值(任何改变都会导致损失函数降低)。模型在调整过程中的运动称为学习率。较高的学习速度意味着模型可能在短时间内得到一组后果较好的参数,但其精度无法保证,而较低的学习速率可以得到精度较高的非常好的参数。唯一的一点就是需要大量的训练时间。
有了这些变量,我们可以构建一个非常基本和简单的程序来拟合这些数据:
将参数coef(a)初始化为0.1。
对于训练周期中的每次迭代:
为coef提出了两条路径;Coef+lr和coef-lr,其中lr是学习率。
评估coef=coef+lr模型和coef=coef-lr模型的平均绝对误差。
设置coef等于平均绝对误差值较小的coef+lr和coef-lr的数量。
通过对平均绝对误差的反复优化,模型最终将收敛到“最优”coef值(从而将平均绝对误差降低到最大水平)。这一思想是机器学习的核心原理——通过反复的推断、评估和修改,计算机可以“锤炼”出一组最优参数。
coef = 0.1 #初始系数值
learning _ rate = 0.00001 #模型“学习”的速度有多快
迭代= 100000 #我们希望模型‘实践并修正’多少次
对于tqdm中的I(范围(迭代)):#注意- tqdm只是一个进度条
#提出系数的两条路径:
向上系数=系数+学习率#向上移动
向下系数=系数-学习率#或向下移动
#使用参数向上系数和向下系数存储模型的预测
up_pred = []
down_pred = []
#对于先前创建的半径列表中的技术资源网络每个半径值:
对于半径r:
#使用向上系数和向下系数的预测追加模型(a*r^2)
up_pred.append(up_coef*(r**2))
down _ pred . append(down _ coef *(r * * 2))
#找到MAE。两者都转换为NumPy数组,便于操作。
up _ coef _ Mae = NP . ABS(NP . array([up _ pred])-NP . array([areas])。平均值()
down _ coef _ Mae = NP . ABS(NP . array([down _ pred])-NP . array([areas])。平均值()
#如果没有技术资源网络,降低系数会产生更低(更好)的Mae:
如果向下_coef_mae
#将其设置为down_coef
coef = down_coef
#否则(向上移动系数会产生更低(更好)或相等的MAE:
否则:
#将其设置为up_coef
coef = up_coef
当我们观察训练的coef值时,我们可以看到它等于:
print(str(coef)[:5])#系数的前四位数字(小数点算作一个字符)
[输出]: '3.141 '
当然,计算圆面积的公式很容易记住,就是r .我们不用任何复杂的数学方法或微积分中的其他证明就可以找到它的公式,并通过蒙特卡罗模拟和二次回归找到求值的方法。利用这个思想,我们可以找到一种计算圆的面积的方法——当然,我们也可以找到任何图形的面积计算公式——椭圆形、心形、二维龟形——只要参数能说明它的轮廓。
近年来,计算机已经接管并开始解决复杂和高度可变的数学问题,计算圆面积只是一个简单的例子。要想更复杂更有创意,当然是四色定理(每张没有飞地的地图,最多可以染四种颜色,相邻的区域没有两个颜色相同的)。这是计算机先生证明的第一个结果,被数学家普遍接受。
在计算机的帮助下,人类可以探索过去无法尝试进入的极其复杂的数学范畴。