latex三个图并列_数学表达式一键变图,CMU 开发实用工具 Penrose,堪称图解界 LaTeX...

(给算法爱好者加星标,修炼编程内功)

来源:机器之心

「有 A、B 两个集合,A 与 B 相交,C 是 A 与 B 的交集,分别将三个集合命名为 Circles、Diagrams、Venn Diagrams。」给出这样一段描述,你要怎么作图?先画两个相交的圆,然后各自命名?太麻烦了!卡内基梅隆大学开发的一款新工具可以帮你自动生成。

500deed088c3f31418571b81a8264621.png

在有些人眼里,数学公式就是一堆数字和符号,但在另一些人看来,这些数字和符号是可以动的,而且极富美感。为什么会有这种差距?那是因为对于后者来说,这些数字和符号的背后是一幅灵动的图,他们可以根据公式约定的规律进行变换,让人感受到数学规律带来的美感。 但问题在于,不是每个人都有这么好的「脑补」能力,能将数学公式自动想象成图。因此,我们需要借助于工具。 说到工具,你可能想到的是 Adobe Illustrator 等广泛使用的画图工具。没错,这些工具确实好用,但未免有点繁琐,你要不断地花时间手动调整坐标等信息。 有没有简单一点的方法呢?类似于「我来说,你来画」那种。卡内基梅隆大学开发的 Penrose 就是这样一款工具。 你只需要描述一些数学关系或输入数学表达式,该软件就能自动帮你画图,从而将抽象的数学公式转化为直观的图,文章开头给出的只是一个简单的例子。如果你不想用圆来表示上述关系,软件还可以帮你换成箭头表示。

93db4c4e9e5638e8963e7cc48f515dbc.png

不同于普通的图形计算器,你输入的表达式不仅限于基本函数,也可以是来自任何数学领域的复杂关系。 「在设计之初,我们问自己『人们是如何在脑海中将数学公式转换为图像的?』」卡内基梅隆大学计算机科学系博士生 Katherine Ye 表示。「我们系统的秘密武器就是 让人们能够很容易地向电脑『解释』这一转换过程,然后将比较困难的作图过程留给计算机。 」 为了让计算机理解人类所描述的关系,研究团队还 专门开发了一种编程语言

0f67755945797fa09cdfd57e9b1e765f.png

如上图所示,研究者用自己设计的编程语言表述了几个集合的包含关系,即使没学过这种编程语言的同学也能读懂。 根据这些描述可以生成如下图形:

61b5f1e06b2867f1866369f86d4fc5e8.png

这款软件的名字来源于著名数学家、物理学家罗杰 · 彭罗斯(Roger Penrose)。彭罗斯以善用图表交流复杂的数学和科学思想而闻名。 「想象一下,你从图书馆的书架上拿下一本尘封已久的数学书,将上面的内容输入计算机,然后就能得到一本带插图、更容易理解的新书」,这就是该研究团队的愿景,Penrose 只是迈向这个愿景的第一步。研究人员将在 SIGGRAPH 2020 大会上展示 Penrose。不过,Penrose 目前还处在开发阶段,因此暂时无法上手。
  • 论文地址:http://penrose.ink/media/Penrose_SIGGRAPH2020.pdf

  • GitHub 地址:https://github.com/penrose/penrose

这款工具到底有多好用 Penrose 可以把抽象的数学表示转化成一或多个不同风格的视觉表示,研发团队在视频 demo 中展示了对多个不同领域数学表达式的转化效果。 比如,几何领域:

9bcd590a9088b894e9f17c33f3682e8d.gif

线性代数:

5d0b97e33254e26b7b94c696fa0b286a.gif

集合论:

7f19e645db04a666ee0534c6a6f86ce9.gif

函数:

c697792d66904538c9a0ccc26074c040.gif

看了该研究团队给出的 demo 之后,有人称赞道,「这款工具可能变革科学和数学交流。」

ea5f7a2504be97b8713414a442d612f9.png

还有人将其比作「科学图表界的 LaTex」:

011f9cc421085a8497e0a919e6344e59.png

那么,用户要怎么操作才能实现上述效果呢? 界面和基本功能 我们首先来看 Penrose 的界面。 如下图所示,界面顶部是该工具的基本功能和选项。

94382855a411cdba1f56594356714eff.png

  • 左侧第一个下拉框:表示用户试图转化的数学公式所属的领域,上图示例显示的是「集合论」(set theory);

  • 左侧第二个框:可供用户选择想要生成的图样式,上图选择的是维恩图(venn),用户可以点击该下拉框,选择自己喜欢的样式;

3348becaf4e1a32ec5103948190feddc.png

  • 右侧「run」按钮:点击该按钮,等待几秒,即可得到左侧数学内容所对应的图。

