- •Практикум по ядру пакета 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 размера 1×4.
>> n=4;u=rand(1,n);v=rand(1,n);[u;v]
ans =
0.4740 0.9090 0.5962 0.3290
0.4782 0.5972 0.1614 0.8295
На основе этих векторов составить матрицу А=||aij||, aij=uivjj-1.
>> % Выполним все без циклов. Начнем с формирования вектора из единиц
>> w=[linspace(1,1,n)];w=w';
>> % Сделаем первую заготовку
>> A1=(w*u)'
A1 =
0.4740 0.4740 0.4740 0.4740
0.9090 0.9090 0.9090 0.9090
0.5962 0.5962 0.5962 0.5962
0.3290 0.3290 0.3290 0.3290
>> % Составим вторую заготовку, содержащие степени
>> q=[0:1:n-1]; A2=w*q
A2 =
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
>> % Осуществим поэлементную операцию возведения в степень
>> A3=w*v;A3=[A3.^A2]
A3 =
1.0000 0.5972 0.0261 0.5707
1.0000 0.5972 0.0261 0.5707
1.0000 0.5972 0.0261 0.5707
1.0000 0.5972 0.0261 0.5707
>> % Поэлементным умножением матриц приходим к искомому
>> A=A1.*A3
A =
0.4740 0.2831 0.0124 0.2705
0.9090 0.5428 0.0237 0.5188
0.5962 0.3561 0.0155 0.3403
0.3290 0.1964 0.0086 0.1877
>> % Стираем ненужное
>>clear (‘A1’,’A2’,’A3’,’w’)
Для каждого элемента матрицы А вычислить значение полинома с коэффициентами (u+iv). Результаты записать в матрицу В. Превратить ее в вещественную, взяв от каждого элемента его угол поворота. Сколько чистого времени потребовалось на выполнение п.3?
>> tic; B=polyval(u+i*v,A);B=angle(B);toc
Elapsed time is 0.003572 seconds.
Составить анонимную функцию для вычисления площади треугольника по формуле Герона ( , p- полупериметр, a,b,c – стороны). Вычислить площадь для египетского треугольника.
>> % Возможен только один оператор. Площадь полагаем нулю, если из заданных отрезков нельзя составить треугольник
>> geron=@(a,b,c) real(0.25*sqrt((a+b+c)*(a+b-c)*(a+c-b)*(b+c-a)));
>> geron(3,4,5)
ans =
6
Построить график зависимости S(a) на отрезке [0,πe], приняв b=e,c=π. Оформить подписи, цвет кривой сделать фиолетовым.
>> % Есть два пути решения. 1-й состоит в переписывании анонимной функции.
>>% Команда figure избыточна. Hfig – указатель на текущий графический объект
>> geron1=@(a,b,c) real(0.25*sqrt((a+b+c).*(a+b-c).*(a+c-b).*(b+c-a)));
>> x=0:0.1:(pi*exp(1));Hfig=figure(1);plot(x,geron1(x,exp(1),pi));
>>% Второй путь, более общий, заставляет обратиться к программированию. Некоторые конструкции типа for…end доступны и в консоли.
>> % Ниже формируется вектор у, длина которого постоянно увеличивается. Затем непосредственно вывод графика.
>> x=0:0.1:(pi*exp(1));y=[ ]; for k=x y=[y,geron(k,exp(1),pi)]; end;
>> Hfig_=figure(2);plot(x,y);
В
окне Figure2
щелкнем мышью по иконке со стрелкой,
перейдя к режим редактирования. Вызовем
контекстное меню, связанное с кривой –
пункт Color,
и выберем цвет. Аналогичным способом
выберем цвет фона. Сделаем и другие
манипуляции с осями, подписями и пр.
Полезен пункт главного меню Insert,
пункт контекстного меню – Show
Properties.
Удобно также подключить редактор свойств
(View
– Property
Editor).
Исполнив File–
Generate
M-file,
можно просмотреть совершенные нами
действия в виде команд.
Построить семейство кривых S(a) при пяти значениях b=0,1,2,3,4 и фиксированном с=5. Величина а лежит в пределах [0;8]. Точки маркировать.
>> % Закрыли 2-й график, открыли новый с указанием рисовать все там
>> close(Hfig_);figure(3);hold on;
>> % Инициализируем переменные
>> a=0:0.5:8;b=0:1:4;c=5;
>>% Команды занимают две строки. Организуем цикл, формируем массив указателей на линии, цвет линии в формате RGB (смесь красного, зеленого и синего) случайный
>> Hlines=[ ];for j=1:5, Hline=plot(a,geron1(a,b(j),c)); Hlines=[Hlines Hline]; ...
set(Hline,'Marker','+','Color',[rand rand rand]); end; hold off
>> %Изменим цвета линий на привычные (см. ColorSpec) и добавим подписи к линиям. Вот где понадобились указатели! Названия получаем преобразованием чисел в литералы
>> MyColor=['y' 'm' 'c' 'r' 'g' 'b' 'w' 'k'];
>> for j=1:5, Lname=strcat(num2str(j),': b= ',num2str(b(j))); set(Hlines(j),'Color',MyColor(j),'DisplayName', Lname); end; legend('show');
