Министерство образования и науки Российской Федерации
Московский государственный технический университет
им. Н. Э. Баумана
Кафедра «Защита информации»
Учебная практика
Работа в среде Matlab
Руководитель
Деулина И. И.
Исполнитель
Студент группы ИУ 10-22
Власенко Олеся
Москва 2012
Содержание:
Лабораторная работа 1………………………………………………………... 2
Лабораторная работа 2………………………………………………………… 4
Лабораторная работа 3, 4, 5……………………………………………………12
Лабораторная работа 6…………………………………………………………16
Лабораторная работа 7…………………………………………………………20
Лабораторная работа 8…………………………………………………………26
Лабораторная работа 9…………………………………………………………34
Вывод……………………………………………………………………………36
Список литературы…………………………………………………………….37
Лабораторная работа 1
Тема: «Вычисление и рисование графиков функций»
Задания.
Создать функцию пользователя y=f(x), вычислить ее значение в точке х0 и простроить график.
Функция: х0=3,1
Выполнение:
x = 0:0.05:1;
y = sec(x) + sin (x) -1;
plot (x, y)
x0=3.1
y0 = sec(x0) + sin (x0) -1
Ход работы:
График функции:
Лабораторная работа 2
Тема: «Графика. Диаграммы и гистограммы»
Задания
Постройте графики функций одной переменной на отрезке [0.01, 2π]:
и
Выведите графики различными способами:
• в отдельные графические окна;
• в одно окно на одни оси;
• в одно окно на отдельные оси.
Дайте заголовки, разместите подписи к осям, легенду, используйте различные цвета, стили линий и типы маркеров, нанесите сетку.
Выполнение:
x = 0.01:0.01:2*pi;
y = sqrt(x) -1-cos(0.5*x);
f = exp(-x) .* sqrt(1+x+x.^2) - (x.^2);
plot (x, y, x, f) % одно окно одни оси
plotyy (x, y, x, f) % лучшее расположение осей (наиболее подходящий масштаб)
subplot(1,2,1); plot(x,f) % одно окно разные оси
subplot(1,2,2); plot(x,y)
figure; plot (x,y) % отдельные окна
figure; plot (x,f)
plot (x, y, 'Y.-', x, f, 'm*--') % одно окно одни оси, с дополнениями к графикам
grid on
title ('Графики двух функций')
legend ( 'График 1','График 2')
xlabel ('Ось Х')
ylabel ('Ось У')
Ход работы:
% одно окно одни оси
% лучшее расположение осей (наиболее подходящий масштаб)
% одно окно разные оси
% отдельные окна
% одно окно одни оси, с дополнениями к графикам
2. Визуализируйте функцию двух переменных на прямоугольной области определения
Выведите графики различными способами:
• каркасной поверхностью;
• залитой цветом каркасной поверхностью;
• промаркированными линиями уровня (самостоятельно выбрать значения функции, отображаемые линиями уровня);
• освещенной поверхностью.
Расположите графики в отдельных графических окнах и в одном окне с соответствующим числом осей. Представьте вид каркасной или освещенной поверхности с нескольких точек обзора.
Выполнение:
[x, y] = meshgrid ( -1:0.05:1, -1:0.05:1);
z=(((sin(x.^2)) + (cos(x.^2))).^(x*y));
mesh (x, y, z) % каркасная поверхность
surf(x, y, z) % залитая цветом
colorbar
surfc(x, y, z) % промаркированная линиями уровня
colorbar
surfl (x, y, z) % освещенной поверхностью
subplot(2,3,1); mesh (x, y, z)
title ('Каркасная поверхность')
subplot(2,3,2); surf(x, y, z)
colorbar
title ('Залитая цветом')
subplot(2,3,3); surfc(x, y, z)
colorbar
title ('Промаркированная линиями уровня')
subplot(2,3,4); surfl (x, y, z)
title ('Освещенная поверхность')
subplot(2,3,5); mesh (x, y, z)
title ('Каркасная поверхность(поворот)')
subplot(2,3,6); surf(x, y, z)
colorbar
title ('Залитая цветом(поворот)')
//Поворот поверхностей осуществлялся вручную, с помощью специальной кнопки
Ход работы:
Поверхности:
3. Постройте векторное поле градиента функции.
Визуализируйте трехмерное векторное поле на поверхности (возьмите разные поверхности):
• поверхность является гиперболоидом;
• поверхность является параболоидом;
• поверхность задана параметрически:
Выполнение:
[x, y] = meshgrid ( -5:0.05:5, -5:0.05:5);
z=sqrt((x.^2) + (y.^2) +1);
f= ((x.^2)/8 +(y.^2)/8);
subplot(3,2,1); plot3 (x, y, z)
title('Элиптический параболоид')
subplot(3,2,2); plot3 (x, y, f)
title('Однополостный гиперболоид')
n = 0:0.5:3;
m = 0:0.5:3;
b = cos(n).*cos(m);
c = sin(n).*sin(m);
d = m.*n;
subplot(3,2,3); plot3 (m, n, b)
grid on
subplot(3,2,4); plot3 (m, n, c)
grid on
subplot(3,2,5); plot3 (m, n, d)
grid on
Ход работы:
Поверхности:
Лабораторная работа 3,4,5
Тема: «Использование операторов в MATLAB»
Задание:
Напишите файл-функцию для решения поставленной задачи. Там, где это возможно, предложите два решения: с использованием конструкций языка программирования и без них, применяя функцию find и др.
1. Вычислить произведение элементов вектора, не превосходящих среднее арифметическое значение его элементов.
Выполнение:
function c = fun1(a)
disp(prod(find(a <(mean(a)))));
Задание:
2. Подсчитать число нулей и единиц в заданной матрице.
Выполнение:
function c = fun2(A)
disp(sum(sum(A==0)))
disp(sum(sum(A==1)))
Задание:
3. Определить количество положительных элементов вектора, расположенных между его максимальным и минимальным элементами.
Выполнение:
function c = fun3(a)
i=find(a == max(a));
j=find(a == min(a));
disp(sum((a(j:i)>0)) -2);
end
Задание:
4. Просуммировать отрицательные элементы матрицы, лежащие ниже главной диагонали.
Выполнение:
function c = fun4(a)
disp(sum(sum(find(triu(a)<0))));
end
Задание:
5. Заменить положительные элементы вектора суммой всех его отрицательных элементов.
Выполнение:
function c = fun5(a)
a( a > 0 ) = sum( a(a < 0) );
c=disp(a);
Задание:
6. Заполнить квадратную матрицу А, каждый элемент которой определяется следующим образом:
Выполнение:
function c = fun6(A)
clc
clear
n=input(' Введите размер матрицы ');
for i=1:n
for j=1:n
if i>j
A(i,j)=i-j;
end
if i==j
A(i,j)=i+j;
end
if i<j
A(i,j)=i^2+j^2;
end
end
end
display(A)
Задание:
7. Вычислить сумму:
Выполнение:
function c = fun7(m,n)
syms x a b
c=symsum(symsum(((x^(a+b))/((a+b)^2)),b,1,m),a,1,n);
disp(c);
Задание:
8. Для матрицы размера п на m найти значение выражения:
Выполнение:
function c = fun8(A)
c=sum(prod(A),2);
disp(c)
Задание:
9. По заданному х найти максимальное значение п, для которого следующая сумма не превосходит 100:
Выполнение:
function c = fun9(x)
s=0;
k=0;
while s<=100
k=k+1;
u=k*(x.^k);
s=s+u;
end
n=k;
display(n) ;
Задание:
10. Вычислить сумму:
с заданной точностью ε. Суммировать следует, пока модуль отношения текущего слагаемого к уже накопленной части суммы превосходите.
Сравнить результат с точным значением, построив графики ех и s(x) для .
Выполнение:
function c =fun10()
clc
N = 10;
eps = 1e-12;
eps_current = 1;
a = 1;
mysum = @(a,x) sum(a.^(1:x) ./ cumprod(1:x));
S = mysum(a, N);
while(eps_current > eps)
S_old = S;
N = 2 * N;
S = mysum(a, N);
eps_current = (S - S_old) / S_old;
end
Задание:
11. Заданы окружности, координаты их центров содержатся в массивах х и у, а радиусы в массиве r. Известны координаты некоторой точки. Требуется вывести график, на котором маркером отмечено положение точки, синим цветом изображены те окружности, внутри которых лежит точка, а остальные окружности нарисованы красным цветом.
Выполнение:
function c= fun11(x_center,y_center,R,x1,x2)
fi = 0:0.01:2*pi;
x = x_center + R * cos(fi);
y = y_center + R * sin(fi);
plot(x,y)
hold on
plot(x1,x2,'.r');
hold off
//сохраненные файл-функции находятся в архиве, в папке «Лабораторная работа 3 4 5 »