Spec-Zone.ru › Octave 9

Далее: Конвенции, Предыдущее: Запуск Octave, Вверх: Краткое введение в Octave [Оглавление][Индекс]

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

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

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

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

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

Octave легко используется для основных числовых вычислений. Octave знает арифметические операции (+,-,*,/), возведение в степень (^), натуральные логарифмы/экспоненты (log, exp) и тригонометрические функции (sin, cos, …). Кроме того, вычисления в Octave работают с действительными или мнимыми числами (i, j). Кроме того, некоторые математические константы, такие как основание натурального логарифма (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 Solver для обыкновенных дифференциальных уравнений, описанный в A. C. Hindmarsh, ODEPACK, a Systematized Collection of ODE Solvers, in: Scientific Computing, R. S. Stepleman et al. (Eds.), North-Holland, Amsterdam, 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 переместит курсор вперед по строке и т. д.

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

Далее: Конвенции, Предыдущее: Запуск Octave, Вверх: Краткое введение в Octave [Оглавление][Индекс]

© 1996–2023 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.2.0/Simple-Examples.html

Spec-Zone.ru

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