Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Тема 1. Общие сведения о MATLAB'е



 

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

MATLAB предназначен прежде всего для программирования численных алгоритмов. Он разрабатывается уже более 15 лет и возник на основе более ранних прикладных пакетов LINPACK и EIGPACK, созданных в 1970-е гг. в США, и в свою очередь повлиял на появление таких систем, как MathCad, MAPLE и Mathematica. Совершенствование системы MATLAB происходило как в связи с достижениями в вычислительной математике, так и в связи с изменениями в архитектуре персональных компьютеров и развитием общесистемных средств. Со временем MATLAB был дополнен целым рядом уже упоминавшихся приложений (toolboxes), далеко раздвинувших границы его применимости. Далее речь пойдет лишь о ядре MATLAB'а, которое мы будем называть системой, и конкретно о ее версии 5.2, выпущенной фирмой MathWorks в январе 1998 г.

MATLAB – система программирования высокого уровня, работающая как интерпретатор и включающая большой набор инструкций (команд) для выполнения самых разнообразных вычислений, задания структур данных и графического представления информации. Команды эти разбиты на тематические группы, расположенные в различных директориях системы. Теперь в системе около 800 команд, и примерно половина из них вполне доступна начинающему пользователю. Команды с большим возможным объемом вычислений написаны на С, но много и таких команд, которые представлены в терминах этих первых. Поэтому система оказывается почти открытой для пользователя. Имеются большие возможности для вывода двумерной и трехмерной графики и средства управления ею. Пользователь может без особых затруднений добавлять свои команды и писать программы в терминах уже существующих команд; несколько сложнее делать это в рамках Фортрана и С. Можно обмениваться данными с программами на этих языках, а из них обращаться к системе. Краткость и наглядность программирования и исключительные возможности визуализации результатов делают систему очень эффективной при поисках и апробации новых алгоритмов, при проведении разовых расчетов и в учебном процессе, поскольку ее можно осваивать без предварительного знакомства с основами программирования и выполнять такие сложные примеры, которые невозможно делать с использованием других систем.

Документация по системе и ее приложениям содержит много тысяч страниц, и поэтому естественно встает вопрос о том, как ее осваивать. Работа с системой требует определенной математической подготовки, так что обучение можно начинать на втором курсе вуза. Основные сведения о системе изложены в руководствах /1/ – /2/: /1/ – это учебник с описанием вычислительных возможностей и архитектуры системы, /2/ – описание ее графических возможностей. Конечно, можно читать подряд /1/, /2/ и при необходимости обращаться за уточнениями к команде help или справочнику /3/, в котором описаны почти все команды. Но гораздо более эффективным, на наш взгляд, является изложение основных вычислительных процедур с помощью наиболее употребительных команд системы. Именно так мы и познакомимся с MATLAB'ом, а точнее примерно с 30-40 его командами. После этих занятий пользоваться документацией /1/ и /2/ будет гораздо легче.

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

Для работы с системой достаточно иметь компьютер PC 486 с оперативной памятью хотя бы 16 Mb и с установленными на нем системами Windows 95 и MATLAB 5.2. В действительности MATLAB может работать и с другими операционными системами, такими, например, как Macintosh, Unix и OS/2.

За рубежом вышло уже достаточно много учебных пособий по системе, но на русский язык ни одно из них пока не переводилось и даже в центральных библиотеках их теперь нет из-за сокращения финансирования. Изданные у нас пособия (например, /4/ – /12/) в основном следуют руководствам /1/ – /3/, тогда как нам представляется полезным дать менее формальное введение в предмет, опираясь прежде всего на интуицию слушателя.

MATLAB – высокоуровневая система программирования, позволяющая резко сократить затраты труда при проверке алгоритмов и проведении прикидочных расчетов. Возможность проведения больших расчетов на MATLAB'е определяется в основном теми затратами времени, на которые может пойти пользователь: здесь приходится выбирать между легкостью и наглядностью программирования и представления результатов, с одной стороны, и затратами времени на счет – с другой. Система очень удобна для освоения и апробации численных методов, что мы и хотим показать здесь прежде всего. Именно поэтому она рекомендуется как одна из основных для физиков и многих других естественно-научных специальностей в ведущих американских университетах. Детальное освоение любой большой программной системы – это достаточно длительный процесс, основу которого составляют индивидуальная работа, и наши занятия призваны дать лишь первоначальный импульс этому процессу в отношении MATLAB'а. Темы 2 – 4 представляют сравнительно элементарное введение, а в остальных рассматриваются более сложные примеры, показывающие, как можно использовать программные и графические возможности системы для исследования численных алгоритмов.

В некоторых местах текста вставлены упражнения, пронумерованные сквозным образом.

 

Тема 2. Переменные

 

Переменные могут быть числовыми, текстовыми и других типов. У нас будут только числовые (это во всех деталях) и текстовые (совсем немного). Название переменной начинается с латинской буквы, далее могут быть буквы и цифры (не более 31 символа). Строчные и прописные буквы здесь различаются.

1. Числовые переменные. Это числа, векторы, матрицы и многомерные массивы. В компьютере все числа представлены примерно с 16 десятичными знаками, под каждое вещественное число отводится 8 байтов, под комплексное – 16.

1.1. Ввод чисел.

Целые числа. В системе они не выделяются явно. Наберем и выполним отдельно каждую команду:

a=2 a=2.0 a=2; a=1: 6 b=1: 20 c=10: -2: 5

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

Вещественные числа. Выполним по отдельности следующие команды:

d=0.5: 0.3: 2.5 d=.5:.3: 2.5 d=.5+1:.3-.1: 2.5*2 length(d)

