Учебно-методическое пособие к практикуму по курсу «Пакеты компьютерной алгебры»


Результат:  s = 4 5 2  rows = 4  cols = 5



Pdf көрінісі
бет15/15
Дата26.11.2023
өлшемі1,85 Mb.
#128313
түріУчебно-методическое пособие
1   ...   7   8   9   10   11   12   13   14   15
Байланысты:
матлаблегкие задачи (1) (1)

 
Результат
s = 4 5 2 
rows = 4 
cols = 5
 
Пример 4. Количество входных параметров. 
Тип файла – функция. Имя файла – testarg1.m
function c = testarg1(a,b) 
if (nargin == 1) 
c = a.^2; 
elseif (nargin == 2) 


66 
c = a + b; 
end
Вызовы функции:
estarg1([1 2]) 
testarg1([1 2],[3 4])
 
Результат выполнения: 
ans = 1 4 
ans = 4 6
Пример 5. Суммирование объектов double в массиве ячеек 
varargin
function s = add(s,varargin) 
for n = 1:nargin-1 
s = s + varargin{n}; 
end 
Пример 6.
О массиве ячеек 
varargin
входных параметров переменной длины 
function b = blue(varargin) 
if nargin < 1 
varargin = {’rgb’}; 
end 
switch(varargin{1}) 
case ’rgb’ 
b = [0 0 1]; 
case ’hsv’ 
b = [2/3 1 1]; 
otherwise 
error('Цветовая модель не определена') 
end 
Аноним и функция-строка 
Помимо описанных конструкций в ML используются анонимы. Это не-
поименованные процедуры-функции одного или нескольких аргументов. 


67 
Синтаксис анонимов сводится к выражению, левая часть которого является 
именем процедуры, правая состоит из определяющего символа @, после ко-
торого в круглых скобках перечисляются один или несколько аргументов 
функции, а затем приводится её аналитическое представление, зависящее от 
этих аргументов, например, 
sincos = @(x) sin(x) + cos(x); 
w = @(x,t,c) cos(x-c*t); 
Заметим, что анонимы могут быть аргументами функций, например, fzero
fzero( @(x) sin(x)+cos(x), 0 ). 
Анонимную функцию можно определять прямо в командной строке ML или в 
пределах функции или скрипта. То есть, можно создать простые функции без 
необходимости создания файла специально для них.
Конструкция 
inline
также обеспечивает быстрое создание функции одной 
или нескольких переменных в соответствие с предлагаемым синтаксисом: 
Namefunction=inline(expression_string) 
Пример 5. Процедура 
inline
 
g=inline('2*cos(x)-sin(y)') 
g(pi/8,pi/12) 
symvar(g) 
% массив ячеек, содержит аргументы функции 
g{1},g{2} 
% аргументы 
Подпроцедуры 
Помимо функций и процедур иногда целесообразно определить 
функцию, которая нужна только для выполнения конкретной процедуры, то-
гда она должна быть записана в том же файле, что и головная процедура, и 
является подпроцедурой (подфункцией). Подпроцедура «невидима» для ос-
тальных программ или процедур. 


68 
Пример 6. Процедуры и подфункции
 
function [x1,x2] = quadform(a,b,c) 
d = discrim(a,b,c); 
x1 = (-b + d) / (2*a); 
x2 = (-b - d) / (2*a); 
end 
% quadform() 
function D = discrim(A,B,C) 
D = sqrt(Bˆ2 - 4*A*C); 
end 
% discrim()


69 
Литература 
1.
Говорухин, В. Компьютер в математическом исследовании: Учеб.курс - 
СПб. *и др.+: Питер, 2001. - 624 с. 
2.
А. М. Половко, П. Н. Бутусов. MATLAB для студента Санкт-Петербург 
БХВ-Петербург 2005 320 с. (19 экз) 
3.
Таранчук В.Б. Основные функции систем компьютерной алгебры. , 
2013. — 59 p. 
4.
Дьяконов В.П. MatLab:Учебный курс. СПб..: 2001 
5.
Джон Г. Мэтьюз,КуртисД.Финк.Численные методы. Использование 
MatLab.И. «Вильямс »Москва, Санкт-Петербург, Киев.2001, 713 с. 
6.
Дьяконов В. П. Энциклопедия компьютерной алгебры. ДМК-Пресс, 
2009. — С. 1264. — ISBN 978-5-94074-490-0. 


Достарыңызбен бөлісу:
1   ...   7   8   9   10   11   12   13   14   15




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет