Как записать ln в scilab

от admin

Глава 4. Встроенные функции в Scilab

Система Scilab имеет достаточный набор встроенных функций. В него входят:

Та б л и ц а 4 . 1

Встроенные функции Scilab

Область определения x

x задается в радианах.

x задается в радианах.

х задается в радианах.

х задается в радианах.

результат — в ра-

результат — в ра-

результат — в ра-

И.С. Тропин, О.И. Михайлова, А.В. Михайлов Численные и технические расчеты в среде Scilab

П р о д о л же н и е та б л . 4 . 1

Для примера вычислим значение выражения с = cos x y log 10 e y x при x= 4,5, y= 8,09.

В приведенной выше таблице области определения функций соответствуют правилам, принятым в школе. Однако Scilab способен вычислить, например, квадратный корень или логарифм и для отрицательных чисел. В этом случае ответом будет так называемое комплексное число. Если попытаться вычислить, например, lg( − 10 ), то Scilab выдаст в качестве ответа 1. 1.3643764 i . Поскольку комплексный анализ в школе не изучается, то получение ответов вида a bi , где а и b – некоторые числа, будет означать ошибку либо в условии задачи, либо в ходе ее решения.

Несколько необычным, пожалуй, может показаться поведение функции atan( x ). В качестве ответа эта функция выдает углы только из первого и четвертого квадранта. Если требуется получить значение угла в правильном квадранте, следует использовать разновидность функции арктангенса вида atan( y, x ), где y — синус угла или длина противолежащего катета в прямоугольном треугольнике, x — косинус угла или длина прилежащего катета. Область значений этой функции нахо-

дится в диапазоне ( − ; ].

Задание для самоконтроля:

И.С. Тропин, О.И. Михайлова, А.В. Михайлов Численные и технические расчеты в среде Scilab

1. Вычислите значение выражения sin e 6 ln 7 .

2. Вычислите значение выражения arctg 3 3 3 .

3. Вычислите значение выражения log 3 e 7 .

4.2. Функция вывода на экран printf

Функция printf служит для вывода на экран значений переменных и текстовых комментариев. Формат вывода определяется аргументами функции. Назначение и использование printf в Scilab полностью аналогично использованию одноименной функции в языке C. Читатель, знакомый с языком C, может пропустить этот раздел.

Обращение к printf выглядит следующим образом:

printf(»текст для вывода %символ1 %символ 2 . %символ n’ ‘,переменная1,переменная2. переменная n )

В результате обращения к функции printf на экран вводится текст, указанный в кавычках, и значения переменных

(переменная1,переменная2. переменная n ) , на месте соответствующих символов (%символ1 %символ2 . %символ n ) , определяющих формат вывода. Значение переменной будет находиться в той части выведенного текста, где находится соответствующий ей символ. Символ всегда ставится после знака % . При вызове функции printf используются символы s и f . Символ s используется, если переменная, значение которой необходимо вывести, содержит строку символов. Если переменная содержит число, используется символ f . Запись % .nf означает, что число должно быть выведено с n знаками после запятой. Текст, содержащийся в кавычках, выводится без изменений, а на месте символов выводятся значения соответствующих переменных. Текст, содержащийся в кавычках, выводится в виде одной строки. Если есть необходимость перенести часть текста на следующую строку, то перед этим участком текста необходимо ввести символ \ n . Это неотображаемая «буква», которая вызывает перемещение курсора в начало следующей строки.

Рассмотрим примеры использования printf .

Зададим переменную h, в которой будет храниться строка символов variable и выведем значение переменной на экран при помощи функции printf (Листинг 9).

И.С. Тропин, О.И. Михайлова, А.В. Михайлов Численные и технические расчеты в среде Scilab

variable —>printf(»text: %s»,h)

В данном случае первая строка определяет переменную h для хранения строки символов — variable. При вызове функции printf текстом для ввода является запись «text:». Символ s в кавычках означает, что на его месте будет выведено значение переменной, содержащей строку символов. После кавычек указана переменная — h , именно ее значение выведено в тексте на месте % s .

Выведем на экран значения числовых переменных в сочетании с текстом (Листинг 10).

—>printf(»znachenie d — %.5f \n e=%.7f» ,d, %e)

znachenie d — 3.61283

При вызове функции printf текстом для вывода является запись: znachenie d — e= , она будет выведена без изменений. В кавычках содержатся символы %.5f и %.7f , это означает, что на их месте будут выведены значения числовых переменных с пятью и семью знаками после запятой соответственно. После кавычек через запятую указаны имена переменных, их значения будут выведены в тексте на месте символов %.5f и %.7f . Переменная d указана первой, соответственно ее значение будет выведено на месте первого символа — %.5f , а значение переменной %e — на месте второго. В кавычках также присутствует символ \ n , как видно, текст, стоящий после него, перенесен на следующую строку.

П р и м е ча н и е : Если необходимо вывести на экран значение математического выражения, то это выражение можно поставить после кавычек вместо имени переменной. Значение выражения будет вычислено и выведено на месте соответствующего символа (Листинг 11). При этом значение результата вычисления не будет присвоено никакой переменной.

И.С. Тропин, О.И. Михайлова, А.В. Михайлов Численные и технические расчеты в среде Scilab

Символ %.5 f в кавычках означает, что на его месте на экран предполагается вывести число с пятью знаками после запятой. После кавы-

чек указано выражение — деление 1 3 . Его значение вычисляется и вы-

водится на экран на месте соответствующего символа. При этом значение вычисления не присваивается никакой переменной.

Основные конструкции языка

В Scilab для обозначения распространенных математических констант используются следующие обозначения:

%i — мнимая единица \( \sqrt <-1>\) .

%e – число \( e \) (основание натурального логарифма);

%t или %T – логическая единица, .истина. (.true.);

%f или %F – логический нуль, .ложь. (.false.);

%z – полином с единственным нулевым корнем и аргументом ;

%s – полином с единственным нулевым корнем и аргументом .

1.2 Вещественные числа и особенности записи

Прежде всего, отметим, что Scilab – чувствителен к регистру, то есть, запись «t» и «T» воспринимается в данном математическом пакете, как задание двух различных переменных. (листинг 1).

Листинг 1. Вычисление функций \(sin(t)\) и \(sin(T)\).

Важно, что в мат. пакете Scilab нет различия между целыми и вещественными числами. Разделителем дробной части, по традиции, служи точка «.», то есть, для записи числа 4,5 в Scilab необходимо набрать 4.5, а для записи числа в экспоненциальной форме с плавающей точкой используется формула \( me \pm p \), где m – мантиса, p – порядок. Так, для приведения числа \( 10^ <-4>\) к экспоненциальному виду следует записать: \( 10e-4 \).

1.3 Комментарии в Scilab

Для лучшей читаемости кода, в Scilab как и в других языках, предусмотрены комментарии.

Для обозначения однострочного комментария используется двойной слэш // и конструкция /**/ — для многострочного (листинг 2).

Листинг 2. Использование комментариев в Scilab.

Листинг 2. Использование комментариев в Scilab.

Элементарные математические функции

В таблице 1 приведены наиболее часто используемые математические функции.

Таблица 1. Элементарные математические функции.

Таблица 1. Элементарные математические функции.

Для демонстрации синтаксиса языка, вычислим значение сложного математического выражения \( z= \sqrt< | cos(<2y\over x>) | >e^ \), содержащего радикал, модуль, экспоненциальную и периодическую функции (листинг 3)

Листинг 3. Вычисление математического выражения в командном окне Scilab.

Листинг 3. Вычисление математического выражения в командном окне Scilab.

Отметим, что на данном этапе все вычисления производятся в командном окне.

Basic Mathematical Functions in Scilab

Even if it’s capable of very complex numerical computations, Scilab can be used only as a simple or scientific calculator. The most common functions are those related to trigonometry, logarithms and basic statistics. In the table below the basic mathematical functions defined in Scilab are explained.

General functions

Mathematical function Scilab function Mathematical formula
square root sqrt(x) \[ \begin \begin
\sqrt
\end \end \]
exponential exp(x) \[ \begin \begin
e^x
\end \end \]
natural algorithm log(x) \[ \begin \begin
ln(x)
\end \end \]
decimal logarithm log10(x) \[ \begin \begin
log(x)
\end \end \]
absolute value abs(x) \[ \begin \begin
\left | x \right |
\end \end \]

Trigonometry functions

