20.4 科研和专业计算工具

本节介绍 FreeBSD 系统上常用的科研与专业计算工具。这些工具涵盖文档管理、数学计算、绘图、编程、数据分析和模拟等多个领域,旨在支持学术研究和工程应用。

Calibre 文档管理(EPUB、MOBI、AZW3 等格式)

本小节介绍 Calibre 文档管理软件的使用方法。Calibre 是一款功能强大的电子书管理工具,支持多种电子书格式的阅读、转换和组织。

Calibre 可以在多种文档格式之间进行转换,还支持自定义 CSS 样式。

安装 Calibre

使用 pkg 安装:

# pkg install calibre

使用 Ports 安装:

# cd /usr/ports/deskutils/calibre/
# make install clean

使用 Calibre

Calibre 的具体使用方法可参考以下图片。启动 Calibre 后,可以通过图形界面导入、转换和管理电子书。

代数学

本小节介绍 FreeBSD 基本系统内置的两个计算器工具。这两款工具可满足基本的数学计算需求,是命令行环境下进行数值运算的基础工具。bc 采用中缀表示法,dc 采用后缀表示法(逆波兰表示法)。

其源代码位于 FreeBSD 官方源代码存储库 https://github.com/freebsd/freebsd-src/tree/main/contrib/bcarrow-up-right,可供研究与学习。用户可以通过 man bcman dc 命令查看手册页以获取更多使用细节。

bc(Basic Calculator)简单的计算器

bc 是一款采用中缀表示法的交互式计算器,支持基本算术运算和函数计算。

dc(Desktop Calculator)桌面计算器

后缀表示法(逆波兰表示法,Reverse Polish Notation,RPN)

本小节介绍后缀表示法的基本概念与应用。理解后缀表示法是使用 dc 计算器的基础。

我们从接触数学伊始,用的计算表达方式就是中缀表示法。如,要计算 3 和 4 的和,写作 3 + 4,操作符处于操作数的中间,这是人类最习惯的数学表达式书写方式。

而在后缀表示法中,操作符置于操作数之后。如上式若改用后缀表示法,则写作 3 4 +。如果有多个操作符,操作符则置于第二个操作数的后面,所以常规中缀表示法的 3 - 4 + 5 在后缀表示法里写作 3 4 - 5 +

后缀表示法更容易被计算机处理,并可利用堆栈结构减少内存访问,在编译器设计与计算器实现中被广泛采用。

有一例中缀表达式 5 + ((1 + 2) * 4) - 3,改为后缀表示法为 5 1 2 + 4 * + 3 -

下表给出了从左至右求值的过程,堆栈栏给出了中间值,用于跟踪算法。

输入
操作
堆栈
注释

5

入栈

5

1

入栈

5, 1

2

入栈

5, 1, 2

+

加法运算

5, 3

1, 2 出栈,让结果 3 入栈

4

入栈

5, 3, 4

*

乘法运算

5, 12

3, 4 出栈,让结果 12 入栈

+

加法运算

17

5, 12 出栈,让结果 17 入栈

3

入栈

17, 3

-

减法运算

14

17, 3 出栈,让结果 14 入栈

计算完成时,栈内只有一个操作数,这就是表达式的结果 14

dc 是采用后缀表示法的开源计算器,传统上,采用中缀表示法的 bc 计算器程序是在 dc 之上实现的。

对于上述示例,我们可以使用 dc 进行计算,在终端中输入以下命令:

使用 dc 计算表达式 5 + ((1 + 2) * 4) - 3,并输出计算结果。

计算结果为 14。问题得解。

几何学

本小节介绍几何绘图软件的使用方法。

几何绘图软件 GeoGebra

GeoGebra 是一款动态几何软件,支持几何、代数和微积分的可视化与计算。

可使用 pkg 或 Ports 两种方式安装 GeoGebra。

使用 pkg 安装:

或者使用 Ports 安装:

线性规划

本小节介绍线性规划软件 GLPK 的使用方法。线性规划是运筹学的重要分支,广泛应用于资源优化配置、生产计划制定与金融风险管理等领域。

GLPK

GLPK(GNU Linear Programming Kit)是 GNU 项目开发的开源线性规划工具包,功能强大且免费。

可使用 pkg 或 Ports 两种方式安装 GLPK。

使用 pkg 安装 GLPK:

或者使用 Ports 安装 GLPK:

在线性规划中,经常会使用单纯形法。在计算机应用层面,有多种软件可以辅助求解问题,例如可以在 Microsoft Excel 的“规划求解”功能中获得解答。

这里介绍免费的命令行线性规划软件包 GLPK 的使用方法。

下面给出一个示例,取自希利尔(Hillier),F. S.,希利尔(Hillier),M. S. 著,李勇建、徐芳超 译,《数据、模型与决策:基于电子表格的建模和案例研究方法》(原书第 6 版)[M],北京:机械工业出版社,2021-12,ISBN:9787111696278,例题 2.4-1。

有一家银行计划放贷,预计最高投放 1200 万。下表显示了相关的数据。

贷款类型
利率
坏账率

