Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Режим программирования



Для перехода в режим программирования в окне управления выбираем пункт File и входим в редактор MatLab'а: New (создать новый М-файл) или Open(открыть существующий файл с расширением .m). В дальнейшем может производиться обычный набор текста программы или его корректура и действия в соответствии с меню (сохранение под текущим или другим именем, запуск на исполнение в обычном и отладочном режимах и др.).

Различают два вида М-файлов: М-сценарии и М-функции.

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

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

Заголовок М-функции имеет вид:

function [<список выходных переменных>]=

<имя функции> (<список входных переменных>)

например, функция вычисления факториала положительного числа и его обратной величины может быть описана файлом fact.m:

function [f,g]=fact(n) % факториал и обратная величина

f=prod (1:n);

g=1/f;

Кроме использованных выше операторов присваивания, программирование в MatLab'е допускает и ряд других традиционных для программных сред операторов.

Условный оператор выступает в одной из следующих форм:

if <условие> if <условие> if<условие>

<команды> <команды> <команды>

end else elseif <условие>

<команды> <команды>

End else

<команды>

End

В роли условия может использоваться любое логическое выражение, построенное на основе операций отношения и логических. Если значение этого выражения является массивом, то условие считается истинным, если все его элементы истинны (истина - 1, ложь - 0).

Оператор цикла с заданным числом повторений, в основном используемый в форме:

for V=A :H:B for V=A:B

<команды> <команды>

End end

(V -переменная/параметр цикла, A,B - начальное и конечные значения; H - приращение, по умолчанию 1). Допускаются и вложенные циклы, например:

for i=1:n for i=1:n-1

for j=1:m for k=i+1:n

a(i,j)=x(i)^j; if a(i) < a(k)

end m=a(i)

end a(i)=a(k)

a(k)=m

end

end

end

В заголовке цикла можно использовать одномерный массив. Так цикл

k=1;

for i=[0 5 7]

x(k)=2^i;

k=k+1;

end

формирует массив Х=[1 32 128].

Оператор цикла с предусловием имеет традиционную конструкцию:

while <условие>

<команды>

End

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

while a<1

n=n+1

if n>250

break

end ...

Оператор переключения обобщает условный оператор на случай более двух условий и имеет конструкцию:

switch <выражение>

case <значение 1>

<команды>

case <значение 2>

<команды>

. . . . .

otherwise % может отсутствовать

<команды>

End

Контрольные значения проверяются на равенство и могут задаваться и списком:

swith k

case 0

t=1

case (1, 2,5)

t=2

otherwise

t=0

end

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

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

Ввод с клавиатуры реализуется командой вида

<переменная>= input ('подсказка')

Например,

" x=input(' степень полинома ');
степень полинома 3

Приостановка выполнения программы может быть предусмотрена включением в текст команды pause (приостановка до нажатия любой клавиши), pause (n) (приостановка на n сек),keyboard (приостановка с возможностью выполнять практически любые команды и последующим возвратом в программу командой return ).

Можно построить выбор варианта с клавиатуры созданием меню:

<переменная>=menu ('заголовок','выбор1','выбор2',...)

Например, команда:
k=menu('Использовать метод','Гаусса','Краута','простой итерации') создаст на экране всплывающее меню с указанными пунктами-клавишами и щелчок по клавише задаст значение переменной k, рав-ное 1, 2 или 3.

Мы не останавливаемся на многообразии операторов, связанных с выводом на экран (вывод значения disp, форматированный вывод fprint), отладкой и сигнализацией об ошибках, анализом списка аргументов и др.

Приведем несколько простейших примеров использования программного режима.

Пример 1. Анализ скорости убывания элементов числовой последовательности

до значений, меньших 0.0001)

Чтобы с легкостью отыскивать значения элементов последовательности, опишем функцию (файл y.m):

function f=y(n)

if mod(n,2)==0

f=-1;

Else

f=1;

End

f=f/n^n;

End

и сценарий (файл limit1.m):

n=1 ;

while abs(y(n))>1e-4

n=n+1 ;

End

disp('Число элементов последовательности равно')

k=n

for x=1:k

Y(x)=y(x);

End

disp('Значения элементов последовательности')

Y

plot(1:k,Y, 'r-*') %Линия -сплошная(-)красная ®, маркеры(*)

Теперь можно в командной строке набрать вызов limit1, получая на экране число элементов последовательности k, значения элементов последовательности Y (n=1¸k) и "график" функции:

 

Число элементов последовательности равно k =6 Значения элементов последовательности
Y = 1.0000 -0.2500 0.0370 -0.0039 0.0003 -0.0000

 

Пример 2. Поиск оценки суммы ряда.

с точностью 10-6.

 

 

Файл limit2.m (сценарий):

y=1;

s=y;

m=1;

while abs(y)>1e-6

y=-y*(2*m-1)/(2*m+1).^2;

s=s+y;

m=m+1 ;

End

disp('Число слагаемых' )

disp( m-1)

disp('Оценка суммы')

disp(s)

В командной строке набираем limit2 , получая на экране число элементов отрезка суммы, превышающих 10-6 и саму оценку суммы:

Число слагаемых
Оценка суммы 0.90097107966794

 

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.