Mathematical function Scilab function Mathematical formula
sine sin(x) \[ \begin \begin
sin(x), x \hspace <2mm>in \hspace <2mm>radians
\end \end \]
cosine cos(x) \[ \begin \begin
cos(x), x \hspace <2mm>in \hspace <2mm>radians
\end \end \]
tangent tan(x) \[ \begin \begin
tg(x), x \hspace <2mm>in \hspace <2mm>radians
\end \end \]
cotangent cotg(x) \[ \begin \begin
ctg(x), x \hspace <2mm>in \hspace <2mm>radians
\end \end \]
arc-sine asin(x) \[ \begin \begin
y = arcsin(x), x = sin(y)
\end \end \]
arc-cosine acos(x) \[ \begin \begin
y = arccos(x), x = cos(y)
\end \end \]
arc-tangent atan(x) \[ \begin \begin
y = arctg(x), x = tg(y)
\end \end \]
arc-cotangent acot(x) \[ \begin \begin
y = arcctg(x), x = ctg(y)
\end \end \]
hyperbolic sine sinh(x) \[ \begin \begin
sinh(x) = \frac><2>
\end \end \]
hyperbolic cosine cosh(x) \[ \begin \begin
cosh(x) = \frac + 1><2 \cdot e^x>
\end \end \]
hyperbolic tangent tanh(x) \[ \begin \begin
tanh(x) = \frac – 1> + 1>
\end \end \]
hyperbolic cotangent coth(x) \[ \begin \begin
coth(x) = \frac + 1> – 1>
\end \end \]
sinc sinc(x) \[ \begin \begin
sinc(x) = \frac
\end \end \]

It is important to keep in mind that the argument for the trigonometric functions should be in radians. To transform from degrees in radians we use the following formula:

Example, the sine function of an angle of 90°:

Statistical functions

Mathematical function Scilab function Description
minimum min(x) \[ \begin \begin
x = [x_1, x_2, …]
\end \end \]
maximum max(x) \[ \begin \begin
x = [x_1, x_2, …]
\end \end \]
round round(x) \[ \begin \begin
outputs \hspace <2mm>the \hspace <2mm>closest \hspace <2mm>integer \hspace <2mm>of \hspace <2mm>x
\end \end \]
ceil ceil(x) \[ \begin \begin
outputs \hspace <2mm>the \hspace <2mm>integer \hspace <2mm>part \hspace <2mm>of \hspace <2mm>x + 1
\end \end \]
floor floor(x) \[ \begin \begin
outputs \hspace <2mm>the \hspace <2mm>integer \hspace <2mm>part \hspace <2mm>of \hspace <2mm>x
\end \end \]

In order to get used to Scilab basic functions try the examples below:

The best way to get use with the Scilab basic functions syntax, is to try a couple of mathematical expressions which should include basic, trigonometry and statistical functions. After some practice names and arguments of the functions will be easy to remember and use.

For any questions, observations and queries regarding Scilab variables use the comment form below.

Как записать ln в scilab

Система Scilab имеет достаточный набор встроенных функций. В него входят:

Та б л и ц а 4 . 1

Встроенные функции Scilab

Область определения x

x задается в радианах.

x задается в радианах.

х задается в радианах.

х задается в радианах.

результат — в ра-

результат — в ра-

результат — в ра-

И.С. Тропин, О.И. Михайлова, А.В. Михайлов Численные и технические расчеты в среде Scilab

П р о д о л же н и е та б л . 4 . 1

Для примера вычислим значение выражения с = cos x y log 10 e y x при x= 4,5, y= 8,09.

В приведенной выше таблице области определения функций соответствуют правилам, принятым в школе. Однако Scilab способен вычислить, например, квадратный корень или логарифм и для отрицательных чисел. В этом случае ответом будет так называемое комплексное число. Если попытаться вычислить, например, lg( − 10 ), то Scilab выдаст в качестве ответа 1. 1.3643764 i . Поскольку комплексный анализ в школе не изучается, то получение ответов вида a bi , где а и b – некоторые числа, будет означать ошибку либо в условии задачи, либо в ходе ее решения.

Несколько необычным, пожалуй, может показаться поведение функции atan( x ). В качестве ответа эта функция выдает углы только из первого и четвертого квадранта. Если требуется получить значение угла в правильном квадранте, следует использовать разновидность функции арктангенса вида atan( y, x ), где y — синус угла или длина противолежащего катета в прямоугольном треугольнике, x — косинус угла или длина прилежащего катета. Область значений этой функции нахо-