只选择数学领域还不够,用户还需要在界面左侧填充数学内容。这里需要注意的是界面第二行的「sub」、「sty」、「dsl」按钮。 Penrose 的语言框架包含三部分:Domain schema(dsl)、Substance program(sub)和 Style program(sty)。 如下图所示,这三部分分别表示:
  • dsl:数学领域中可用的对象、关系和符号;

  • sub:填充数学内容;

  • sty:从数学表述到视觉表示。

60b7aefe3accdde5e4ceba5a19a549cb.png

用户可以逐个点击这些按钮,填充所需的数学内容,选择所需的视觉表示形式。 高阶优化操作 说完了基本功能,我们再来看「优化」操作。
  • 右下方「resample」按钮:如果你对生成的图不满意,点击该按钮,即可重新生成图;

  • 「autostep」按钮:实现图的自动生成,如果你想对图进行调整,只需禁用该功能即可。

b75e4c8c33284282ff501e7f6d146ab6.gif

UI 界面中的优化过程。 Penrose 背后的技术 Penrose 团队设计此工具的目标是:
  • 以用户熟悉的方式表达数学对象;

  • 系统不局限于固定的某些领域;

  • 对相同的数学内容进行不同的可视化展示;

  • 视觉复杂度方面不存在内在限制;

  • 速度快,支持迭代工作流;

  • 为制图所做的努力应该是可泛化和可重用的。

基于以上目标,该团队制定了以下组织原则:
  • 通过从数学对象到视觉图标的映射来规定图;

  • 通过解决相关的约束优化问题来合成图。

工作流程 下图展示了 Penrose 的工作流程:

12a3e28022cbeaeb8cce5b726790825f.png

第一阶段:用编程语言指定数学对象和视觉表示 Penrose 将数学内容与视觉表示分离开来,并使用 language-based specification 来提供该分离所需的抽象。 如前所述,Penrose 为数学内容与视觉表示提供了两种不同的语言:Substance 和 Style。 Substance 借助精确的断言(assertion)来诠释标准的数学表述,参见下图示例:

dd6f5e15103155c78dca6fd12c96ca9e.png

第二阶段:基于优化的合成 Penrose 使用约束优化来合成与给定描述相对应的图。这个方法主要是受到手绘图的启发:将视觉图标放在画布上,不断地调整直到无需再改进。

ce43c81a2298081c80a2a5e3480fcf28.png

此外,Penrose 用户界面提供了插件接口,方便调用 Substance 和 Style 中的外部代码,从而提供系统级的可扩展性。该插件系统可以帮助用户集成可用于解决逻辑或图难题的外部代码。 目前,该项目已发布在 GitHub。不过 Penrose 团队表示,目前版本处于早期阶段,仍在持续开发中。 感兴趣的同学可以访问 Penrose 网站,跟进更多信息。 网站地址:http://www.penrose.ink/

- EOF -

57ba83a0f6fcf675965b256d434f12a0.png

推荐阅读   点击标题可跳转

1、LaTeX 免费神器!再也不怕复杂的公式了

2、数学史上最简单却最复杂的公式

3、少儿图论:八岁小孩眼里的欧拉公式

觉得本文有帮助?请分享给更多人

关注「算法爱好者」加星标,修炼编程内功

fed7b905806a7144a774223dd54a2651.png

好文章,我在看❤️

