简单的数学运算如何改变算法

这篇具有很好参考价值的文章主要介绍了简单的数学运算如何改变算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简单的数学运算如何改变算法,可视化,学习

简单的数学运算如何影响事物

当你坐在无人驾驶汽车上行驶时,突然发现前面有一个问题。一个亚马逊快递司机将他们的货车开到了一辆双停的UPS卡车旁边,然后才意识到无法通过。现在他们卡住了,你也卡住了。

简单的数学运算如何改变算法,可视化,学习

街道太窄,无法实现U型转弯,所以你的AI增强汽车开始进行一个三点转弯。首先,汽车沿着一侧的曲线路径前进。

一旦到达那里,它会向另一侧转向,然后向相对侧的人行道后退。然后它再次将方向盘转向第一侧的曲线路径,向前驶离障碍物。

简单的数学运算如何改变算法,可视化,学习

这种通过中间转向的简单几何算法可以帮助你在狭窄的情况下绕过障碍物。 如果你曾经并排停车,你就知道这种前后摆动可以帮助你。

这里有一个关于车辆绕过的空间有多大的有趣数学问题,数学家们已经研究了一个理想化的版本超过100年。

这始于1917年,当时日本数学家柿谷宗一提出了一个听起来有点像我们的交通堵塞的问题。假设你有一根长度为1的无限细的针。

你可以将针旋转180度并将其返回到原始位置的最小区域是多大?这就是柿谷的针问题,数学家们仍然在研究它的各种变体。

让我们看看使柿谷的针问题如此有趣和令人惊讶的简单几何学。

像许多数学问题一样,这个问题涉及到一些简化的假设,使问题不那么现实,但更容易管理。

例如,车辆的长度和宽度在驾驶时很重要,但我们将假定我们的针的长度为1,宽度为零。

这意味着针本身的面积为零,这在解决问题中扮演了重要角色。此外,我们将假设针可以围绕其前端、后端或中间的任何一点旋转,不像车辆一样。

目标是找到允许针旋转180度的最小区域。找到满足一定条件的最小的东西可能会有一定的挑战,但开始的好方法是寻找任何满足这些条件的东西,看看你可以在途中学到什么。

例如,一个简单的答案是只需将针围绕其端点旋转180度,然后将其向上滑动。这将针恢复到其原始位置,但现在它指向相反的方向,正如柿谷的针问题要求的那样。

简单的数学运算如何改变算法,可视化,学习

所需转弯的区域是半圆,半径为1,其面积是

简单的数学运算如何改变算法,可视化,学习

因此,我们找到了一个可行的区域。

通过充分利用我们神奇的数学针绕其任何点旋转的能力,我们可以做得更好。与其围绕其端点旋转,不如围绕其中点旋转。

简单的数学运算如何改变算法,可视化,学习

我们可以从我们的无人驾驶汽车困境中获得灵感,考虑使用类似于针的三点转弯。这实际上非常有效。

使用这种技术扫掠的针产生的区域称为三叶线,它也满足柿谷的要求。

计算它的面积需要更多比我们在这里讨论的基础几何学了解参数曲线的知识有所帮助),但事实证明,这个特定的三叶线的面积——由长度为1的线段扫出的三叶线——恰好是π的1/8。

简单的数学运算如何改变算法,可视化,学习

现在我们找到了一个更小的区域,可以让柿谷的针绕过,你可能会原谅我认为这就是我们所能做到的最好的。

但是当俄罗斯数学家阿布拉姆·贝西科维奇发现你可以无限制地做得更好时,这个针问题发生了巨大的变化。他提出了一种方法,可以消除区域的不必要部分,直到它足够小。

这个过程是复杂的,但基于贝西科维奇的想法的一个策略依赖于两个简单的思想。首先,考虑下面的直角三角形,高度为1,底边为2。

简单的数学运算如何改变算法,可视化,学习

现在,我们暂时忘记完全将针旋转一周,只关注一个简单的事实:如果我们将长度为1的针放在顶点上,这个三角形足够大,可以让针从一侧旋转90度到另一侧。

简单的数学运算如何改变算法,可视化,学习

现在,这里是第一个重要的思想:

我们可以减小区域的面积,同时保持90度的旋转。策略很简单:我们将三角形切成两半,然后将两半推在一起。

简单的数学运算如何改变算法,可视化,学习

这个新图形的面积必须小于原来的,因为三角形的一部分现在重叠在一起。事实上,计算这个图形的面积很容易:它只是边长为1的正方形的四分之三,所以面积是 A = 3/4,这小于我们开始的三角形的面积。

而且,我们仍然可以将针指向以前的所有方向。只有一个问题:原始角度被分成了两部分,所以这些方向现在分成了两个独立的区域。

简单的数学运算如何改变算法,可视化,学习