дится в диапазоне ( − ; ].

Задание для самоконтроля:

И.С. Тропин, О.И. Михайлова, А.В. Михайлов Численные и технические расчеты в среде Scilab

1. Вычислите значение выражения sin e 6 ln 7 .

2. Вычислите значение выражения arctg 3 3 3 .

3. Вычислите значение выражения log 3 e 7 .

4.2. Функция вывода на экран printf

Функция printf служит для вывода на экран значений переменных и текстовых комментариев. Формат вывода определяется аргументами функции. Назначение и использование printf в Scilab полностью аналогично использованию одноименной функции в языке C. Читатель, знакомый с языком C, может пропустить этот раздел.

Обращение к printf выглядит следующим образом:

printf(»текст для вывода %символ1 %символ 2 . %символ n’ ‘,переменная1,переменная2. переменная n )

В результате обращения к функции printf на экран вводится текст, указанный в кавычках, и значения переменных

(переменная1,переменная2. переменная n ) , на месте соответствующих символов (%символ1 %символ2 . %символ n ) , определяющих формат вывода. Значение переменной будет находиться в той части выведенного текста, где находится соответствующий ей символ. Символ всегда ставится после знака % . При вызове функции printf используются символы s и f . Символ s используется, если переменная, значение которой необходимо вывести, содержит строку символов. Если переменная содержит число, используется символ f . Запись % .nf означает, что число должно быть выведено с n знаками после запятой. Текст, содержащийся в кавычках, выводится без изменений, а на месте символов выводятся значения соответствующих переменных. Текст, содержащийся в кавычках, выводится в виде одной строки. Если есть необходимость перенести часть текста на следующую строку, то перед этим участком текста необходимо ввести символ \ n . Это неотображаемая «буква», которая вызывает перемещение курсора в начало следующей строки.

Рассмотрим примеры использования printf .

Зададим переменную h, в которой будет храниться строка символов variable и выведем значение переменной на экран при помощи функции printf (Листинг 9).

И.С. Тропин, О.И. Михайлова, А.В. Михайлов Численные и технические расчеты в среде Scilab

В данном случае первая строка определяет переменную h для хранения строки символов — variable. При вызове функции printf текстом для ввода является запись «text:». Символ s в кавычках означает, что на его месте будет выведено значение переменной, содержащей строку символов. После кавычек указана переменная — h , именно ее значение выведено в тексте на месте % s .

Выведем на экран значения числовых переменных в сочетании с текстом (Листинг 10).

znachenie d — 3.61283

При вызове функции printf текстом для вывода является запись: znachenie d — e= , она будет выведена без изменений. В кавычках содержатся символы %.5f и %.7f , это означает, что на их месте будут выведены значения числовых переменных с пятью и семью знаками после запятой соответственно. После кавычек через запятую указаны имена переменных, их значения будут выведены в тексте на месте символов %.5f и %.7f . Переменная d указана первой, соответственно ее значение будет выведено на месте первого символа — %.5f , а значение переменной %e — на месте второго. В кавычках также присутствует символ \ n , как видно, текст, стоящий после него, перенесен на следующую строку.

П р и м е ча н и е : Если необходимо вывести на экран значение математического выражения, то это выражение можно поставить после кавычек вместо имени переменной. Значение выражения будет вычислено и выведено на месте соответствующего символа (Листинг 11). При этом значение результата вычисления не будет присвоено никакой переменной.

И.С. Тропин, О.И. Михайлова, А.В. Михайлов Численные и технические расчеты в среде Scilab

Символ %.5 f в кавычках означает, что на его месте на экран предполагается вывести число с пятью знаками после запятой. После кавы-

чек указано выражение — деление 1 3 . Его значение вычисляется и вы-

водится на экран на месте соответствующего символа. При этом значение вычисления не присваивается никакой переменной.

Как записать выражение (1/x)*ln(x+2) ?

Как записать выражение?
Ребята помогите оч прошу, срочно срочно надо!! Как записать выражение ? S=1в кубе+2 в кубе+3 в.

Как записать выражение
Здравствуйте! Подскажите как записать ln^2(x*y*z) в паскале

Как записать выражение?
не знаю как записать x,a,h(x,a) помогите плз, формулу сам сделаю

