Scilab: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 1429:
 
==== Математическая функция ====
В Scilab есть предопределенные математические функции, такие как тригонометрические, экспонента и другие. Но что, если вам необходимо определить собственную функцию? Далее мы будем отличать математические функции и программируемые функции (будут рассмотрены позже). Разница между ними заключается в том, что программируемые функции призваны реализовывать некоторый алгоритм, в то время как математическая функция отражает связь между множеством аргументов и множеством значений функции.
 
Отметим, что математическую функцию можно объявить через программирование, но так как обычно ее тело состоит из одной строчки, то рациональнее всего объявлять ее через специальную функцию '''deff()'''. Общий синтаксис имеет вид
Строка 1476:
-->deff('[x y]=f(z,u)',['x=z^2-u';'y=u^3'])
</source>
Созданная функция переопределится, о чем вам скажет предупреждающее сообщение. Если вы не хотите постоянно видеть это предупреждение, то воспользуйтесь функцией '''funcprot(0)'''.

Этой строкой мы создали сложную функцию, которая принимает уже два обязательных аргумента и возвращает вектор результатов. Функция сложная потому, что ее тело состоит уже из двух строк. Обратите внимание, что тело сложной функции должно передаваться '''deff()''' вектором-столбцом, каждая строка которого является инструкцией, записываемой строковым типом данных.
 
Вызовем нашу функцию
Строка 1484 ⟶ 1486 :
2.
</source>
Очевидно, что мы получили не то, что хотели, ведь функция должна была вернуть вектор. К сожалению, в данном случае ''ans'' не переопределилась автоматически системой в вектор и был записан только результат расчета переменной x, потому что при объявлении в '''deff()''' мы егоее записали первымпервой. Чтобы получить ответ целиком, мы должны слева от вызова явно показать вектор. В этом случае мы должны объявить некоторые переменные, в которые будет записываться результат, либо воспользоваться переменной ''ans'' вот так
<source lang=Scilab>
-->[ans ans]=f(2,2)