如果针在新区域的左侧,我们可以将其旋转45度,位于南和东南之间,如果在右侧,我们可以将其旋转45度,位于南和西南之间,但由于两个部分被分开,似乎无法像以前那样旋转90度。

这就是第二个重要的想法。有一种狡猾的方法可以让针从一侧移动到另一侧,而不需要太多的区域。在国际象棋中,你可能知道骑士以L形移动。好吧,我们的针将以N形移动。

简单的数学运算如何改变算法,可视化,学习

这是它的操作方式。首先,针沿着N的一侧滑动。然后,它旋转以指向对角线,然后滑下。然后它再次旋转,完成其行程,滑到N的另一侧。

简单的数学运算如何改变算法,可视化,学习

乍一看,这种N形状的移动可能看起来不起眼,但它确实有很有用的功能。它允许针“跳跃”从一条平行线到另一条线,这将有助于我们将针从一个区域移到另一个区域。

更重要的是,它在不需要太多区域的情况下完成。事实上,你可以根据需要将其要求的面积减小到很小。原因如下。

请记住,我们的针宽度为零。因此,针向前或向后移动的任何线都将具有零面积。这意味着将针沿着N形状向上、向下或沿对角线移动所需的区域将由零面积的部分组成。

这只留下了N形状的拐角处的旋转。

简单的数学运算如何改变算法,可视化,学习

这些移动确实需要区域。你可以看到每个角落有一个小扇形。但这里的狡猾之处在于:你可以通过拉长N来缩小这些区域。

简单的数学运算如何改变算法,可视化,学习

扇形区域的面积公式是 A = θ/360 πr2,其中 θ 是扇形角的度数。

无论N有多高,扇形的半径始终为1:这是针的长度。但随着N的增高,角度会缩小,从而减小扇形区域的面积。

因此,你可以通过拉伸N来使附加的区域面积尽可能小。

请记住,我们能够通过将三角形分成两部分并使它们重叠来减小三角形区域的面积。问题在于,这将90度角分成了两个独立的部分,阻止我们将针旋转90度。

现在,我们可以通过附加适当的N形状来解决这个问题,以确保针可以从一侧到另一侧。

在这个更新后的区域中,针仍然可以像以前一样旋转90度,只是现在分两个阶段进行。首先,针旋转45度并与左侧的垂直边对齐。

接下来,它沿着N的形状移动,以到达另一侧。一旦到达那里,它就可以自由地旋转另外的45度。

简单的数学运算如何改变算法,可视化,学习

这使得针可以旋转90度,并为保持旋转,只需添加区域的旋转副本。

简单的数学运算如何改变算法,可视化,学习

通过添加适当的N形状,针可以从一个三角半岛跳到下一个,一点一点地旋转,就像汽车执行三点转弯一样。

这些细节中还有更多的数学问题,但这两个想法——我们可以不断减小原始区域的面积,通过切割和移动确保我们可以使用任意小的N形状从一个部分到另一个部分

——帮助我们将针在一个不断缩小的区域中移动,最终可以变得很小。

简单的数学运算如何改变算法,可视化,学习

建立这种区域的更标准的方法是从等边三角形开始,使用“Needle树”,这是一种巧妙的方法,可以切割三角形并将碎片拉长和滑动在一起。

结果非常令人惊叹。

最近,数学家在这个古老问题的新变种中取得了进展,这些问题设置在更高维度,并采用不同的大小概念。

我们可能永远不会看到一辆AI驱动的汽车在执行柿谷针对点转弯,但我们仍然可以欣赏它几乎不存在的美和简单。

练习1. 作为柿谷针对点集的最小等边三角形的面积是多少?

查看答案1:

高度为1的等边三角形有足够的空间,可以让位于一个顶点的针从一侧摆动到另一侧。一旦在一侧,它可以滑到另一个顶点,旋转,然后继续旅程,直到回到起始位置,指向相反的方向。

简单的数学运算如何改变算法,可视化,学习

边长为s的等边三角形的面积是。您可以使用三角法或毕达哥拉斯定理来确定高度为1的等边三角形的边长。因此,面积为

简单的数学运算如何改变算法,可视化,学习

练习2. 您可以通过使用“Reuleaux三角形”来比练习1的等边三角形好一点,它是由三个重叠的圆形扇区组成的区域。

最小Reuleaux三角形的面积是多少?

查看答案2:取三个半径为1,角度为60度的圆形扇区,并排列它们,以便它们都与边长为1的等边三角形重叠。

这个区域允许长度为1的针完全旋转。

简单的数学运算如何改变算法,可视化,学习

三个圆形扇区的面积之和计算了三角形重叠的面积三次,因此总面积是三个圆形扇区的面积之和减去两次三角形重叠:

简单的数学运算如何改变算法,可视化,学习文章来源地址https://www.toymoban.com/news/detail-726165.html

