什么是列线图?为什么它会让我感兴趣?

Hacker News Top 工具

摘要

本文介绍了作为图形计算器的列线图,并描述了用于以编程方式创建它们的pyNomo库。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/06/26 20:20

# 引言 — pyNomo 文档 0.3.2.2 文档 来源:https://lefakkomies.github.io/pynomo-doc/introduction/introduction.html ## 什么是列线图?它为何让我感兴趣?¶(https://lefakkomies.github.io/pynomo-doc/introduction/introduction.html#what-is-a-nomogram-and-why-would-it-interest-me) **列线图**(nomogram)或**诺模图**(nomograph)是一种图解,提供了一种简单、图形化的方式来计算数学公式的结果。有时也被称为**对齐图**(alignment chart),它由一组标有刻度的尺度组成,通常每个变量对应一个尺度,这些尺度排列成使得可以放置直尺跨越已知值,从而找到解出公式的未知值。由于两个变量的方程通常用图形表示,大多数列线图处理的是涉及三个或更多变量的公式。 这些图形计算器由菲力贝尔·莫里斯·多卡涅(Philbert Maurice d’Ocagne)于1880年发明,多年来被工程师广泛使用,以快速对复杂公式进行图形化计算,达到实际精度。如今,电子计算器和计算机已使列线图不那么常见,但当需要针对特定公式快速、便捷的手持计算器时,它们仍非常有用。制作一个列线图的成本仅是一张纸,而且它设计有趣、使用简单,还能成为吸引人的美丽设计。 例如,以下是一个1920年的列线图,用于关联滑块曲柄机构中的变量 \\(l\\)、\\(s\\)、\\(r\\) 和 \\(\\alpha\\): ../_images/meyer_nomogram.png(https://lefakkomies.github.io/pynomo-doc/_images/meyer_nomogram.png)这个公式解相当复杂: \\(s = r(1 - \\cos \\alpha) + l(1 - (1 - \\lambda^2 \\sin^2 \\alpha)^{1/2})\\) 其中 \\(\\lambda = r/l\\) 列线图上有一条示例等值线(isopleth line),用于求解一组按 \\(r\\) 缩放后的值。对于 \\(\\lambda = r/l = 0.35\\) 和角度 \\(\\alpha = 75^{\\circ}\\),我们发现 \\(s/2r \\approx 0.455\\),此时我们在 \\(s/2r\\) 和 \\(\\alpha\\) 尺度的同侧读取数值。请注意,在实际使用中,制图员会以更大的比例绘制此列线图,以获得更高精度。 自己试试看!选择一个半径 \\(r\\)、一个长度 \\(l \\geq 2r\\) 和一个角度 \\(\\alpha\\),并在计算器上求出 \\(s\\)。想象一下在计算器发明之前,工程师如何手动为不同参数求解这个问题。然后在此列线图上用直尺求解,并比较你的答案。完成后,选择 \\(r\\)、\\(l\\) 和 \\(s\\) 的值,求解 \\(\\alpha\\)。你会意识到,列线图甚至能求解那些无法在方程一侧孤立出来的隐式变量! 这个列线图到底是如何设计的?这种尺度布局竟然能仅用直尺对该值的所有组合求解方程。对于九种最常见的函数关系,PyNomo 使用简单但可定制的脚本生成 PDF 格式的矢量图列线图,你只需提供变量的函数即可。除此之外,有经验的设计师还可以使用第十个 PyNomo 选项来绘制具有任意复杂布局的列线图(例如本例),甚至制作线性或圆形计算尺。 设计列线图是一种愉快的追求,比过去有趣得多,因为 PyNomo 不仅能提供专业知识,还能充当技术制图员。如下所述,即使在今天,列线图在各种应用中仍然非常有用。 ## 列线图的用途¶(https://lefakkomies.github.io/pynomo-doc/introduction/introduction.html#uses-of-nomograms) 列线图已被广泛应用于各种领域。示例包括: - 多卡涅最初的应用:在法国国家铁路系统建设期间,自动化复杂的“挖填方”土方计算。这是一个重要的概念验证,因为计算并非易事,而结果带来了时间、精力和金钱的显著节省。 - 用于调节水流的水渠、管道和堰的设计。 - 劳伦斯·亨德森(Lawrence Henderson)的工作,他使用列线图关联血液生理学的许多不同方面。这是美国首次大规模使用列线图,也是全世界首批医学列线图。列线图至今仍在医学领域广泛使用。 - 火控系统之前的弹道计算,其中计算时间至关重要。 - 机械车间计算,用于转换蓝图尺寸并根据材料尺寸和属性进行计算。这些列线图通常包含标准尺寸和可用制造部件的标记。 - 统计学,用于分布属性的复杂计算以及运筹学,包括质量控制验收测试的设计。 - 运筹学,用于获取各种优化问题的结果。 - 化学和化学工程,用于总结通用物理关系以及特定化合物的经验数据。 - 航空学,列线图在各类飞机的驾驶舱中使用了数十年。作为导航和飞行控制辅助工具,列线图快速、紧凑且易于使用。 - 天文计算,例如 P.E. 埃利亚斯伯格(P.E. Elyasberg)对斯普特尼克1号(Sputnik 1)发射后轨道计算的应用。 - 各类工程工作:电气设计中的滤波器和传输线、机械应力与载荷计算、光学计算等。 - 军事领域,需要在野外快速、可靠地进行复杂计算,且不依赖电子设备。 列线图具有双重目的:既允许进行细致入微的快速计算——以明确数字形式给出答案——同时通过各尺度的关系、标注、限值和刻度提供巨大洞察力。更好的列线图是自文档化的。它们提供了系统的视觉模型,并展现出暗示相互关系和跨变量敏感性的奇妙能力。正如数学家和计算机科学家理查德·哈明(Richard Hamming)所言:“计算的目的是洞察,而非数字。” ## 列线图的组成部分¶(https://lefakkomies.github.io/pynomo-doc/introduction/introduction.html#parts-of-nomograms) 列线图的组成部分不多,但了解它们很重要,因为整个文档中都会引用这些术语。我们将用最常见的列线图类型来介绍这些术语,该类型由三条平行的直线尺度组成。这种形式用于求解三个变量的函数之和为零的方程。最简单的此类公式是 \\(u_1 + u_2 + u_3 = 0\\),其中 \\(u_1\\)、\\(u_2\\) 和 \\(u_3\\) 为三个变量。以下显示了一个这种类型列线图的示例,并标注了描述列线图组成部分的术语。通常,尺度可以是 \\(u_1\\)、\\(u_2\\) 和 \\(u_3\\) 的函数,但这里尺度就是变量本身。在给定其他两个变量值的情况下,该列线图可求解任何变量,图中的示例等值线代表值为7、2和-9时的解。 ../_images/sample_nomogram.png(https://lefakkomies.github.io/pynomo-doc/_images/sample_nomogram.png)列线图应自成一体,即任何人只需对其略知一二,就能理解列线图求解什么以及如何使用它。这意味着应该有一条示例等值线来引导用户。如果应用不明显,应列在标题中,或许还需要一个将变量与应用联系起来的图形。求解的方程也应列在列线图上;我们可以保证,没有什么比将几十年历史的列线图逆向工程还原为其定义方程更繁琐的任务了。 ## PyNomo 能为我做什么?¶(https://lefakkomies.github.io/pynomo-doc/introduction/introduction.html#what-can-pynomo-do-for-me) PyNomo 让我们能够设计几乎所有列线图,甚至包括用于超过三个变量方程的网格和复合列线图,而且几乎不需要数学背景。需要具备代数知识,以便首先将方程整理成 PyNomo 支持的十种标准方程类型之一(九种特定类型和一种通用类型)。 然后,根据变量函数之间的拟合关系,为列线图类型编写 PyNomo 脚本。也许你的方程中有两个函数相乘、一个函数相除,或者关系更复杂。通常这需要查看 PyNomo 支持的方程类型格式表,并选择与你的方程匹配的一种。然后复制该类型的标准示例脚本,并修改以使用你方程中的函数。以标准示例为起点进行复制和修改既简单又快速——我们都这样做。 运行脚本,便会自动生成一个 PDF 文件,其中包含布局好可供打印的列线图。一旦开始制作列线图,你可能会希望自定义其外观——尺度上刻度标记的间距、尺度标题、列线图标题的位置等等。你可能会想绘制一条示例等值线,并为尺度和标签添加颜色。PyNomo 提供了许多此类功能,本文档也尽量涵盖所有内容,但不要被这里示例中散见的这些额外细节吓倒。它们可能使脚本看起来更复杂,但完全是可选的,可以忽略,直到有一天你真的希望某个尺度变成红色。那时,你就在文档中查阅涉及颜色的尺度参数。 探索教程,你会惊讶地发现自己正在创建真正能用的列线图。本文档中还有一些部分涉及更高级的主题,例如使用行列式方程设计极复杂方程的列线图、应用变换和投影来扭曲和拉伸列线图使其更规整以便更精确使用,甚至使用 PyNomo 创建线性和圆形计算尺。

相似文章

Plotnine

Hacker News Top

Plotnine是一个基于图形语法的Python数据可视化包,提供类似于R语言ggplot2的API,用于创建可自定义的统计图表。

Napkin Math

Product Hunt

Napkin Math 是一个个性化的人工智能食物日记和营养教练,帮助用户追踪和改善饮食。

Nomie v2

Product Hunt

Nomie v2 是一款自我关怀互动应用,旨在用积极的习惯追踪替代无意义的刷手机行为。

基于ESP32的图形科学计算器

Hacker News Top

NumOS 是一个开源操作系统,适用于基于ESP32-S3微控制器的图形科学计算器,搭载了由Giac驱动的CAS引擎和LVGL 9.x界面。