Octave 指南 (一) 入门
(2017-03-22 09:58:54)1 Octave 简要介绍
GNU Octave
是主要用于数值计算的高级语言。主要用于求解线性或者非线性方程,数值线性代数,统计分析,及其他数学计算。也可以被用于面向批量的自动数据处理语言。
当前版本的 GNU Octave 是在一个 GUI 里面运行。GUI
包括一个集成开发工具(IDE)。IDE 包括一个具有语法高亮的代码编辑器,内置调试器,文档浏览器,和语言解释器。也可以使用命令行界面的
Octave。
GNU Octave 是自由发布的软件。
本文档全面介绍 GNU Octave
的安装,运行,使用和扩展。另外的章节介绍如何报bug和如何contribute。
本文档对应于 Octave 4.2.1
1.1 运行 Octave
多数系统上,运行 Octave 。它启动了 GUI。遇到异常情况,可以用 Control-c 停止 Octave
运行。
退出 Octave,使用 quit 或者 exit。
在支持 job 控制的系统上,你可以挂起 Octave 通过发送一个 SIGTSTP 信号,通过
control-z。
1.2 简单示例
1.2.1 基本运算
Octave 基本运算包括 + - * /, 幂运算(^),自然对数/指数 (log/exp) ,三角函数 (sin,
cos, ... )。另外,Octave 能实数实数和虚数。另外,一些数学常数(如e,π)也有定义。例如,验证欧拉公式: e^(i
π) = -1。
>> exp(i*pi)
1.2.2 创建矩阵
>>A = [ 1, 1, 2; 3, 5, 8; 13, 21, 34 ]
A =
Octave 用逗号或者空格来分隔行里面的元素。用分号或者回车来分隔每个行。
如果语句后面不加分号,则打印该变量,否则不打印。
创建一个随机的3行2列的数组:
>> B = rand (3, 2)
B =
B =
如果不打印B,则使用 B = rand (3, 2);如果需要单独打印B,则直接输出B:
>> B
1.2.3 矩阵算数
数乘: 2 * B
矩阵乘法:A * B
转置: A'
矩阵逆 : inv (A)
1.2.4 求解线性方程组
x = A \ b
相当于:
x = inv (A) * b
如果 A 不可逆,则 Octave 打印一个警告并返回最小的 norm 解。
1.2.5 微积分方程
Octave 内置求解非线性微分方程: dx/dt = f (x, t) ,初值: x(t=t0) = x0.
解这样的方程,首先需要提供 f 的定义。如:
>> function xdot = f (x, t)
r = 0.25;
k = 1.4;
a = 1.5;
b = 0.16;
c = 0.9;
d = 0.8;
xdot(1) = r*x(1)*(1 - x(1)/k) - a*x(1)*x(2)/(1 + b*x(1));
xdot(2) = c*a*x(1)*x(2)/(1 + b*x(1)) - d*x(2);
endfunction
r = 0.25;
k = 1.4;
a = 1.5;
b = 0.16;
c = 0.9;
d = 0.8;
xdot(1) = r*x(1)*(1 - x(1)/k) - a*x(1)*x(2)/(1 + b*x(1));
xdot(2) = c*a*x(1)*x(2)/(1 + b*x(1)) - d*x(2);
endfunction
定义 x0:
x0 = [1; 2];
初始化t:
t = linspace (0, 50, 200)';
解方程:
x = lsode ("f", x0, t);
函数 使用
Livermore Solver for Ordinary Differential Equations
lsode
1.2.6 图形输出
>>plot(t, x)
打印画出的图形:
>>print -dpdf foo.pdf
打印更多功能:
help print
1.2.7 帮助和文档
help --list 列出所有的帮助命令。
help plot 查找一个具体命令的帮助文档
1.2.8 编辑
Control-p
Control-n
Control-b
Control-f
1.3 习惯
2 开始
本章介绍 Octave 的基本功能。
2.1 从命令行启动 Octave
无参数运行 octave
有参数运行 octave xxx.m 执行该文件
帮助: octave -- help
或者: octave - h
2.2 退出 Octave
退出 octave 使用 exit 或者 quit 命令,他们一样。和启动一样,退出也可以带一个脚本。退出期间,octave
在load path 中搜索脚本
finish.m。可以把保存工作变量和清理临时文件的事情放在里边。如果需要在退出期间执行额外的功能,使用 atexit
命令:
命令如下:
status 缺省值是0
例如:
function last_words ()
disp ("Bye bye");
endfunction
atexit ("last_words");
endfunction
atexit ("last_words");
参数 flag 控制是否注册和注销该函数。注销的函数,在octave退出的时候将不再调用。
注意,注册多次需要注销多次才起作用。
2.3 获取帮助
-
:
val = info_file () -
:
old_val = info_file (new_val) -
:
info_file (new_val, "local") -
:
val = info_program () -
:
old_val = info_program (new_val) -
:
info_program (new_val, "local") -
:
val = makeinfo_program () -
:
old_val = makeinfo_program (new_val) -
:
makeinfo_program (new_val, "local") -
:
val = texi_macros_file () -
:
old_val = texi_macros_file (new_val) -
:
texi_macros_file (new_val, "local") -
:
val = doc_cache_file () -
:
old_val = doc_cache_file (new_val) -
:
doc_cache_file (new_val, "local") -
:
val = built_in_docstrings_file () -
:
old_val = built_in_docstrings_file (new_val) -
:
built_in_docstrings_file (new_val, "local") -
:
val = suppress_verbose_help_message () -
:
old_val = suppress_verbose_help_message (new_val) -
:
suppress_verbose_help_message (new_val, "local") -
:
doc_cache_create (out_file, directory) -
:
doc_cache_create (out_file) -
:
doc_cache_create () -
:
[text, format] = get_help_text (name) -
:
[text, format] = get_help_text_from_file (fname) -
:
text = get_first_help_sentence (name) -
:
text = get_first_help_sentence (name, max_len) -
:
[text, status] = get_first_help_sentence (…)
2.4 命令行编辑
2.5 Octave 如何报错
2.6 执行 Octave 程序
使用 '#!' 脚本机制可以编写自包含的 Octave 脚本。例如:文件 hello
#! octave-interpreter-name -qf
# a sample Octave program
printf ("Hello, world!\n");
# a sample Octave program
printf ("Hello, world!\n");
运行:
octave hello
2.7 注释
单行:用 # 或者 %
块注释:#{ #} 或者 %{ %}
后一篇:MongoDB