Den_1
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
ФИЛИАЛ ГОСУДАРСТВЕННОГО ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ
(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)» в г. Смоленске
Кафедра вычислительной техники
Отчет
по практике.
Тема: «Основы работы с математическим пакетом MATLAB»
Студент: Котосов С.В.
Группа: АС-14
Преподаватель: Зернов М.М.
Смоленск 2015
День 1
ЛАБОРАТОРНАЯ РАБОТА №1
Основы работы с математическим пакетом MATLAB
Цель работы: познакомиться с программной средой для математических расчетов MATLAB, освоить синтаксис и семантику языка программирования MATLAB.
-
Выполнение элементарных математических операций
1.1. Задать с помощью операции присвоения значения следующим скалярным переменным:
a = 23;
b = 71;
c = 604;
d = 303;
Текст М-файла:
a=23;
b=71;
c=604;
d=303;
-
Вычислить значение следующих выражений (для вычисления факториала используется функция factorial):
1) ;
2) ;
3) ;
4) ;
5) .
Текст М-файла:
a+b
(a-b)*c
c/a+b/d
c^(((factorial(b))^(1/a))/log(a/b))
(exp(-(a+b)*a/((c+d)*c))/abs(c^2-d^2)+tan(a*b*c*d))/log10(1.5)
Результат выполнения:
ans =
94
ans =
-28992
ans =
26.4952
ans =
0
ans =
-9.0862
-
Выполнение матричных расчетов
2.1. Задать с помощью операции присвоения:
Текст М-файла:
A=[1 2 3;5 6 7;9 11 4]
B=[10 11 13]
C=[1+3j 7+2j 9-5j;4-8j 15+9j -1+1j]
D=[1 7 9;8 9 -1;-1 3 8]
Результат выполнения:
A =
1 2 3
5 6 7
9 11 4
B =
10 11 13
C =
1.0000 + 3.0000i 7.0000 + 2.0000i 9.0000 - 5.0000i
4.0000 - 8.0000i 15.0000 + 9.0000i -1.0000 + 1.0000i
D =
1 7 9
8 9 -1
-1 3 8
2.2. Вычислить значение следующих выражений:
1)
2)
3)
4) (определитель матрицы A)
5) (правое матричное деление)
6) (левое матричное деление)
7) (матричное произведение)
8) (поэлементное произведение)
9) (правое поэлементное деление)
10) (левое поэлементное деление)
Текст М-файла:
B*A
A*B'
inv(A)
det(A)
A/B
B'\A
A*D
A.*D
A./D
D.\A
ans =
182 229 159
ans =
71
207
263
ans =
-1.4722 0.6944 -0.1111
1.1944 -0.6389 0.2222
0.0278 0.1944 -0.1111
ans =
36.0000
ans =
0.1821
0.5308
0.6744
ans =
0.4667 0.5872 0.4077
ans =
14 34 31
46 110 95
93 174 102
ans =
1 14 27
40 54 -7
-9 33 32
ans =
1.0000 0.2857 0.3333
0.6250 0.6667 -7.0000
-9.0000 3.6667 0.5000
ans =
1.0000 0.2857 0.3333
0.6250 0.6667 -7.0000
-9.0000 3.6667 0.5000
ans =
18 20 12
ans =
11
19
12
ans =
10 1
8 14
ans =
5.0000
15.0000
27.5000
2.3. Для матрицы C выполнить обычную операцию транспонирования и операцию транспонирования с комплексным сопряжением.
Текст М-файла:
C.'
C'
Результат выполнения:
ans =
1.0000 + 3.0000i 4.0000 - 8.0000i
7.0000 + 2.0000i 15.0000 + 9.0000i
9.0000 - 5.0000i -1.0000 + 1.0000i
ans =
1.0000 - 3.0000i 4.0000 + 8.0000i
7.0000 - 2.0000i 15.0000 - 9.0000i
9.0000 + 5.0000i -1.0000 - 1.0000i
2.4. С помощью оператора «:» выполнить:
-
матричное сложение вектора-строки B и второй строки матрицы D
-
матричное сложение транспонированного вектора-строки B и первого столбца матрицы A
-
-
Текст М-файла:
B+D(2,:)
B'+D(:,1)
A(1:2,1:2)+D(2:3,2:3)
1.5*A(:,2)+(D(3,:))'+3
Результат выполнения:
ans =
18 20 12
ans =
11
19
12
ans =
10 1
8 14
ans =
5.0000
15.0000
27.5000
-
Построение графиков
3.1. Построить график функции на отрезке [0, 15] с шагом 0.1.
Текст М-файла:
x=[0:0.1:15];
y=a*x+b;
figure(1);
plot(x,y);
Результат выполнения:
-
Построить график функции на отрезке [-0.05, 0.05] с шагом 0.001.
Текст М-файла:
t=[-0.05:0.001:0.05];
f=sin(100*pi*t);
figure(2);
plot(t,f);
Результат выполнения:
-
Построить график функции на отрезке [0.00001, 100] с шагом 0.1 красным цветом (red). Включить сетку (grid on), добавить маркер «x».
Текст М-файла:
V=[0.00001:0.1:100];
dBm=10*log(V.^2/[50*0.001])/log(10);
figure(3);
plot(V,dBm,'rx');
grid on;
Результат выполнения:
-
Построить в одной координатной плоскости графики функций и на отрезке [0.001, 0.03] с шагом 0.001. Добавить сетку. Установить режим вписывания графиков в окно системы координат (axis tight).
Текст М-файла:
t=[0.001:0.001:0.03];
V=[0.001:0.001:0.03];
f=sin(100*pi*t);
dBm=10*log(V.^2/50*0.001)/log(10);
figure(4);
plot(t,f,'b',V,dBm,'g');
grid on;
axis tight;
Результат выполнения:
-
Обработка векторов
-
Задать вектор-столбец, состоящий из N = 1000000 случайных элементов с равномерным законом распределения на отрезке [0, 500] (с помощью функции rand: rand(m, n); – генерация матрицы размерностью из случайных элементов с равномерным законом распределения на отрезке [0, 1]).
-
Написать три M-функции (в отдельных M-файлах с именами, отличными от mean, min, max) для определения математического ожидания (среднего арифметического) элементов вектора, минимального и максимального элементов вектора (с использованием операторов ветвления и циклов).
-
С помощью команд tic и toc измерить время обработки с помощью созданных функций вектора из п.4.1.
-
С помощью команд tic и toc измерить время обработки вектора из п.4.1. с помощью стандартных функций mean, min, max.
-
Сравнить результаты п.4.3 и 4.4. Сделать выводы.
-
Выделить в векторе из п.4.1. элементы со значением больше 250 и сохранить их в отдельный вектор. Выполнить функции mean, min, max над полученным вектором.
-
Выделить 100 последних элементов вектора из п.4.1. и сохранить их в отдельный вектор.
-
Написать M-функцию (в отдельном файле с именем, отличным от sort) для сортировки элементов вектора из п.4.7 по возрастанию (с использованием операторов ветвления и циклов).
-
Построить графики значений вектора до и после сортировки.
-
С помощью функций tic и toc сравнить время сортировки вектора из п.4.1 функцией из п.4.8 и стандартной функцией sort. Сделать выводы.
Текст М-файла:
N=1000000;
P=rand(N,1)*500;
tic
srd=sred(P)
toc
tic
mini=Mini(P)
toc
tic
maxi=Maxi(P)
toc
tic
mean(P)
toc
tic
min(P)
toc
tic
max(P)
toc
Результат выполнения:
srd =
249.8575
Elapsed time is 0.014061 seconds.
mini =
6.9898e-04
Elapsed time is 0.014491 seconds.
maxi =
499.9995
Elapsed time is 0.015111 seconds.
ans =
249.8575
Elapsed time is 0.189595 seconds.
ans =
6.9898e-04
Elapsed time is 0.018585 seconds.
ans =
499.9995
Elapsed time is 0.003620 seconds.
Сравнивая результаты пунктов 4.3 и 4.4 делаю вывод, что функции, написанные вручную выполняются медленнее предустановленных.
Выполняем задание далее:
Текст М-файла:
for i=1:1:length(P)
if P(i)>250
W(n,1)=P(i);
n=n+1;
end
end
n=1;
for i=(length(P)-99):1:length(P)
E(n,1)=P(i);
n=n+1;
end
R=sortirovka(E);
i=[1:1:100];
u=R(i);
y=E(i);
figure(5);
plot(i,R,'ro-',i,E,'go-');
grid on;
Текст М-файла:
tic
R=sortirovka(E);
toc
tic
sort(E);
toc
Результат выполнения:
Elapsed time is 0.000180 seconds.
Elapsed time is 0.018682 seconds.
Тексты функций:
Sred
function y = sred(P)
S=0;
for i=1:1:length(P)
S=S+P(i);
end
y=S/length(P);
Mini
function y = Mini( P )
Min = P(1);
for i=1:1:length(P)
if P(i)<Min
Min= P(i);
end
end
y=Min;
Maxi
function y = Maxi( P )
Max=P(1);
for i=1:1:length(P)
if P(i)>Max
Max=P(i);
end
end
y=Max;
Sortirovka
function y = sortirovka( E )
for i=1:1:(length(E)-1)
for j=(i+1):1:length(E)
if E(i)>E(j)
x=E(i);
E(i)=E(j);
E(j)=x;
end
end
end
y=E;