- •Практикум по ядру пакета matlab 7.2 r2006a
- •Введение
- •Лабораторная работа №1 Знакомство с пакетом matlab 7.2.
- •1. Структура пакета и принципы работы
- •Пример:
- •Задание:
- •Лабораторная работа №2 Проведение вычислений без м-файлов
- •1. Элементарные матричные вычисления.
- •Пример:
- •Задание
- •2. Элементарные функциональные вычисления и построение графиков.
- •Пример:
- •Сформировать случайные векторы u и V размера 1×4.
- •Составить анонимную функцию для вычисления площади треугольника по формуле Герона ( , p- полупериметр, a,b,c – стороны). Вычислить площадь для египетского треугольника.
- •Построить контурный график на основе базиса (u,V) и матрицы значений в, которая содержит высоты «гор». Площадь построения – [-2;2]× [-2;2].
- •Создать киноленту, отображающую эволюцию поверхности треугольников при изменении третьей стороны треугольника.
- •Задание:
- •Лабораторная работа №3 Проведение вычислений с помощью м-файлов
- •1. Создание и отладка м-файлов.
- •Пример:
- •Записать в виде м-функции вычисления по формуле Герона в файле geroncore. Вычислить площадь при наборах (1,2,1.5) и (1,2,4).
- •Записать в виде м-функции MyTriangle решатель треугольника, т.Е. По трем заданным его элементам находящий остальные – число аргументов и результатов переменное.
- •Задание:
- •Пример:
- •Составить м-функцию, содержащую несколько независимых вложенных функций. Параметров вызова два – строковая переменная s, по которой определяется вызываемая подфункция, и массив коэффициентов к.
- •Вычислить объем n-мерной сферы радиуса 1. Вывести график зависимости V(n).
- •А) Графически решить систему уравнений (a,b – параметры):
- •Решить систему обыкновенных дифференциальных уравнений и начертить траекторию движения частицы (параметр а изменяется от -1 до 1 с шагом 0.5):
- •Задание:
- •В рамках того же м-файла реализовать вычисление лапласиана от функции:
- •В рамках того же м-файла реализовать построение 4-х графиков на одном полотне: 1,2,3d-мерного и одного параметрического. На базе данных от функции u1,2(X,y,z).
- •Лабораторная работа №4 Реализация вычислений с помощью графического интерфейса (gui)
- •Пример:
- •В масштабируемом окне создать интерфейс, содержащем большинство элементов палитры, с целью адаптировать его к программе MyTriangle (см. Пример №3 Лабораторной работы №3, часть 1).
- •Реализовать «решение треугольника» и более сложные функции в gui-программе
- •Задание:
- •Реализовать на базе Примера игру «о, счастливчик» с собственным gui-интерфейсом. Дополнительные примеры Матричные комплекснозначные вычисления
- •Решения
Задание
Ввести две скалярные величины x=-0.85, y=978.56*10-2.
Заготовить XLS-файл с двумя матрицами А и В размера 3×5 и 5×3.
Считать их в одноименные структуры MATLAB.
Примечание: Необходимо воспользоваться одним из подразделов помощи MATLAB Programming
Изменить центральные элементы обеих матриц. Для А – домножить его на х и вычесть 1, для В – домножить его на sinу и прибавить 1.
Осуществить поэлементное умножение матрицы А на транспонированную матрицу В.
Вычислить произведение АВ и прибавить к нему матрицу С, где С – трехдиагональная: на главной диагонали единицы, наддиагональ – из х-ов, поддиагональ – из у-ков.
Результат вывести в виде текстового файла.
Вычислить след (trace) матрицы, обратной к последней вычисленной матрице.
Сохранить последовательность команд в файле matrix1.m
2. Элементарные функциональные вычисления и построение графиков.
Комплексные числа вводятся в виде Re+Imi или Re+Im*j (предпочтительнее вариант без умножения, поскольку может возникнуть путаница с перекрытием имен). Попробуйте набрать >> j=5;[1+j,1+1j] и почувствуйте разницу! Однако в случае, когда коэффициентом перед мнимой единицей является не число, а переменная, между ними следует обязательно использовать знак умножения. Полезно знать три константы MATLAB: pi – число π, inf – бесконечность, NaN – неопределенное значение. Они могут выступать аргументами функций: >> [sin(inf),sin(1/inf),3*NaN]. В системной переменной ans хранится результат вычислений, а в eps – номинальная точность вычислений, что удобно с точки зрения численных методов, например, решения уравнений способом дихотомии. Значения этих переменных можно изменять: по умолчанию eps=2^(-52), но очень часто делают присвоение eps=1e-6; удобно проводить цепи вычислений (пример: >> ans+1). В MATLAB широкий набор самых разнообразных встроенных математических функций. Вы можете задавать и собственные функции (доступные, однако, только в текущем сеансе). Они называются анонимные, их значение вычисляется только одним оператором, а формат задания и вызова таков:
<имя>=@(<arg1>,…) <выражение> … <имя> (<arg1>,…)
При этом инициализируется переменная-указатель на функцию, и как раз по указателю функция и вызывается (полезно посмотреть Workspace). При написании собственных функций весьма желательно предусмотреть матричные операнды, что сильно облегчает жизнь при построении графиков (так, для вычисления f(x)=x3 конструкция x^3 хуже правильного варианта x.^3 с точкой поэлементной операции). Для реализации более сложных и серьезных функций необходимо обращаться к программированию М-файлов. Приведем лишь некоторые из часто используемых:
log(x) – натуральный логарифм
mod(x,y) – остаток от деления x на y (применима и для нецелых аргументов)
angle(z) – угол поворота комплексного числа z
polyval(p,t) – вычисление полинома от аргумента t с заданными вектором p коэффициентами.
bessel(nu,z) – вычисляет функцию Бесселя, причем если аргумент z матричный, то и результат также матричный. Константа nu нецелая. Пользователь может не только использовать различный синтаксис вызова (например, количество аргументов), но и определять вариант получения результата – в этом состоит важная и удобная особенность функций в MATLAB.
quad1(fun,a,b) – вычисление определенного интеграла Римана по адаптивному методу Гаусса-Лобатто на отрезке [a,b] от функции f(x), заданной указателем fun. Если функция анонимная, то вместо fun подставляется просто <имя>, но если функция задана в М-файле, то нужно провести разыменование и подставлять <@имя>.
Теперь рассмотрим функции вспомогательные для расчета, но весьма полезные:
str2num – переводит строку в число
tic <операции> toc – сколько времени (в сек) потребовалось для совершения операций
clock – возвращает текущую дату и время
Важное
значение имеет графическое представление
результатов, и MATLAB обладает
обширным набором средств (см. раздел
помощи в закладке Contents
MATLAB
– Mathematics
- Plotting Mathematical Functions,
более подробно изложено в MATLAB
– Functions
-- By
Category
–Graphics–Specialized
Plotting).
Каждый раз при получении графика
создается графический объект, который
автоматически открывается в окне
графического редактора (можно открыть
несколько объектов – см. команда
h=figure(∙)
и смежные; об иерархии графических
объектов см. MATLAB
– Handle
Graphics
Object
Properties).
Там вы можете манипулировать подписями
осей, легендами, цветами линий, сохранять
изображение в разных форматах. Существует
сложная иерархия графических объектов,
и каждому действию в окне графического
редактора соответствует команда,
модифицирующая заданный посредством
указателя объект. Поэтому не следует
забывать, что управлять параметрами
изображения можно из консоли (разумеется,
большинство инструкций приходится
брать из системы помощи, например set)
– этот способ вряд ли можно считать
прогрессивным, но в некоторых случаях
(поскольку доступные операции в меню
окна г
рафического
редактора не исчерпывают всего
многообразия) незаменим. Нужно помнить,
что такие операции, как выбор цветовой
гаммы, применяются к тому объекту,
который объявлен текущим.
Не меньшее значение имеют пользовательские данные, представленные, как правило, матрицами большого размера (например, 100×300). Часть данных, таких как значения функций, может вычисляться «на лету», но надежнее вычислить все необходимое до построения графика. Всякий график предполагает наличие сетки, прямоугольной или треугольной (если ранее применялись численные методы, то в роли такой сетки может выступать сетка для исчисления конечных разностей, которая изначально и определяет детальность представления результатов; в общем случае обе сетки не совпадают, и тогда дополнительно следует применять интерполяцию – см. griddata). Самый простой путь для получения сеток для 3D-поверхностей – использование функции meshgrid.
Наиболее общеупотребительны (для целей физико-математических расчетов и/или проектирования РЭА) следующие виды графиков (рядом указано имя специальной функции):
Простой график вида y=f(x) с маркерами и без– plot(x,y,…), fplot(…). Последняя команда удобна тем, что кривая строится по указателю функции, или даже по текстовому описанию fplot (’sin(x) .*cos(2x)’, [0 5*pi])
Графики, построенные в преобразованных координатах (например, двойных логарифмических, т.е. данные имеют вид (x,f(x)), а координаты – (lnx,lnf(x))). В том числе в полярных координатах – cart2pol, loglog(x,y), polar(fi,r).
Параметрическое семейство кривых y=f(x,p), p – параметр, значение которого указывается в легенде для каждой кривой yp=f(x). Все кривые имеют разный цвет – hold on, plot, параметр LineSpec функции plot.
Контурный график, изображающий линии уровня (изолинии) z=const для поверхности z=f(x,y). Промежутки, отделяющие изолинии, могут заполняться цветом, а могут и нет. Географическая карта, где отображаются океаны и горы, - классический пример контурного графика – contourc, contourf.
3D-график для поверхности z=f(x,y) или траектории, заданной параметрически r(t) – colormap(hsv(128)), mesh, surf, plot3
Анимированные графики. Обычно для траекторий частиц, получили большое распространение в последнее время – comet, getframe…movie.
