- •Практикум по ядру пакета 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-интерфейсом. Дополнительные примеры Матричные комплекснозначные вычисления
- •Решения
Построить контурный график на основе базиса (u,V) и матрицы значений в, которая содержит высоты «гор». Площадь построения – [-2;2]× [-2;2].
>> % Вначале создадим функцию растягивания координат, поскольку 0<ui&vi<1
>>stretch=@(x) 4/(max(max(x))-min(min(x)))*x- 2*(max(max(x))+min(min(x)))/(max(max(x))-min(min(x)));
>
>
% Построим первоначальную сетку
>> [Xbig,Ybig]=meshgrid(u,v)
Xbig =
0.4740 0.9090 0.5962 0.3290
0.4740 0.9090 0.5962 0.3290
0.4740 0.9090 0.5962 0.3290
0.4740 0.9090 0.5962 0.3290
Ybig =
0.4782 0.4782 0.4782 0.4782
0.5972 0.5972 0.5972 0.5972
0.1614 0.1614 0.1614 0.1614
0.8295 0.8295 0.8295 0.8295
>> % Построим подробную сетку в области, заданной векторами u,v. Эта область обязана не превосходить существенно предыдущую область [Xbig Ybig]
>> [X,Y]=meshgrid(linspace(min(u),max(u),100),linspace(min(v),max(v),100));
>> % Проведем интерполяцию с использование кубических полиномов
Z=griddata(Xbig,Ybig,B,X,Y,'cubic');
>> % Построим контурный график с заливкой для квадратной площадки
contourf(stretch(X),stretch(Y),Z)
Для того, чтобы скопировать рисунок в буфер обмена, исполнить пункт Edit – Copy Figure меню графического окна, а если хотим скопировать его вместе с фоном, то поставить галочку File – Preferences – File Copy Template – Copy Options – Use Figure Color. Чтобы добавить расшифровку цветов, исполнить Insert – Colorbar. Можно цветовую гамму выбрать монотонной; для этого имеется пункт Edit – Colormap…, а в появившемся окне можно выбрать осеннюю гамму цветов (Tools – Standart colormaps – autumn) – см. рис. Сверху-справа. Для того, чтобы обрезать у рисунка неиспользуемые поля – поставить галочку File – Export Setup – (Properties=Size) – Expand Axes….
Построить поверхность площадей S(a,b,c), вычисленную для изопериметрических треугольников (т.е. a+b+c=1).
>> % Подготовим сетки и значения, цвет выберем потом
>> a=0:0.01:1;b=0:0.01:1; [X,Y]=meshgrid(a,b);Z=geron1(X,Y,1-X-Y);
>> % Инициализируем графический объект и построим в первом приближении. Функция surf позволяет указывать вектора вместо матриц, т.е. как бы функция meshgrid выполняется автоматически
>> figure(5);Hsur=surf(a,b,Z)
>> % Обычно цветом отмечается высота точки. Введем свои цвета (в палитре RGB) и немного изменим угол зрения. Также уберем линии сетки поверхности.
>> C=cat(3,X,Y,1-X-Y); set(Hsur,'CData',C, 'LineStyle','none'); view([23.5 36]);
>> xlabel('Сторона А','Color',[1 0 0]); ylabel('Сторона В','Color',[1 0 0]); zlabel ('Величина площади', 'Color',[1 0 0],'Rotation', 90);
>>title('Площадь','BackgroundColor',[0.9412 0.9412 0.9412],..
'EdgeColor',[1 0 0],'FontSize',14,'FontWeight','bold','LineWidth',1);
>>axis([0 1 0 1 0 0.5]); box('on');
Примечание: Укажите ошибку вычислений при выполнения п.8. Как ее исправить? См. п.10.
Построить в декартовых координатах кривую, заданную параметрически на [-π;π]:
,
«тильда»– первые три компонента
одноименных векторов.
>> MyCurve1=@(t) u(1)*sin(t)+v(1)*cos(t); MyCurve2=@(t) u(2)*sin(t)+v(2)*cos(t);
>> % Обратите внимание, что мы здесь не делаем матриц, используя облегченный вызов функции-рисовалки – поэтому не можем применять индексацию по осям
>> MyCurve3=@(t) u(3)*sin(t)+v(3)*cos(t); ezplot3(MyCurve1,MyCurve2,MyCurve3,[-pi,pi])
