数学软件包-Octave
2022-08-02 10:58:21 阿炯

GNU Octave是一种采用高级编程语言的主要用于数值分析的软件。Octave有助于以数值方式解决线性和非线性问题,并使用与MATLAB兼容的语言进行其他数值实验,也可以作为面向批处理的语言使用。因为它是GNU计划的一部分,所以它是GNU通用公共许可证条款下的自由软件(GNU GPLv3)。


Octave是MATLAB的主要自由替代品之一,其他还有Scilab和FreeMat。然而与Octave相比,Scilab更少强调与MATLAB的(双向)句法兼容性。类似 matlab 和 Scilab 的数学软件包,可以进行各种运算、编程。它还有丰富的 C++ 接口可以让用户编程时调用。它绘图使用 gnuplot。它也是基于字符终端模式的,当需要绘图时,将会调用 gnuplot 进行数据绘图,并显示出来。

Octave是以C++的标准模板库编程而成。
Octave有自己Octave语言解释器。
Octave可以动态插件扩展。
Octave的解释器可用gnuplot及Grace产生图表及打印。

使用 C++ 编写的,它内容丰富的库也可以供用户在编写软件时调用。Octave 库的详细介绍在 /usr/share/doc/octave-Version/liboctave 下,文件是 liboctave.dvi,需要 PDF 文件的,可以运行:
dvipdfm liboctave.dvi

将 dvi 文件转换为 PDF 文件。

Octave 同时还支持 Fortran 等的调用,GSL 绑定等。可以由用户定制自己的函数、子程序等。Octave最初便是模彷Matlab而设计,自然与Matlab有许多相同的功能。这也使得一部分Matlab程序可以直接或经过少量修改在Octave上运行,一些软件开发小组也使用两者兼容的语法,直接开发可以同时在Matlab和Octave使用的程序:
矩阵为基础资料类型之一
内置支持复数
内置功能强大的数学函数及可扩展的库
用户可自定函数。

Octave语言

Octave语言是直译式及结构化(类于第二代的BASIC)的编程语言,支持许多C语言风格的标准函数功能,同时可以使用UNIX的系统调用以进行扩展增进功能,但不支持以引用的方式传递参数。其核心由一组内置的(built-in)矩阵运算语言(如四则运算)和可加载函数(Loadable Function)组成(例如求矩阵逆inv),其余能在核心语言之上实现而且性能开销不会显著增加的函数调用则一般以Octave脚本的形式存在(例如求解方程组的fsolve函数)。Octave 解释器会自动处理各种不同类型的调用。

Octave支持资料建构,也支持基本的面向对象编程,但通常仍把它当作面向过程的程序设计语言来看待。其语法基本上与Matlab一致,严谨编写的代码应同时可在Matlab及Octave执行。但若调用了Matlab工具包,则一般不能直接在Octave上运行,因为Octave附带的工具包与Matlab并不兼容。由于Octave是以GNU通用公共许可证许可,所以可以自由地复制、流通与使用。Octave可在大部分的类Unix操作系统中执行,亦可在Microsoft Windows中执行。在Mac OS X中运行也是可能的,但设置较为复杂。


最新版本:7.2
GNU Octave 7.2.0 于2022年8月上旬发布,现已可供下载。这是一个错误修复版本,具体更新内容如下:
改进和修复
检查 broadcastable inplace operators 时避免越界索引
hdl2struct.m:修复 uibuttongroups 的保存
isprime.m 和__isprimelarge__.cc:轻微的性能调整
factor.m:性能调整以避免在某些情况下出现 division
nchoosek.m:修复某些整数输入的 freeze-up
nchoosek.m:恢复浮点输入的快速路径代码
betainc.m:使用复杂的技术来计算指数以避免不准确
ls.m:修复 UNIX 平台上对 \ 的处理
ls.m:在 Windows 上使用 glob 模式
findobj.m:修复图形句柄的输入验证
__print_parse_opts__.m:在所有情况下为 print warnings 初始化变量
datenum.m:正确处理具有前导单例维度的数组
停止在 uimenu 句柄上调用 reset() 时的错误
设置轴限制时在空输入上发出更多信息错误消息
msgbox.m:允许图标的 “自定义”cdata
修复嵌套函数和匿名函数的内存泄漏
__wglob__:在 Windows 上保留 trailing file 分隔符
mkoctfile.m:修剪系统输出周围的空白(换行符)
plot:不赞成使用数字来选择线条颜色
改变将变量作为函数使用时的错误信息的措辞
inputParser.m:适应关于输出参数数量的解释器更改
inputParser.m:正确处理可选参数的单元格默认值
解析关键字时存储 token ID,而不是关键字 ID
canonicalize_file_name:不要将映射的网络驱动器转换为 UNC 路径
regexp:在访问之前检查 pattern length
randmtzig.cc:添加缺失的#include <ctime>

GUI
修复在关闭修改后的文件时删除尾随空格的问题
替换 GUI 中弃用的 QDesktopWidget 的使用
修复打开 fixed_point_format 时变量编辑器中的显示
修复在编辑器中保存较短内容时的文件长度
更多详情可查看此处


官方主页:https://octave.org/