d(end) d(end-2) d(1) d(0) d(2: 7) d(7: -1: 2) d(150)

f=linspace(1.5, 30, 143); length(f)

Индексы всегда начинаются со значения 1. Команды набираются на малом латинском регистре. Возможна многопараметричность команд.

Диапазон вещественных чисел:

Realmax realmin

Другие константы MATLAB'а:

Pi i j eps

Их не следует портить.

Комплексные числа:

q=1+2*i q=1+2i real(q) imag(q) abs(q) conj(q) s=angle(q) (здесь -p< s< =p).

q=1+2*i; r=3; fi=0:.01: pi; z=q+r*exp(i*fi); plot(z) Это верхняя полуокружность.

1.2. Ввод векторов

Векторы-строки:

a=1: 6 linspace(1, 6, 10)

Векторы-столбцы:

a=(1: 6)' linspace(1, 6, 10)'

Операторы.' и ':

y1=linspace(1, 6, 4)'; y2=y1; y=y1+i*y2; y.' y'

Команды linspace и: применимы для задания только вещественных векторов.

1.3. Ввод матриц. A(i, j) - элемент из i-й строки и j-го столбца. A(k) – k-й элемент таблицы, вытянутой в столбец.

A=[1, 2; 3, 4] A=[1; 2, 3; 4] A(2, 2) A(3) A(5) size(A) A(3, 4)=10 size(A)

A(5)=6 size(A) A(22)=3 A=A(: ) A(22)=3 size(A) [m, n]=size(A)

A=reshape(1: 24, 4, 6) size(A) A([1, end],: )=[] A(:, [1, end])=[] size(A)

1.4. Некоторые специальные матрицы:

m=3; n=4; eye(m, n) eye(m) eye(n) ones(m, n) ones(m) ones(n) zeros(m, n)

rand(m, n) rand(m, n) rand('state', 0) rand(m, n) rand(m) Это равномерное распределение на интервале (0, 1).

randn(m, n) randn('state', 100) Это нормальное распределение, у него мат.ожидание=0, дисперсия=1

v1=1: 4 v2=7: 12 toeplitz(v1, v2) toeplitz(v1)

1.5.Некоторые простые команды:

A=reshape(1: 24, 4, 6) triu(A) triu(A, 0) triu(A, 2) triu(A, -1) tril(A)

v=1: 5 diag(v) diag(v, 2) diag(v, -1)

Diag(A) diag(A, 2) diag(A, -1)

A=reshape(1: 24, 4, 6) rot90(A) rot90(A, 2)

1.6. Выдачи на экран. Команда format с различными опциями.

В обычном формате (forrmat short) выдается 5 знаков, для целых чисел 9 знаков, порядки изменяются от -308 до +308. В полном формате (format long e) 16 знаков.

a=2 a=.001 a=1e-3 a=1e-5 a=123456789 a=1234567891 a=1+3*i

format long e, 2^.5, format short

Опция format short e позволяет получать ровные столбцы.

2. Текстовые переменные. Они берутся в кавычки (на букве э на латинском регистре), символ занимает 2 байта. Используются для задания заголовков в числовых выдачах и на графиках, для задания формул и т.д. Можно переводить текстовые переменные в числовые и наоборот. Выполним в командной строке

t='Moscow - столица России'

(после дефиса нужно перейти на русский шрифт и затем не забыть снова вернуться на латинский).

3. Контроль за переменными:

Who whos

4. Другие типы переменных – ячейки и структуры.

5. Система help.

help выдает список директорий системы;

help < имя директории> выдает список команд директории;

help < имя команды> выдает описание команды.

type < имя команды> выдает текст команды или программы пользователя, если он составлен в терминах MATLAB'а.

Упражнения

1. Из заданной матрицы A выбрать вектор, компоненты которого есть все окаймляющие A элементы, взятые в порядке A(1, 1), A(2, 1), …, A(1, 2).

2. Из заданной матрицы A размера m*n построить матрицу B с m строками, у которой диагонали с номерами 0, 1, …, n-1 были бы столбцами A с номерами 1: n, а все остальные элементы равнялись бы нулю.

3. Построить последовательность из 1000 целых случайных чисел, которые равновероятно принимали бы значения 11: 18, и выдать, сколько из них оказалось равным 11, 12, …, 18. Используйте команду round(k) округления k до ближайшего целого.

Тема 3. Элементы xy-графики

1.Как открывать графическое окно:

Figure whitebg zoom on

Теперь построим график функципи y=sin(2px), 0< =x< =5, выполнив строку

x=0: 1e-3: 5; y=sin(2*pi*x); plot(y) plot(x, y), grid

Использование режима zoom:

k=100; y=sin(2*pi*k*x); plot(y)

2.Автоматическое чередование цветов. Теперь будем, как правило, нумеровать строки.

1; x=linspace(0, 1, 20); k=.1:.1:.8; y=k'*x; plot(x, y)

Здесь определяется вектор-строка x=0: 20, затем вектор-строка k из 8 угловых коэффициентов, далее получается матрица y=k'*x как произведение вектора-столбца k' на вектор-строку x. Строки этой матрицы состоят из точек соответствующих прямолинейных отрезков. Наконец, строятся графики этих отрезков как функций от x – первая нижняя линия (она желтая) соответствует k=.1, последняя, тоже желтая, – для k=.8. Мы видим, что цвета, которых всего 7, чередуются циклически в таком порядке (под русскими английские названия):


Поделиться:



Последнее изменение этой страницы: 2017-03-17; Просмотров: 301; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.034 с.)
Главная | Случайная страница | Обратная связь