Как записать выражение?
Как это в делфи перевести? https://www.cyberforum.ru/attachments/410173d1402516187

Учебное пособие Москва 2008 Тропин И. С., Михайлова О. И., Михайлов А. В. Т 742

Система Scilab имеет достаточный набор встроенных функций. В него входят:

Встроенные функции Scilab

Область определения x

Диапазон возвращаемых значений

x задается в радианах.

x задается в радианах.

х задается в радианах.

х задается в радианах.

результат — в радианах

результат — в радианах

результат — в радианах

Число е, возведенное в степень х

Продолжение табл. 4.1

Натуральный логарифм x

Логарифм x по основанию 2

Десятичный логарифм х

Квадратный корень из х

Для примера вычислим значение выражения при x= 4,5, y= 8,09.

В приведенной выше таблице области определения функций соответствуют правилам, принятым в школе. Однако Scilab способен вычислить, например, квадратный корень или логарифм и для отрицательных чисел. В этом случае ответом будет так называемое комплексное число. Если попытаться вычислить, например, lg(), то Scilab выдаст в качестве ответа . Поскольку комплексный анализ в школе не изучается, то получение ответов вида , где и – некоторые числа, будет означать ошибку либо в условии задачи, либо в ходе ее решения.

Несколько необычным, пожалуй, может показаться поведение функции atan( x ). В качестве ответа эта функция выдает углы только из первого и четвертого квадранта. Если требуется получить значение угла в правильном квадранте, следует использовать разновидность функции арктангенса вида atan( y, x ), где y — синус угла или длина противолежащего катета в прямоугольном треугольнике, x — косинус угла или длина прилежащего катета. Область значений этой функции находится в диапазоне (;].

Задание для самоконтроля:

Вычислите значение выражения .

Вычислите значение выражения .

Вычислите значение выражения .

Функция вывода на экран printf

Функция printf служит для вывода на экран значений переменных и текстовых комментариев. Формат вывода определяется аргументами функции. Назначение и использование printf в Scilab полностью аналогично использованию одноименной функции в языке C. Читатель, знакомый с языком C, может пропустить этот раздел.

Обращение к printf выглядит следующим образом:

printf(»текст для вывода %символ1 %символ 2 . %символ n’ ‘,переменная1,переменная2. переменная n )

В результате обращения к функции printf на экран вводится текст, указанный в кавычках, и значения переменных (переменная1,переменная2. переменная n ) , на месте соответствующих символов (%символ1 %символ2 . %символ n ) , определяющих формат вывода. Значение переменной будет находиться в той части выведенного текста, где находится соответствующий ей символ. Символ всегда ставится после знака % . При вызове функции printf используются символы s и f . Символ s используется, если переменная, значение которой необходимо вывести, содержит строку символов. Если переменная содержит число, используется символ f . Запись % .nf означает, что число должно быть выведено с n знаками после запятой. Текст, содержащийся в кавычках, выводится без изменений, а на месте символов выводятся значения соответствующих переменных. Текст, содержащийся в кавычках, выводится в виде одной строки. Если есть необходимость перенести часть текста на следующую строку, то перед этим участком текста необходимо ввести символ \ n . Это неотображаемая «буква», которая вызывает перемещение курсора в начало следующей строки.

Рассмотрим примеры использования printf .

Зададим переменную h, в которой будет храниться строка символов variable и выведем значение переменной на экран при помощи функции printf (Листинг 9).

В данном случае первая строка определяет переменную h для хранения строки символов — variable. При вызове функции printf текстом для ввода является запись «text:». Символ s в кавычках означает, что на его месте будет выведено значение переменной, содержащей строку символов. После кавычек указана переменная — h , именно ее значение выведено в тексте на месте % s .

Выведем на экран значения числовых переменных в сочетании с текстом (Листинг 10).

znachenie d — 3.61283

При вызове функции printf текстом для вывода является запись: znachenie d — e= , она будет выведена без изменений. В кавычках содержатся символы %.5f и %.7f , это означает, что на их месте будут выведены значения числовых переменных с пятью и семью знаками после запятой соответственно. После кавычек через запятую указаны имена переменных, их значения будут выведены в тексте на месте символов %.5f и %.7f . Переменная d указана первой, соответственно ее значение будет выведено на месте первого символа — %.5f , а значение переменной %e — на месте второго. В кавычках также присутствует символ \ n , как видно, текст, стоящий после него, перенесен на следующую строку.

