第 20.3 节 科研与专业工具
计算机科学
编程?
语言与翻译
代数学
简单的计算器 bc
安装命令:# pkg install gnubc
后缀表示法
注:本节内容参考了维基百科
从幼儿园接触数学开始,我们用的计算表达方式就是中缀表示法。如,要计算 3 和 4 的和,写作 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
dc
是采用后缀表示法的开源计算器,传统上,采用中缀表示法的 bc
计算器程序是在 dc
之上实现的。
对于上例,我们试着用 dc
操作一番。终端输入 dc -e '5 1 2 + 4 * + 3 - p'
,可得到 14
。问题解决。
几何学
几何绘图软件 geogebra
安装命令:# pkg install geogebra
线性规划
GLPK 安装:# pkg install glpk
线性规划里,我们经常会用到 单纯形法。 在计算机层面,有很多软件可以解放我们的大脑,甚至你可以在 OFFICE 表格软件的“规划求解”里,得到很好的解答。 这里我们简单介绍一下命令行免费线性规划软件包 GLPK 的使用方法。希望大家可以触类旁通,举一反三。
我们先来看一个例子,取自 Hamdy A. Tara 所著的 “Operations Research : An Introduction”一书,例题 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
,输入:
保存后,终端输入 $ glpsol -m example -o example.out
,打开 example.out 文件可查看解答值为:x3 = 720,x5 = 480,其余各项值为 0。
问题解决。
物理和化学
元素周期表
GPeriodic
:# pkg install gperiodic
天文地理
星图软件 Stellarium:
# pkg install stellarium
Gnome 地图:
# pkg install gnome-maps
艺术
音乐
MIDI 编曲软件
LMMS
:# pkg install lmms
制谱软件
MuseScore
:# pkg install musescore
三维图像
三维图形图像软件
Blender
:# pkg install blender
绘画
Krita:
# pkg install krita
MyPaint:
# pkg install mypaint
工具与软件
科学计算软件 GNU Octave: # pkg install octave
计算机代数系统 wxMaxima: # pkg install wxmaxima
Python 及其相关模块: # pkg install python py38-scipy py38-pandas py38-matplotlib py38-sympy
统计学
分析学
统筹学
上一节我们使用 GLPK 求解线性规划问题,本节我们使用性能更加强大的 wxMaxima 来解决问题。以下代码仅供参考,如果想深入了解,可查看官方文档。
软件给出的解答为:[436.608,[x5=480.0,x4=0,x3=720.0,x2=0,x1=0]]
,可知与 GLPK 求得的答案相同。问题解决。
最后更新于