Главная страница

Практикум по матлабу. практикум по матлабу. Физических процессов с использованием


Скачать 1.13 Mb.
НазваниеФизических процессов с использованием
АнкорПрактикум по матлабу
Дата21.06.2021
Размер1.13 Mb.
Формат файлаpdf
Имя файлапрактикум по матлабу.pdf
ТипУчебное пособие
#219898
страница11 из 17
1   ...   7   8   9   10   11   12   13   14   ...   17
y = mxGetPr(plhs[0]);
/* Call the timestwo subroutine. */
timestwo(y,x);
}
Здесь описана функция timestwo, умножающая число на два, и функция mex-
Function, которая принимает входной аргумент x и возвращает выходной y. Аргу- ментами последней являются:
nlhs -
число выходных аргументов dll-функции
nrhs -
число входных аргументов
*plhs[ ] -
массив указателей на первые элементы выходных аргументов
*prhs[ ] -
массив указателей на первые элементы входных аргументов.
104

Имеется множество функций для передачи переменных разнообразных типов и вывода сообщений (например mxGetPr и mxGetPi -для получения указате- лей на реальную и мнимую часть входного массива, mxGetString -для получе- ния указателя на строку, mxGetN и mxGetM для получения размеров массива,
mxCreateNumericArray,
mxCreateDoubleMatrix, mxCreateString -для задания указателей на массивы,
матрицы и строки, и т.д. Полный список можно посмотреть в файле
\matlab5.2\help\techdoc\AP IREF \APIREF T OC.HT ML
Если откомпилировать этот файл, то функцию
timestwo можно будет вызы- вать из MATLAB. Формат вызова mex:
mex -setup
необходимо запускать после установки нового компилятора С (или фортрана), а также один раз после установки MATLAB.
mex file
компилирует file.c и создает file.dll.
Различные дополнительные ключи можно узнать, набрав
help mex в окне MATLAB.
105

Список литературы
[1]
Коткин Г.Л., Черкасский В.С. Численное моделирование физических про- цессов. Новосибирск: НГУ, 1998. 123 с.
[2]
Потемкин Г.В. Matlab 5 для студентов. М.: Диалог-МИФИ, 1998. 314 с.
[3]
Потемкин Г.В. Система MATLAB. Справочное пособие. М.: Диалог-
МИФИ, 1998. 314 с.
[4]
Мартынов Н.Н., Иванов А.П. MATLAB 5.X. Вычисления, визуализа- ция, программирование. М.: КУДИЦ-ОБРАЗ, 2000. 332 с.
[5]
Marchand Patrick. Graphics and GUI with MATLAB. Second edition. CRC
Press LLC, New York; Washington, 1999. 445 p.
[6]
Using MATLAB. Version 5.2. The MathWorks, Inc. Natick, MA, 1998.
[7]
Ландау Л.Д., Лифшиц Е.М. Механика. М.: Наука, 1976.
[8]
Коткин Г.Л. Лекции по статистической физике. Новосибирск: НГУ, 1996.
[9]
Коткин Г.Л., Сербо В.Г. Сборник задач по классической механике.
М.:Наука, 1977.
[10]
Котельников И.А., Чеботаев П.З. Введение в систему LaTeX. Новоси- бирск: Сиб. хронограф, 1999.
[11]
Вельтмандер П.В., Фруми Л.Л. Моделировыание в курсе электротехники и электроники. Новосибирск: НГУ, 1995. 65 c.
106

ДОПОЛНЕНИЕ
ВВЕДЕНИЕ В СИСТЕМУ MATLAB
MATLAB является интерактивной, матрично-ориентированной системой для на- учных и инженерных расчетов. Система позволяет решать сложные численные про- блемы без написания каких-либо программ. Имя MATLAB является аббревиа- турой двух слов MATrix LABoratory (МАТричная ЛАБоратория). Цель этой главы -помочь начать работать с системой MATLAB. Лучше всего это делать прямо на компьютере. Желательно изучать это руководство и сразу выполнять все примеры, экспериментируя с ними. Во время работы с сиcтемой можно пользо- ваться встроенной оперативной помощью, которая содержит много подробностей.
После входа в систему, как это описано в п.
1.4
, команда
help выведет список групп, в которые объеденены функции. Команда
help <имя_группы> выведет на экран список функций, размещенных в этой группе с краткими пояснениями. Ко- манда
help <имя_функции> выдаст подробную информацию о функции. Напри- мер, команда
help eig выдаст информацию о функции вычисления собственных значений матрицы
eig. Вы можете познакомиться с некоторыми возможностями системы MATLAB с помощью команд
intro и demo. Для более глубокого зна- комства с системой желательно ознакомиться с книгой «MATLAB User’s Guide»
(Руководство пользователя). Система MATLAB может работать на таких плат- формах как Sun/Apollo/VAXstation/HP workstations, VAX, MicroVAX, Gould,
PC и AT совместимые, 80386 и 80486 компьютеры, Apple Macintosh, и на ря- де параллельных машин. В настоящем руководстве будут описаны основные свой- ства системы, которые одинаково применимы при использовании версий 5.0., 5.1 и
5.2. MATLAB является собственным знаком фирмы MathWorks, Inc., Cochituate
Place, 24 Prime Park Way, Natick, MA 01760, (508)653-1415, Fax: (508)653-
2997,
Email: info@mathworks.com.
1.
Работа в командном окне
1.1.
Вход в систему MATLAB
В большинстве систем после входа в саму операционную среду войти в MATLAB
можно, набрав в ответ на системный запрос команду
matlab. При работе в Windows
3.1 или в Windows-95 необходимо найти соответствующую иконку и кликнуть на ней. Выход осуществляется с помощью команды
quit. При работе в Windows
3.1 (версии 4.0 и 4.2) в качестве редактора m-файлов используется Notepade, а
107
в Windows-95 (версии 5.0 и выше) используется собственный встроенный редак- тор
1
. В обоих случаях командное окно системы MATLAB находится в одном окне,
а редактор - в другом. В окне MATLAB помимо собственно команд MATLAB
можно использовать системные команды DOS. Например, команда
dir выводит на экран содержимое текущей директории, команда
what выводит только список m-файлов
2
текущей директории. Команда
cd позволяет сменить текущую дирек- торию, а команды
delete и type стирают и печатают на экране содержимое файла соответственно.
1.2.
Интерактивный доступ к справочной информации и документации
Существуют следующие способы получить информацию о функциях системы МАТ-
LАВ в процессе работы:
команда help;
команда lookfor;
меню Неlр;
просмотр и вывод на печать страниц документации;
обращение к WEB-серверу фирмы Тhe MathWorks.
1.2.1.
Команда
hеlр
Основной и наиболее быстрый способ выяснить синтаксис и особенности примене- ния m-функции - это использовать команду
help <имя m-функции>. Соответ- ствующая информация появляется непосредственно в командном окне.
Например, команда
help magic выведет в командное окно следующую инфор- мацию на английском языке:
MAGIC Magic square.
MAGIC(N) is an N-by-N matrix constructed from the integers 1 through N^2 with equal row, column,
and diagonal sums.
Produces valid magic squares for N = 1,3,4,5,...
1
Далее речь будет идти только о версии 5.х и работе в системе Windows-95.
2
Здесь и далее m-файлом мы будем называть любой текстовой файл, содержащий набор
команд MATLABи имеющий расширение .m. Подробнее об этих файлах и их роли в системе
MATLABсм. п.
6
этого Дополнения.
108

Следует обратить внимание, что текст интерактивной справки использует верхний регистр для написания имен функций и переменных, чтобы выделить их из основ- ной части текста. Однако при использовании функций их имена необходимо вво- дить с помощью символов нижнего регистра.
Команда
help без аргументов выводит на экран список каталогов, которые име- ются в системе с кратким описанием их содержимого. Повторный набор этой ко- манды с именем каталога, например
help elmat, выведет список функций, предна- значенных для создания и работы с матрицами специального вида. Ввод команды с именем определенной функции выдаст на экран описание этой функции. Следует особо обратить внимание, что в качестве ответа на запрос о помощи выводятся все строки комментариев, которые написаны в начале каждой функции -как созданной разработчиками системы, так и собственными функциями пользователя.
1.2.2.
Команда
lookfor
Эта команда позволяет выполнить поиск m-функции по ключевому слову; при этом анализируется первая строка комментария, и она же выводится на экран, если в ней встретилось ключевое слово. Например, в системе МАТLАВ нет m-функции с именем inverse, и поэтому на команду
help inverse ответом будет - inverse.m
not found (inverse.m не найден).
Однако команда
lookfor inverse найдет не менее дюжины совпадений, и это будет зависеть от того, какие ППП (пакеты прикладных программ) подключены к системе МАТLАВ. Добавление к команде
lookfor опции -all в виде
lookfor <слово> -all
расширяет область поиска -<слово> ищется в первом блоке комментариев, т.е. в блоке комментариев между заголовком функции и первым оператором.
1.2.3.
Меню Help
Это меню командного окна системы МАТLАВ позволяет активизировать следу- ющие окна:
Help Window
Help Tips
Help Desk(HTML)
Examples and Demos
109

About MATLAB
Subscribe (HTML)
Окно справки Help Window позволяет получить в отдельном окне то же самое,
что и команда
help. Отличие состоит в том, что в этом окне можно погружаться внутрь раздела с помощью двойного щелчка мыши, а не повторно набирая команду
help с новыми аргументами.
В пункте меню Help Tips приведена краткая справка по использованию помо- щи, т.е. описаны все пункты этого меню.
Вызов пункта меню
Help Desk позволяет получить доступ к большому объему справочной информации и к документации по системе, размещаемой на жестких дисках, либо на диске CD-ROM в формате HTML. При использовании этого пункта меню желательно, чтобы в системе было установлено какое-либо средство работы в Internet (например, Internet Explorer или Netscape Navigator). Все опе- раторы и функции системы MATLAB описаны подробно и c большим числом примеров. Реализована поисковая система, позволяющая выполнить необходимые запросы.
В пункте меню Examples and Demos приведено большое число примеров ис- пользования системы Matlab для решения задач из разных областей.
Пункт меню About Matlab выводит на экран стандартную заставку Matlab, а в пункте меню Subscribe HTML предлагается подписаться (при наличии лицензии на продукт) на доступ через интернет к услугам фирмы MathWorks.
Просмотр и распечатка документации. Версии справочной документации до- ступны для просмотра и распечатки в формате PDF с помощью средства Аdobe
Асrоbat. Оно позволяет просматривать текст в формате печатной страницы, с пол- ным набором шрифтов, графики и изображений, с полным ощущением чтения кни- ги. Одновременно это и наилучший способ получения копий нужных страниц.
1.3.
Редактирование и перевызов командной строки
Командная строка MATLAB легко редактируется. Курсор можно перемещать с помощью стрелок
←→ и удалять неправильно набранные символы с помощью клавиш Backspace или Delete. Другие редактирующие возможности тоже доступ- ны. Если вы работаете на PC, то доступны клавиши Home, End и Delete. При работе на других системах необходимо использовать команду
edit для ознакомле- ния с доступными командами. Удобным свойством системы является возможность использовать клавиши-стрелки
↑↓ для доступа к стеку с ранее введенными коман- дами.
110

Таким образом, имеется возможность перевызвать ранее вызванную команду,
отредактировать ее и снова выполнить. Для небольших процедур это гораздо удоб- нее, чем писать и отлаживать m-файлы, что требует постоянного перехода из окна
MATLAB в окно текстового редактора (см. п.
7
и
7.2
). Например, при необ- ходимости сосчитать сколько флопсов (см. п.
7.4
) требуется для обращения мат- риц разного размера, можно использовать приведенную далее командную строку,
и перевызывать ее с помощью стрелки вверх с последующим редактированием и повторным запуском.
>> a = rand(8); flops(0), inv(a); flops
Если вы хотите сравнить графики функций sin(mx) и sin(nx) на интервале [0, 2π]
для различных значений n и m, то можете воспользоваться командной строкой
m=2;n=3;x=0:.01:2*pi;y=sin(m*x);z=sin(n*x); plot(x,y,x,z)
с последующим редактированием и перевызовом этой же самой строки. Проделай- те все описанное выше самостоятельно.
1.4.
Формат вывода
Поскольку все вычисления в MATLAB выполняются с двойной точностью, фор- мат вывода может управляться с помощью следующих команд.
format short с фиксированной точкой и 4 знаками после точки
(по умолчанию)
format long с фиксированной точкой и 14 знаками после точки format short e научная нотация с 4 десятичными знаками format long e научная нотация с 15 десятичными знаками
После вызова одного из приведенных выше форматов он сохраняется до вы- зова другого. Команда
format compact подавляет большинство пустых строк,
позволяя большее количество информации вывести на экран или страницу. Она не зависит от других команд формата.
1.5.
Копия протокола сессии
Легче всего протокол сессии получить с помощью команды
diary. Вызов коман- ды
diary <имя_файла> приведет к тому, что все появившееся далее на экране
(кроме графики) будет записано в файл <имя_файла>. Если имя файла в команде будет опущено, то протокол сессии будет записан в файл с именем diary. Команда
111

diary off приведет к выключению записи, а команда diary on к восстановлению ее функции и т.д. После завершения вы можете отредактировать этот файл как обычный текстовой файл и распечатать, если необходимо, или использовать для последующего написания m-файла.
2.
Введение матриц
MATLAB работает практически с одним видом объектов -с числовыми прямо- угольными матрицами, элементами которых могут быть в общем случае комплекс- ные числа. Все переменные представляют собой матрицы. В некоторых случаях матрицы 1х1 интерпретируются как скаляры, а матрицы с одной строкой или од- ним столбцом интерпретируются как вектора. В системе MATLAB матрицы мо- гут быть введены разными способами.
Введены явно с помощью списка элементов;
Сгенерированы встроенными операторами или функциями;
Созданы в m-файлах (см. п.
6
и
7
далее);
Загружены из внешнего файла данных.
2.1.
Явное определение матриц
Например, любой из приведенных далее операторов
A = [1 2 3; 4 5 6; 7 8 9]
или
A = [1 2 3
4 5 6
7 8 9 ]
создает матрицу 3х3 и присваивает ее значение переменной. Попробуйте сами по- экспериментировать с подобными определениями.
Элементы внутри строки матрицы могут отделяться друг от друга не только пробелами, но и запятыми. При вводе чисел в экспоненциальной форме (напри- мер, 2.34e-9) не следует использовать пробелы. Ввод больших матриц лучше вы- полнять с помощью m-файлов, в которых легко находить и исправлять ошибки (см.
112
п.
7
). Такие встроенные функции как
rand, magic и hilb позволяют легко сгене- рировать матрицы, с которыми удобно поэкспериментировать. Команда
rand(n)
создает матрицу nxn, каждый элемент которой -случайное число с равномерным распределением в диапазоне [0 1], в то время как команда
rand(m,n) создает та- кую же матрицу размера mxn. Команда
magic(n) создает матрицу nxn, которая является магическим квадратом (суммы элементов по строкам и столбцам равны).
Команда
hilb(n) создает матрицу Гильберта размером nxn, которая является ко- ролевой плохо определенных матриц (m и n являются, конечно, целыми положи- тельными числами). Матрицы могут быть сгенерированы также с помощью цикла
for(см. п.
4
).
Ссылки на отдельные элементы матриц и векторов осуществляются с помощью индексов в круглых скобках обычным образом. Например,
A(2,3) означает эле- мент матрицы, стоящий на 2-й строке и 3-м столбце матрицы
A, а x(3) означает
3-й элемент вектора
x. Попробуйте сами поэкспериментировать с элементами мат- риц. В качестве индексов векторов и матриц могут использоваться только положи- тельные числа. На элементы матрицы
A можно ссылаться, используя единствен- ный индекс,
A(k). Это обычный способ, когда речь идет о ссылке на элементы вектора. Но также можно ссылаться и на элементы двумерной матрицы, и в этом случае эта матрица рассматривается как один длинный вектор-столбец, сформи- рованный из столбцов исходной матрицы. В приведенной матрице на элемент 5
можно сослаться либо
A(2,2), либо A(5). И то и другое правильно.
2.2.
Подматрицы и использование двоеточия (:)
Вектора и подматрицы часто используются в системе MATLAB, чтобы полу- чить компактную запись алгоритмов сложной обработки данных. Использование нотации с двоеточием (которая используется и для генерации векторов и подмат- риц) и векторов вместо индексов является ключом к эффективной манипуляции этими объектами. Творческое использование этих возможностей позволяет мини- мизировать число явных циклов (использование явных циклов замедляет работу
MATLAB) и делает написанную программу простой и легко читаемой. Правда,
необходимы специальные усилия для овладения этими возможностями. Выраже- ние
1:5 фактически является вектор-строкой [1 2 3 4 5]. Числа в этом векторе не обязательно целые и инкремент не обязательно равен единице. Например, оператор
x=0.2:0.2:1.2 дает вектор x равный [0.2, 0.4, 0.6, 0.8, 1.0, 1.2], а оператор 5:-
1:1 дает в результате вектор [5 4 3 2 1]. Приведенный далее оператор, например,
дает таблицу синусов. Попробуйте выполнить все приведенные выше примеры.
113

1   ...   7   8   9   10   11   12   13   14   ...   17


написать администратору сайта