Примечание: Если необходимо вывести на экран значение математического выражения, то это выражение можно поставить после кавычек вместо имени переменной. Значение выражения будет вычислено и выведено на месте соответствующего символа (Листинг 11). При этом значение результата вычисления не будет присвоено никакой переменной.

Символ %.5 f в кавычках означает, что на его месте на экран предполагается вывести число с пятью знаками после запятой. После кавычек указано выражение — деление . Его значение вычисляется и выводится на экран на месте соответствующего символа. При этом значение вычисления не присваивается никакой переменной.

Задания для самоконтроля:

Выведите на экран:

Текст: znachenie funczii.

Значение числа с тремя знаками после запятой.

Значение переменной h , предварительно присвоив ей значение .

Функции, определяемые пользователем

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

Рассмотрим, для начала, описание функций с использованием оператора deff . В качестве примера используем deff для определения функции двух переменных:

Для вычисления значения этой функции необходимо задавать пары значений x и y. В программировании говорят, что функция имеет два входных параметра. В математике значением функции является число, в программировании это число должно быть присвоено переменной, определенной внутри функции. Такую переменную называют выходным параметром.

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

Заметим, что в Scilab функция может возвращать более одного значения. В этом случае каждому возвращаемому значению должен быть поставлен в соответствие выходной параметр. Такие функции в программировании называют подпрограммами. Однако, программисты часто используют термины «функция» и «подпрограмма» как синонимы.

Приступая к разработке функции, необходимо определить количество входных и выходных параметров, а также придумать для функции имя. Назовем создаваемую функцию fun . Рассмотрим теперь синтаксис оператора deff , которому необходимо сообщить накопленную информацию о функции. Его общее выражение может быть представлено следующим образом:

Отсюда видно, что deff имеет два параметра, и эти параметры являются строками символов. По правилам Scilab первый параметр строка1 несет в себе информацию о входных и выходных параметрах, а так же, об имени функции. В нашем случае строка1 может быть записана следующим образом:

где c – переменная, которая представляет собой выходной параметр; fun – имя функции; две переменных в круглых скобках, разделенные запятыми, задают имена входных параметров. Во втором параметре строка2 следует написать выражение для функции и присвоить вычисленное значение выходному параметру. При этом должны использоваться имена переменных, определенные в переменной строка1. В соответствии с этими правилами, второй параметр запишется в виде

В этой строке выходной параметр, названный c , в результате операции присваивания получит значение, вычисленное по заданной формуле. При вычислении используются входные параметры с именами x и y , указанные в параметре строка1.

Листинг 12 демонстрирует определение функции fun с помощью оператора deff и использование fun для вычисления значения при и .

Первая строка листинга содержит определение функции с помощью оператора deff . Во второй строке производится присваивание значения и переменным а и b соответственно. Причем, результаты выполнения этих двух операций не отображаются на экране, поскольку запись каждой из них заканчивается символом «;». Далее, переменной g присваивается результат выполнения функции fun . Первым параметром при вызове функции указано значение переменной a , вторым – значение переменной b .

Переменные, которые используются при вызове функции, в данном случае a и b , называют фактическими параметрами. Входные параметры x и y , определенные внутри функции, называют формальными параметрами. При вызове функции в Scilab происходит неявное присваивание формальным параметрам значений параметров фактических.

Способ передачи входных и выходных параметров при вызове функций с использованием неявного присваивания в программировании называют передачей по значению.

После того как значение переменной g будет определено, оно отображается на экране, поскольку завершающий символ «;» в последнем выражении отсутствует.

При вызове функции в качестве фактических аргументов, можно сразу указывать числовые значения, так что предыдущий фрагмент можно записать короче:

Как видно, упрощение программы не повлияло на ответ, он остался тем же, что и на предыдущем листинге.

Общий вид оператора deff для определения функции с несколькими выходных параметрами, приведен в Приложении A.

Другой способ задания функции — использование служебного слова function. Преимущество этого способа заключается в том, что размер описания функции не ограничен одной строкой. Рассмотрим простой пример создания функции, вычисляющей значение квадрата аргумента.

Следуя рецепту, приведенному выше, определяем, что функция имеет один входной и один выходной параметр, дадим функции имя f . Описание функции приведено в Листинге 14.

