1.2简单示例

下面的章节详细描述了Octave的所有函数,但在此之前,对其一些函数进行采样可能会有所帮助。

如果你是octave的新手,我们建议你尝试这些例子来学习octave. 像这样标记的行, ‘octave:13>’ 或 ‘>> ’, 是你输入的行, 用 回车结束. (不要输入 ‘octave:13>’ 它自己! 这只是 Octave 命令提示符, 这就像GUI中的 >> 一样. Octave 将根据输入返回输出, 或输出图表.

1.2.1基本计算

Octave可以很容易地用于基本的数值计算。Octave知道算术运算(+,-,*,/)、幂运算(^)、自然对数/指数(log,exp)和三角函数(sin,cos,…)。此外,Octave计算适用于实数或虚数(i,j)。此外,一些数学常数,如自然对数的底(e)和圆的周长与直径的比值(pi)是预定义的。

例如,为了验证Euler的Identity,


 i*pi
e     = -1

输入以下内容,其评估结果为-1在计算的误差范围范围内。

octave:1> exp (i*pi)

1.2.2创建矩阵

向量和矩阵是数字分析的基本组成部分。要创建新矩阵并将其存储在变量中,以便以后可以引用它,请输入以下命令

octave:1> A = [ 1, 1, 2; 3, 5, 8; 13, 21, 34 ]

Octave将通过在整齐排列的列中打印矩阵来做出响应。Octave使用逗号或空格分隔一行中的条目,asemicolon或回车分隔一行和下一行。以分号结尾命令告诉Octave不要打印命令的结果。例如

octave:2> B = rand (3, 2);

将创建一个3行2列的矩阵,每个元素都设置为0到1之间的随机值。

要显示变量的值,只需在提示下输入变量的名称。例如,显示存储在矩阵中的值B,输入命令

octave:3> B

1.2.3矩阵运算

Octave使用标准的数学表示法,其优势超过了运算符可以作用于标量、向量、矩阵或N维数组的低级语言。例如,要乘以矩阵A通过标量值,输入命令

octave:4> 2 * A

将两个矩阵相乘AB,输入命令

octave:5> A * B

并形成矩阵乘积transpose (A) * A,输入命令

octave:6> A' * A

1.2.4求解线性方程组

线性方程组在数值分析中无处不在。求解线性方程组Ax = b,使用左除法运算符,\’:

x = A \ b

这在概念上等同于inv (A) * b,但避免直接计算矩阵的逆。

如果系数矩阵是奇异的,Octave将打印警告消息并计算最小范数解。

一个简单的例子来自化学和获得平衡化学方程的需要。考虑燃烧氢气和氧气来生产水。

H2 + O2 --> H2O

上面的方程式不准确。质量守恒定律要求每种类型的分子数量在方程的左右两侧保持平衡。在氢和氧的单独方程中写出可变的总反应,可以查找:

x1*H2 + x2*O2 --> H2O
H: 2*x1 + 0*x2 --> 2
O: 0*x1 + 2*x2 --> 1

Octave中的解决方案只需三个步骤即可找到。

octave:1> A = [ 2, 0; 0, 2 ];
octave:2> b = [ 2; 1 ];
octave:3> x = A \ b

1.2.5积分微分方程

Octave具有用于求解形式为的非线性微分方程的内置函数

dx
-- = f (x, t)
dt

具有初始条件

x(t = t0) = x0

对于Octave积分这种形式的方程,必须首先提供函数的定义f(x,t)。这很简单,可以通过直接在命令行上输入函数体来完成。例如,以下命令定义了一对有趣的非线性微分方程的右手边函数。请注意,当您输入函数时,Octave会以不同的提示进行响应,表示正在等待您完成输入。

octave:1> 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

给定初始条件

octave:2> x0 = [1; 2];

以及作为列向量的输出时间集合(注意,第一输出时间对应于上面给出的初始条件)

octave:3> t = linspace (0, 50, 200)';

很容易对微分方程组进行积分:

octave:4> x = lsode ("f", x0, t);

函数lsode使用A.C.Hindmarsh,ODEPACK, a Systematized Collection of ODE Solvers,载于:科学计算,R.S.Stepleman等人(编辑),北荷兰,阿姆斯特丹,1983年,第55-64页。

1.2.6生成图形输出

要以图形方式显示上一个示例的解决方案,请使用命令

octave:1> plot (t, x)

Octave将自动创建一个单独的窗口来显示绘图。

要在绘图显示在屏幕上后保存绘图,请使用print命令。例如

print foo.pdf

将创建一个名为foo.pdf其中包含以可移植文档格式呈现的当前绘图。命令

help print

解释了的更多参数print命令,并提供其他输出文件格式的列表。

1.2.7帮助和文档

Octave拥有广泛的帮助设施。以打印形式提供的相同文档也可以从Octave提示符中获得,因为两种形式的文档都是从同一个输入文件创建的。

为了获得良好的帮助,您首先需要知道要使用的命令的名称。这个函数的名称可能并不总是显而易见的,但一个好的开始是输入help --list。这将向您显示Octave当前会话中可用的所有运算符、关键字、内置函数和可加载函数。替代方法是使用搜索文档lookfor函数(如所述Commands for Getting Help).

一旦您知道了要使用的函数的名称,您就可以通过简单地将名称作为参数来获得有关该函数的更多帮助。例如

help plot

将显示的帮助文本plot作用

Octave帮助工具中允许您从Octave中阅读印刷手册全文的部分通常使用一个名为Info的单独程序。当您调用Info时,您将被放入一个包含整个Octave手册的菜单驱动程序中。本手册提供了有关使用信息的帮助,详见用于获取帮助的命令.

1.2.8编辑您输入的内容

在Octave提示下,您可以使用Emacs或vi样式的编辑命令调用、编辑和重新发出前一个命令。defaultkeybindings使用Emacs样式的命令。例如,要调用上一个命令,请按Control-p书面的C-p简称)。这样做通常会返回前一行输入。C-n将调出下一行输入,C-b将在行上向后移动光标,C-f将光标在线上向前移动等。

本手册提供了命令行编辑函数的完整说明,详见命令行编辑.


版权所有 © 2024-2025 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2