加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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 =
        2
        8
   13   21   34
Octave 用逗号或者空格来分隔行里面的元素。用分号或者回车来分隔每个行。
如果语句后面不加分号,则打印该变量,否则不打印。
创建一个随机的3行2列的数组:
>> B = rand (3, 2)
B =
   0.62784   0.21485
   0.93834   0.76355
   0.55626   0.71605
如果不打印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

定义 x0:
x0 = [1; 2];
初始化t:
t = linspace (0, 50, 200)';
解方程:
x = lsode ("f", x0, t);
函数 lsode 使用 Livermore Solver for Ordinary Differential Equations

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 命令:
命令如下:
: exit
: exit (status)
: quit
: quit (status)
status 缺省值是0
: atexit (fcn)
: atexit (fcn, flag)
例如:
function last_words ()
  disp ("Bye bye");
endfunction
atexit ("last_words");
参数 flag 控制是否注册和注销该函数。注销的函数,在octave退出的时候将不再调用。
注意,注册多次需要注销多次才起作用。

2.3 获取帮助

: help name
: help --list
: help .
: help
: doc function_name
: doc
: lookfor str
: lookfor -all str
: [fcn, help1str] = lookfor (str)
: [fcn, help1str] = lookfor ("-all", str)
: news
: news package
: info ()
: warranty ()
: 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");
运行:
octave hello

2.7 注释

单行:用 # 或者 %
块注释:#{ #} 或者 %{ %}


0

阅读 收藏 喜欢 打印举报/Report
后一篇:MongoDB
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有