Из листинга видно, что описание функции начинается со служебного слова function (функция) и завершается словом endfunction (конец функции). Первое выражение, следующее за function , является полным аналогом параметра строка1 в операторе deff , с той лишь разницей, что выражение не требуется заключать в кавычки. Так что запись c=f ( x ) означает, что выходной параметр у функции один, и он имеет имя c , функция называется f , и она имеет один формальный входной параметр x .

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

При задании функции вышеописанными способами функция является внутренней функцией текущего сеанса. Если она понадобится в следующем сеансе, ее придется описать снова.

Способы, рассматриваемые ниже, позволяют задавать внешние функции, которые могут быть использованы в любом сеансе. Эти приемы окажутся особенно полезными, если создаваемая функция будет часто использоваться в работе.

Отличия в подготовке внешних функций начинаются с того, что определение функции нужно набирать не в командной строке, а в текстовом редакторе, например встроенном редакторе Scilab, называемом SciPad.

Набранный текст необходимо сохранить в файле с произвольным именем и расширением sce . SciPad предлагает это расширение по умолчанию. Теперь, для того чтобы использовать функцию в сеансе можно загрузить ее из файла. Это можно сделать следующими способами:

Выполнить в командной строке команду exec. Ее единственным аргументом является строка с указанием положения сохраненного файла в файловой системе. Например, если файл f.sce был сохранен в домашнем каталоге пользователя, то команда загрузки будет выглядеть следующим образом: exec(‘

/f.sce’) . После этого функция, описанная в файле, может быть вызвана в текущей сессии. Листинг 15 демонстрирует еще один пример загрузки подпрограммы.

polinom ne imeet nulei

polinom razlozen na mnojiteli

В этом примере загрузка производится из файла RZL.sce, находящегося в подкаталоге pr пользовательского каталога. Текст подпрограммы RAZL, реализующей разложение на множители многочлена второй степени, приведен в Листинге 16. Реализация функции RAZL будет обсуждаться в конце раздела.

Использовать графический интерфейс редактора SciPad. Для этого нужно запустить редактор SciPad, нажав мышью кнопку Edit(Редактор) в верхней части основного окна Scilab, открыть в редакторе текстовый файл, содержащий подпрограмму. Затем в меню SciPad нажать мышью кнопку Execute(Выполнить) и в выпадающем меню выбрать пункт Load into Scilab (Загрузить в Scilab). В результате текст программы, отображающийся в окне редактора, будет выполнен в основном окне. С этого момента функция может использоваться в текущем сеансе.

Во время сеанса, последовательно выполняя команды в командной строке, можно видеть результат выполнения каждой введенной команды. В зависимости от результата можно планировать ту или иную последовательность действий.

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

Таким образом, при написании функций необходим программный инструмент, который позволял бы анализировать значения переменных (выражений) и априорно задавать ход вычислений в зависимости от их возможных значений.

Рассмотрим, например, задачу о разложении на множители полинома второй степени вида

И зададимся целью написать такую функцию в Scilab. Пусть функция в качестве входных параметров получает коэффициенты a 0 , a 1 и a 2 . Ее задачей будет печатать представления полинома на экране в виде.

где , — нули полинома.

Разложение на множители требует определения нулей полинома, которые находятся решением квадратного уравнения. Существование и количество корней такого уравнения в школьной программе ставятся в зависимость от значения дискриминанта. Это означает, что внутри функции нужно вычислить дискриминант D , затем, основываясь на его значении, принять решение о дальнейших действиях. Если окажется, что , то следует вычислить корни и напечатать результат разложения полинома на множители на экране. В противном случае () необходимо вывести сообщение об отсутствии решения.

Пример реализации функции разложения на множители квадратичного полинома приведен в Листинге 16.

1. function d=RAZL(a0,a1,a2)

7. d=’polinom razlojen na mnojiteli’;

9. else d=’polinom ne imeet nulei’;

Строки программы пронумерованы, но эти номера не являются частью программы и приведены для удобства чтения.

Из первой строки программы можно видеть, что функция имеет один выходной параметр, названный d . Функция названа RAZL . Функция имеет три формальных входных параметра с именами .

В строке 2 с использованием функции printf на экран выводится исходное выражение полинома.

В строке 3 переменной D присвоено значение дискриминанта квадратного уравнения, вычисленное по значениям формальных параметров.