到了这里,关于简单的数学运算如何改变算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MATLAB数学建模:数据图形可视化-三维绘图函数

    在 MATLAB 中, 我们可使用函数 surf 和 surfc 绘制三维曲面图. 调用格式如下: 以矩阵 ZZZ 所指定的参数创建一个渐变的三维曲面. 坐标 $x = 1:n, y = 1:m, $ 其中 [m,n]=size(Z)[m,n] = size(Z)[m,n]=size(Z) 以 ZZZ 确定的曲面高度和颜色, 按照 X,YX,YX,Y 形成的格点矩阵, 创建一个渐变的三维曲面. X,

    2024年02月06日
    浏览(57)
  • 基于python开发实现数学中各种经典曲线的可视化

    今天正好有点时间就想着把之前零星时间里面做的一点小东西整合一下梳理出来,本文的核心目的就是想要基于python来开发实现各种有趣的数学曲线的可视化展示。 笛卡尔心形线是一种二维平面曲线,由法国数学家笛卡尔在17世纪提出。它得名于其形状类似于传统的心形符号

    2024年02月10日
    浏览(45)
  • Python数据可视化库Matplotlib绘图学习(二维)&数学建模

    如果没有出现错误,就说明安装成功。 一元二次函数图像: 运行效果: 解释: as: 重命名,将长串的函数库改一个容易书写的名字 range函数: 生成范围内所有的数字 列表推导式: 列表推导式(List Comprehension)是一种简洁地创建新列表的方法,它可以基于现有的列表、集合

    2024年02月07日
    浏览(47)
  • 【数学建模美赛M奖速成系列】数据可视化(二)

    上一篇文章为大家分享了 山脊图和气泡图 的绘图方法与代码,这里学姐为继续为大家分享 百分比堆叠线条图和火山图 ,包含 matlab和python的完整代码 ,需要完整代码的同学看文章最后,另外,如果没有美赛经验想要获奖,欢迎咨询哦~ 百分比堆叠线条图是一种数据可视化工

    2024年01月19日
    浏览(46)
  • Python+Django+Mysql开发简单在线课程推荐系统简单教程 基于用户的协同过滤推荐算法 个性化课程推荐系统 爬虫 可视化数据分析 机器学习 人工智能 个性化推荐 相关推荐

    1、开发工具和使用技术 Python3及以上版本,Django3.6及以上版本,mysql8,navicat数据库管理工具或者sqlyog数据库管理工具,html页面,javascript脚本,jquery脚本,echarts.js可视化图表工具,自定义星星评分功能(使用font-awesome星星图标字体)等。 2、实现功能 前台首页地址:http://1

    2024年02月05日
    浏览(95)
  • 【数学建模美赛M奖速成系列】数据可视化方法(一)

    最近开始更新一个新的系列科研绘图,在同一个竞赛下,大家都近乎相同的解题思路下。之所以能出现一等二等三等奖的区别很大部分都在于结果的可视化,为了能更好地帮助大家进行可视化,近期将专门推出一个可视化板块,推出各种好看实用的可视化图形。 也称为Joy P

    2024年01月16日
    浏览(41)
  • 关于简单的数据可视化

    1. 安装数据可视化必要的openpyxl、pandas,matplotlib等软件包  使用清华源,命令如下: 安装成功后,可以进入下一步。 2. 这里新建一个Excel表格方便说明一下: 运行代码生成如下表格: 3. 对性别进行可视化操作--绘制饼图: 运行结果如下图所示:  4. 对姓名和年龄进行可视

    2024年02月03日
    浏览(40)
  • 可视化 | 数据可视化降维算法梳理

    本篇博客整理资源来源及代码来源,本篇主要是基于该资源,针对各种数据可视化降维算法流程梳理及可视化实践感知。 鸢尾花数据集收集了3种不同品种的鸢尾花(山鸢尾、变色鸢尾和维吉尼亚鸢尾)的特征数据。 每个样本包含了四个特征:萼片长度(sepal length)、萼片宽

    2024年02月06日
    浏览(52)
  • pycharm——python简单的数据可视化

    要使用Python代码进行数据可视化,你可以使用一些可视化库,如matplotlib、seaborn和plotly等。以下是几个示例,展示了如何使用这些库进行常见的数据可视化操作: 绘制折线图:   绘制柱状图: 绘制散点图: 绘制饼图:   这些示例演示了一些基本的图表类型,你可以根据你的

    2024年02月03日
    浏览(33)
  • Pixi + Tone 实现简单midi音频可视化

    Pixi.js 是一个前端图形渲染库,使用精灵技术绘制高性能的图形。 Tone.js是一个前端音频框架,对web audio api进行了封装,可以快速创建音频样本、音频效果、进行音频分析和音频播放。 @tonejs/midi是tonejs的一个插件,可以讲midi文件转化为Tone.js可以解析的json格式。 首先需要讲

    2024年02月16日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包