已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。 本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复。程序主要针对0xc000007b问题设计,可以完美修复该问题。本程序中包含了最新版的DirectX redist(Jun2010),并且全部DX文件都有Microsoft的数字签名,安全放心。 本程序为了应对一般电脑用户的使用,采用了易用的一式设计,只要点击主面上的“检测并修复”按钮,程序就会自动完成校验、检测、下载、修复以及注册的全部功能,无需用户的介入,大大降低了使用难度。在常规修复过程中,程序还会自动检测DirectX加速状态,在异常时给予用户相应提示。 本程序适用于多个操作系统,如Windows XP(需先安装.NET 2.0,详情请参阅“致Windows XP用户.txt”文件)、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 8.1 Update、Windows 10,同时兼容32位操作系统和64位操作系统。本程序会根据系统的不同,自动调整任务模式,无需用户进行设置。 本程序的V4.0版分为标准版、增强版以及在线修复版。所有版本都支持修复DirectX的功能,而增强版则额外支持修复c++的功能。在线修复版功能与标准版相同,但其所需的数据包需要在修复时自动下载。各个版本之间,主程序完全相同,只是其配套使用的数据包不同。因此,标准版和在线修复版可以通过补全扩展包的形式成为增强版。本程序自V3.5版起,自带扩展功能。只要在主面的“工具”菜单下打开“选项”对话框,找到“扩展”标签,点击其中的“开始扩展”按钮即可。扩展过程需要Internet连接,扩展成功后新的数据包可自动生效。扩展用时根据网络速度不同而不同,最快仅需数秒,最慢需要数分钟,烦请耐心等待。如扩展失败,可点击“扩展”面左上角小锁标切换为加密连接,即可很大程度上避免因防火墙或其他原因导致的连接失败。 本程序自V2.0版起采用全新的底层程序架构,使用了异步多线程编程技术,使得检测、下载、修复单独进行,互不干扰,快速如飞。新程序更改了自我校验方式,因此使用新版本的程序时不会再出现自我校验失败的错误;但并非取消自我校验,因此程序安全性与之前版本相同,并未降低。 程序有更新系统c++功能。由于绝大多数软件运行时需要c++的支持,并且c++的异常也会导致0xc000007b错误,因此程序在检测修复的同时,也会根据需要更新系统中的c++组件。自V3.2版本开始使用了全新的c++扩展包,可以大幅提高工业软件修复成功的概率。修复c++的功能仅限于增强版,标准版及在线修复版在系统c++异常时(非丢失时)会提示用户使用增强版进行修复。除常规修复外,新版程序还支持C++强力修复功能。当常规修复无效时,可以到本程序的选项面内开启强力修复功能,可大幅提高修复成功率。请注意,请仅在常规修复无效时再使用此功能。 程序有两种窗口样式。正常模式即默认样式,适合绝大多数用户使用。另有一种简约模式,此时窗口将只显示最基本的内容,修复会自动进行,修复完成10秒钟后会自动退出。该窗口样式可以使修复工作得更加简单快速,同时方便其他软件、游戏将本程序内嵌,即可进行无需人工参与的快速修复。开启简约模式的方法是:打开程序所在目录下的“Settings.ini”文件(如果没有可以自己创建),将其中的“FormStyle”一项的值改为“Simple”并保存即可。 新版程序支持命令行运行模式。在命令行中调用本程序,可以在路径后直接添加命令进行相应的设置。常见的命令有7类,分别是设置语言的命令、设置窗口模式的命令,设置安全级别的命令、开启强力修复的命令、设置c++修复模式的命令、控制Direct加速的命令、显示版权信息的命令。具体命令名称可以通过“/help”或“/?”进行查询。 程序有高级筛选功能,开启该功能后用户可以自主选择要修复的文件,避免了其他不必要的修复工作。同时,也支持通过文件进行辅助筛选,只要在程序目录下建立“Filter.dat”文件,其中的每一行写一个需要修复文件的序号即可。该功能仅针对高级用户使用,并且必须在正常窗口模式下才有效(简约模式时无效)。 本程序有自动记录日志功能,可以记录每一次检测修复结果,方便在出现问题时,及时分析和查找原因,以便找到解决办法。 程序的“选项”对话框中包含了7项高级功能。点击"常规”选项卡可以调整程序的基本运行情况,包括日志记录、安全级别控制、调试模式开启等。只有开启调试模式后才能在C
<p> <span style="color:#337FE5;"><strong>【为什么还需要学习C++?】</strong></span> </p> <p style="margin-left:0cm;"> 你是否接触很多语言,但从来没有了解过编程语言的本质? </p> <p style="margin-left:0cm;text-align:start;"> 你是否想成为一名资深开发人员,想开发别人做不了的高性能程序? </p> <p style="margin-left:0cm;text-align:start;"> 你是否经常想要窥探大型企业级开发工程的思路,但苦于没有基础只能望洋兴叹? </p> <p style="margin-left:0cm;text-align:start;">   </p> <p style="margin-left:0cm;text-align:start;"> 那么C++就是你个人能力提升,职业之路进阶的不二之选。 </p> <p style="margin-left:0cm;text-align:start;"> <br /> </p> <p style="margin-left:0cm;text-align:start;"> <br /> </p> <p style="margin-left:0cm;"> <strong><span style="color:#337FE5;">【课程特色】</span></strong> </p> <p style="margin-left:0cm;text-align:start;"> 1.课程共19大章节,239课时内容,涵盖数据结构、函数、类、指针、标准库全部知识体系。 </p> <p style="margin-left:0cm;text-align:start;"> 2.带你从知识与思想的层面从0构建C++知识框架,分析大型项目实践思路,为你打下坚实的基础。 </p> <p style="margin-left:0cm;text-align:start;"> 3.李宁老师结合4大国外顶级C++著作的精华为大家推出的《征服C++11》课程。 </p> <p style="margin-left:0cm;text-align:start;"> <br /> </p> <p class="ql-long-24357476"> <span style="color:#337FE5;"><strong>【学完后我将达到什么水平?】</strong></span> </p> <p class="ql-long-24357476"> 1.对C++的各个知识能够熟练配置、开发、部署; </p> <p class="ql-long-24357476"> 2.吊打一切关于C++的笔试面试题; </p> <p class="ql-long-24357476"> 3.面向物联网的“嵌入式”和面向大型化的“分布式”开发,掌握职业钥匙,把握行业先机。 </p> <p class="MsoNoSpacing" style="margin-left:18pt;"> <br /> </p> <div> <br /> </div> <p> <br /> </p> <p style="margin-left:0cm;text-align:start;"> <span style="color:#337FE5;"><strong>【面向人群】</strong></span> </p> <p style="margin-left:0cm;text-align:start;"> <span style="color:#222226;font-family:PingFangSC-Regular, "font-size:14px;background-color:#FFFFFF;">1.希望一站式快速入门的C++初学者;</span> </p> <p style="margin-left:0cm;text-align:start;"> <span style="color:#222226;font-family:PingFangSC-Regular, "font-size:14px;background-color:#FFFFFF;">2.希望快速学习 C++、掌握编程要义、修炼内功的开发者;</span> </p> <p style="margin-left:0cm;text-align:start;"> <span style="color:#222226;font-family:PingFangSC-Regular, "font-size:14px;background-color:#FFFFFF;">3.有志于挑战更高级的开发项目,成为资深开发的工程师。</span> </p> <p style="margin-left:0cm;text-align:start;"> <br /> </p> <p> <br /> </p> <p> <span style="color:#337FE5;"><strong>【课程设计】</strong></span> </p> <p> 本课程包含3大模块 </p> <p> <strong>基础篇</strong><br /> 本篇主要讲解c++的基础概念,包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。 </p> <p> <br /> <strong>进阶篇</strong><br /> 本篇主要讲解编程中常用的一些技能,包含类的高级技术、类的继承、编译链接和命名空间等。 </p> <p> <br /> <strong>提升篇:</strong><br /> 本篇可以帮助学员更加高效的进行c++开发,其中包含类型转换、文件操作、异常处理、代码重用等内容。 </p> <p> <img src="https://img-bss.csdnimg.cn/202007091130239667.png" alt="" /> </p>
<span style="color:#E53333;"><span style="color:#000000;"> </span></span> <p style="font-size:16px;"> <span style="color:#3A4151;">课程演示环境:Ubuntu </span> </p> <p style="font-size:16px;"> </p><p> <span><span style="color:#0070C0;">需要学习Windows系统YOLOv4的同学请前往《Windows版YOLOv4目标检测实战:人脸口罩佩戴检测》</span></span> </p> <p> <span><span style="color:#0070C0;">课程链接:https://edu.csdn.net/course/detail/29123</span></span>  </p> <p style="font-size:16px;"> <span style="background-color:#FFFFFF;">当前,人脸口罩佩戴检测是急需的应用,而YOLOv4是最新的强悍的目标检测技术。本课程使用</span><strong><span style="color:#C00000;">YOLOv4实现实时的人脸口罩佩戴检测</span></strong><span style="background-color:#FFFFFF;">。课程提供</span><strong><span style="color:#C00000;">超万张已标注人脸口罩数据集</span></strong><span style="background-color:#FFFFFF;">。训练后的YOLOv4可对真实场景下人脸口罩佩戴进行</span><span style="background-color:#FFFFFF;">高精度地</span><span style="background-color:#FFFFFF;">实时检测。</span> </p> <p style="font-size:16px;"> <span style="background-color:#FFFFFF;"><br /></span> </p> <p style="font-size:16px;"> <span><span style="background-color:#FFFFFF;"><span style="font-size:16px;">本课程会讲述本项目超万张人脸口罩数据集的制作方法,包括使用labelImg标注工具标注以及如何使用Python代码对第三方数据集进行修复和清洗。</span><br /></span></span> </p> <p style="font-size:16px;"> <span><span style="background-color:#FFFFFF;"><br /></span></span> </p> <p style="font-size:16px;"> 本课程的YOLOv4使用AlexyAB/darknet,在Ubuntu系统上做项目演示。具体项目过程包括:安装YOLOv4、训练集和测试集自动划分、修改配置文件、训练网络模型、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类分析。  </p> <p style="font-size:16px;"> <br /></p> <p style="font-size:16px;"> <br /></p> <p style="font-size:16px;"> <img src="https://img-bss.csdn.net/202005200601524939.jpg" alt="" /></p> <p style="font-size:16px;"> <strong>YOLOv4人脸口罩佩戴检测效果</strong> </p> <p style="font-size:16px;"> <img src="https://img-bss.csdn.net/202005200603052758.jpg" alt="" /></p> <p style="font-size:16px;"> <br /></p> <span style="color:#000000;"></span>
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页