Теперь ход дальнейших вычислений зависит от значения D . Эта зависимость реализована в конструкции условного выполнения if – then – else – end, которая занимает сроки 4 — 10.

Для выяснения семантики этого выражения приведем тот же фрагмент программы, заменив английские служебные слова if-then. их русским переводом (Листинг 17).

7. d=’polinom razlojen na mnojiteli’;

9. ИНАЧЕ d=’polinom ne imeet nulei’;

При такой записи легко видеть, что после слова if (ЕСЛИ) по смыслу должно следовать условие.

Операция отношения «больше или равно» в Scilab записывается двумя символами >=, так что в данном примере условие имеет вид D>= 0.

Если условие окажется истинным, выполняется ветвь then (TO). В данном примере она содержит вычисление двух корней уравнения, их значения присваиваются переменным x 1 и x 2 (строки 5 и 6). В строке 7 выходной параметр функции d получит строковое значение ‘polinom razlojen na mnojiteli’. Функция printf в строке 8 напечатает символ «=» и, затем, полином в виде .

На этом ветвь then (ТО) завершится и выполнение программы продолжится с первого оператора после слова end (КОНЕЦ). В данном случае функция завершит свою работу, значение строковой переменной d будет передано вызывающей программе.

При невыполнении условия, следующего за оператором if (ЕСЛИ), выполнение программы переходит в ветвь else (ИНАЧЕ). В этой ветви корни уравнения не вычисляются. Переменной d присваивается строка ‘polinom ne imeet nulei’.

Описание альтернативных ветвей выполнения программы завершается словом end (КОНЕЦ).

Пример выполнения функции RAZL представлен в Листинге 15.

Задания для самоконтроля:

Задайте пользовательскую функцию для вычисления , входными параметрами функции должны являться значение числа x значение числа n .

Задайте пользовательскую функцию для вычисления проекций вектора по его длине и углу между направлением вектора и положительным направлением оси Ox . Входными параметрами функции должны являться значение длины вектора, угол между направлением вектора и положительным направлением оси Ox .

Основные конструкции языка

В Scilab для обозначения распространенных математических констант используются следующие обозначения:

%e – число \( e \) (основание натурального логарифма);

%t или %T – логическая единица, .истина. (.true.);

%f или %F – логический нуль, .ложь. (.false.);

%z – полином с единственным нулевым корнем и аргументом ;

%s – полином с единственным нулевым корнем и аргументом .

1.2 Вещественные числа и особенности записи

Прежде всего, отметим, что Scilab – чувствителен к регистру, то есть, запись «t» и «T» воспринимается в данном математическом пакете, как задание двух различных переменных. (листинг 1).

Листинг 1. Вычисление функций \(sin(t)\) и \(sin(T)\).

Листинг 1. Вычисление функций \(sin(t)\) и \(sin(T)\).

Важно, что в мат. пакете Scilab нет различия между целыми и вещественными числами. Разделителем дробной части, по традиции, служи точка «.», то есть, для записи числа 4,5 в Scilab необходимо набрать 4.5, а для записи числа в экспоненциальной форме с плавающей точкой используется формула \( me \pm p \), где m – мантиса, p – порядок. Так, для приведения числа \( 10^ \) к экспоненциальному виду следует записать: \( 10e-4 \).

1.3 Комментарии в Scilab

Для лучшей читаемости кода, в Scilab как и в других языках, предусмотрены комментарии.

Для обозначения однострочного комментария используется двойной слэш // и конструкция /**/ — для многострочного (листинг 2).

Листинг 2. Использование комментариев в Scilab.

Листинг 2. Использование комментариев в Scilab.

Элементарные математические функции

В таблице 1 приведены наиболее часто используемые математические функции.

Таблица 1. Элементарные математические функции.

Таблица 1. Элементарные математические функции.

Для демонстрации синтаксиса языка, вычислим значение сложного математического выражения \( z= \sqrt ) | >e^ \), содержащего радикал, модуль, экспоненциальную и периодическую функции (листинг 3)

Листинг 3. Вычисление математического выражения в командном окне Scilab.

Листинг 3. Вычисление математического выражения в командном окне Scilab.

Отметим, что на данном этапе все вычисления производятся в командном окне.

Читать:
Даны точки докажите что треугольник равнобедренный

Похожие статьи