Возможна ли разработка приложения на Octave с GUI? |
Основы работы
2.5.5 Функции, определённые пользователем
В первой главе мы уже рассмотрели создание небольшой программы, которая решает конкретное квадратное уравнение. В этой программе отсутствовал заголовок (первая строка определённого вида), и в неё невозможно было передать входные параметры, то есть это был обычный список команд, воспринимаемый системой как единый оператор.
Функция, как и программа, предназначена для неоднократного использования, но она имеет входные параметры и не выполняется без их предварительного задания. Функция имеет заголовок вида
где — список выходных параметров, то есть переменных, которым будет присвоен конечный результат вычислений,
— имя функции,
— входные параметры. Таким образом простейший заголовок функции выглядит так:
Все имена переменных внутри функции, а также имена из списка входных и выходных параметров воспринимаются системой как локальные, то есть эти переменные считаются определёнными только внутри функции.
Программы и функции в Octave могут быть созданы при помощи текстового редактора и сохранены в виде файла с расширением .m или .M. Но при создании и сохранении функции следует помнить, что её имя должно совпадать с именем файла.
Вызов программ в Octave осуществляется из командной строки. Программу можно запустить на выполнение, указав имя файла, в котором она сохранена.
Обращение к функции осуществляется так же, как и к любой другой встроенной функции системы, то есть с указанием входных и выходных параметров. Вы можете вызвать функцию из командной строки или использовать её как один из операторов программы.
Пример 2.1. Создать функцию для решения кубического уравнения.
Кубическое уравнение
![ax^3+bx^2+cx+d=0](/sites/default/files/tex_cache/b865e455be4f65de51152ff92173e453.png)
после деления на принимает канонический вид:
![]() |
( 2.1) |
где
В уравнении (2.1) сделаем замену
![x=y-\frac{r}{3}](/sites/default/files/tex_cache/5ab2894b508ebfb43385033fd722a1a4.png)
и получим следующее приведённое уравнение:
![]() |
( 2.2) |
где
Число действительных корней приведённого уравнения (2.2) зависит от знака дискриминанта (табл. 2.10).
Корни приведённого уравнения могут быть рассчитаны по формулам Кардано:
![y_1=u+v,y_2=\frac{-(u+v)}{2}+\frac{(u-v)}{2}i\sqrt{3},y_3=\frac{-(u + v)}{2}-\frac{(u-v)}{2}i\sqrt{3}](/sites/default/files/tex_cache/a6f9beab61aea2d962153bbc0cf5fdba.png)
Дискриминант | Количество действительных корней | Количество комплексных корнейth |
---|---|---|
D![]() |
1 | 3 |
D<0 | 3 | - |
Здесь
Далее представлен список команд (листинг 2.1), реализующий описанный выше способ решения кубического уравнения:
>>> function [ x1, x2, x3]=cub (a, b, c, d) r=b/a; s=c /a; t=d/a; p=(3*s-r ^2) /3; q=2*r ^3/27-r*s/3+t; D=(p/3) ^3+(q /2) ^2; u=(-q/2+ sqrt (D)) ^(1/3); v=(-q/2-sqrt (D)) ^(1/3); y1=u+v; y2=-(u+v ) /2+(u-v ) /2*i*sqrt ( 3 ); y3=-(u+v ) /2 -(u-v ) /2*i*sqrt ( 3 ); x1=y1-r / 3; x2=y2-r / 3; x3=y3-r / 3; endfunction % Вычисляем корни уравненияЛистинг 2.1. Нахождение корней кубического уравнения (пример 2.1).>>> [x1, x2, x3]=cub(3, -2, -1, -4) x1 = 1.4905 x2 = -0.41191 + 0.85141i x3 = -0.41191 - 0.85141i