Spec-Zone.ru › Octave 9

1.2 Простые примеры

В следующих главах подробно описаны все возможности Octave, но прежде чем перейти к этому, полезно ознакомиться с некоторыми из них.

Если вы только начинаете работать с Octave, рекомендуем попробовать эти примеры и начать изучать Octave на практике. Строки, помеченные так: «octave:13>» или «>> », — это строки, которые нужно вводить, завершая каждую нажатием клавиши возврата каретки. (Не вводите сам текст «octave:13>»! Это только приглашение Octave, которое в графическом интерфейсе выглядит также как >> . Octave ответит на ваши команды результатом или отобразит график.

  • Элементарные вычисления
  • Создание матрицы
  • Арифметические операции с матрицами
  • Решение систем линейных уравнений
  • Интегрирование дифференциальных уравнений
  • Построение графиков
  • Справка и документация
  • Редактирование введенного текста

1.2.1 Элементарные вычисления

Octave можно легко использовать для выполнения простых численных вычислений. Octave поддерживает арифметические операции (+,-,*,/), возведение в степень (^), натуральные логарифмы и экспоненты (log, exp), а также тригонометрические функции (sin, cos, …). Кроме того, Octave выполняет вычисления с действительными и мнимыми числами (i,j). Также в Octave заранее определены некоторые математические константы, например основание натурального логарифма (e) и отношение длины окружности к ее диаметру (pi).

Например, чтобы проверить тождество Эйлера,


 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 запятая или пробел отделяют элементы строки, а точка с запятой или возврат каретки — одну строку от следующей. Если завершить команду точкой с запятой, Octave не будет выводить ее результат. Например,

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

создаст матрицу из 3 строк и 2 столбцов, каждый элемент которой будет иметь случайное значение от нуля до единицы.

Чтобы отобразить значение переменной, просто введите ее имя в приглашении. Например, чтобы отобразить значение, сохраненное в матрице B, введите команду

octave:3> B

1.2.3 Арифметические операции с матрицами

Octave использует стандартную математическую нотацию, обладая при этом преимуществом перед языками низкого уровня: операторы могут применяться к скалярам, векторам, матрицам и N-мерным массивам. Например, чтобы умножить матрицу A на скалярное значение, введите команду

octave:4> 2 * A

Чтобы перемножить матрицы A и B, введите команду

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 использует решатель обыкновенных дифференциальных уравнений Livermore, описанный в работе А. К. Хиндмарша «ODEPACK, систематизированное собрание решателей ОДУ», в издании: «Научные вычисления», Р. С. Степлман и др. (ред.), Северная Голландия, Амстердам, 1983, с. 55–64.

1.2.6 Построение графиков

Чтобы построить график решения из предыдущего примера, используйте команду

octave:1> plot (t, x)

Octave автоматически откроет отдельное окно для отображения графика.

Чтобы сохранить график после его отображения на экране, используйте команду print. Например,

print foo.pdf

создаст файл foo.pdf, содержащий изображение текущего графика в формате Portable Document Format. Команда

help print

описывает дополнительные параметры команды print и содержит список других форматов выходных файлов.

1.2.7 Справка и документация

В Octave есть обширная справочная система. Документация, доступная в печатном виде, доступна и из приглашения Octave, поскольку обе версии создаются из одного исходного файла.

Чтобы получить полезную справку, сначала необходимо знать имя нужной команды. Имя этой функции не всегда очевидно, но начать можно с ввода help --list. Эта команда покажет все операторы, ключевые слова, встроенные функции и загружаемые функции, доступные в текущем сеансе Octave. Другой вариант — выполнить поиск по документации с помощью функции lookfor (описанной в разделе Команды для получения справки).

Узнав имя нужной функции, можно получить дополнительную справку, просто указав это имя в качестве аргумента команды help. Например,

help plot

выведет справочный текст для функции plot.

Часть справочной системы Octave, позволяющая читать полный текст печатного руководства непосредственно в Octave, обычно использует отдельную программу Info. При запуске Info открывается меню с полным руководством по Octave. Справка по работе с Info приведена в этом руководстве; см. раздел Команды для получения справки.

1.2.8 Редактирование введенного текста

В приглашении Octave можно вызывать, редактировать и повторно выполнять предыдущие команды с помощью команд редактирования в стиле Emacs или vi. По умолчанию используются привязки клавиш в стиле Emacs. Например, чтобы вызвать предыдущую команду, нажмите Control-p (сокращенно записывается как C-p). Обычно при этом восстанавливается предыдущая строка ввода. Клавиша C-n вызывает следующую строку ввода, C-b перемещает курсор назад по строке, C-f — вперед по строке и т. д.

Полное описание возможностей редактирования командной строки приведено в этом руководстве; см. раздел Редактирование командной строки.

© 1996–2026 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v9.4.0/Simple-Examples.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API