个人

0.14

0.1

汽车

0.13

0.07

家用

0.12

0.03

农业

0.125

0.05

商业

0.1

0.02

坏账意味着不产生利润,本金也无法收回。为了同其它商业机构竞争,农业贷款和商业贷款之和不少于全部贷款的 40%;为了振兴房地产业,个人贷款、家用贷款和汽车贷款三项总计中,其中的个人贷款占比不少于 50%;银行坏账率最高允许为全部贷款的 4%。

求解银行能获得最高利润的分配方式。

下面逐步进行分析,设个人、汽车、家用、农业及商业贷款的贷款量分别为 x1、x2、x3、x4 和 x5。

利润 = 0.14 · 0.9 x1 + 0.13 · 0.93 x2 + 0.12 · 0.97 x3 + 0.125 · 0.95 x4 + 0.1 · 0.98 x5

本金损失 = 0.1 x1 + 0.07 x2 + 0.03 x3 + 0.05 x4 + 0.02 x5

由此得到目标函数:max z = 利润 − 本金损失。

接下来,读者可根据题意找出约束条件。

由以上的目标函数和约束条件,我们可以给出以下数学模型:

新建一个文本文件(命名为 example),输入:

保存文件后,在终端中输入以下命令。

使用 GLPK 求解模型文件 example,并将结果输出到 example.out

查看 example.out 文件内容:

可查看解答值为:x3 = 720x5 = 480,其余各项值为 0

物理和化学

本小节介绍物理和化学领域的相关工具。这些工具可辅助学习和研究工作。

元素周期表 GPeriodic

GPeriodic 是一款元素周期表查看软件,提供元素的基本信息和物理化学性质。

可使用 pkg 或 Ports 两种方式安装 GPeriodic。

使用 pkg 安装:

或者使用 Ports 安装:

天文地理

本小节介绍天文和地理领域的相关工具。天文软件可帮助观测星空,地理软件可查看地图信息。

星图软件 Stellarium

Stellarium 是一款开源的天文馆软件,可模拟真实的星空观测。

使用 pkg 安装:

或者使用 Ports 安装:

技巧

默认会进入全屏模式,按 F11 可退出全屏模式。

GNOME 地图

GNOME 地图是一款地图查看软件,提供地图浏览和位置搜索功能。

使用 pkg 安装:

或者使用 Ports 安装:

地图数据整体较新,但无法显示街道的详细信息。

艺术

本小节介绍艺术创作领域的相关工具。包括音乐创作、三维建模、数字绘画等工具。

音乐

MIDI 编曲软件 LMMS

LMMS(Linux MultiMedia Studio)是一款数字音频工作站软件,用于音乐创作和 MIDI 编曲。

使用 pkg 安装:

或使用 Ports 安装:

软件支持中文,设置后需要重启才能使用中文。

制谱软件 MuseScore

MuseScore 是一款开源的音乐制谱软件,支持乐谱创作、编辑和播放。

可使用 pkg 或 Ports 两种方式安装 MuseScore。

使用 pkg 安装:

或者使用 Ports 安装:

三维图像

3D 建模 Blender

Blender 是一款开源的 3D 建模和动画制作软件,支持建模、渲染、动画等功能。

使用 pkg 安装:

或者使用 Ports 安装:

软件支持简体中文。如果无法直接显示简体中文,可先切换为繁体中文,再切换回简体中文。

绘画

Krita

Krita 是一款开源的数字绘画软件,专为插画师和概念艺术家设计。

使用 pkg 安装:

或者使用 Ports 安装:

工具与软件

本小节介绍其他相关工具与软件。科学计算软件可辅助数学和工程问题的求解。

科学计算软件 GNU Octave

GNU Octave 是一款开源的科学计算软件,兼容 MATLAB 语言,用于数值计算和数据可视化。

使用 pkg 安装:

或者使用 Ports 安装:

统筹学

本小节介绍统筹学相关工具。计算机代数系统可进行符号计算和数值分析,是数学研究与工程计算的重要辅助工具。

计算机代数系统 wxMaxima

wxMaxima 是 Maxima 计算机代数系统的图形用户界面,提供了直观的交互环境与强大的数学计算能力。

使用 pkg 安装:

或使用 Ports 安装:

上一节我们使用 GLPK 求解线性规划问题,本节我们使用性能更加强大的 wxMaxima 来解决问题,该系统不仅可以进行数值计算,还支持符号运算与公式推导。以下代码仅供参考,如果想深入了解,可查看 官方文档arrow-up-right 备份arrow-up-right,该文档涵盖 Maxima 计算机代数系统的符号计算、数值分析与公式推导功能,是研究与学习的权威参考资料。

在界面中点击红框标识的位置即可执行指令,软件给出的解答为:[436.608,[x5=480.0,x4=0,x3=720.0,x2=0,x1=0]],可见该结果与 GLPK 求得的解一致。

课后习题

  1. 根据 FreeBSD 基本系统中 bc 或 dc 的源代码,构建其独立可执行版本。

  2. 移植 MATLAB 到 FreeBSD Ports。

最后更新于