Last active
November 15, 2016 14:16
-
-
Save Zulcom/a65484efe4eb88c74fd06a5b83e9202c to your computer and use it in GitHub Desktop.
Informatics commission - Matlab
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% 13. Написать функцию rand_sum(N, M) на языке MATLAB, которая возвращает вектор из | |
% N сумм, каждая из которых состоит из M случайных слагаемых, равномернораспределённых в интервале [0; 1]. | |
function B = rand_sum(N, M) % объявляем функцию rand_sum в которую передается N и M, и возвращает она B | |
rng('shuffle') % инициализируем генератор случайных чисел | |
B = sum(randn(M,N)); % присваиваем B результат суммы случайно сгенерированной матрицы размером M а N | |
end % закрываем объявление функции |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%15. Написать программу на языке MATLAB, которая рисует точку, движущуюся по параболе. | |
b = axes; % создаем систему координат b | |
prom = -2:0.01:2; %создаем отрезок, на котором будет построен график параболы | |
plot(b,prom,prom.^2,':'); % строим на системе координат b график параболы для отрезка prom. Обратите внимание, дял возведения в степень используется точка, поскольку prom - вектор | |
hold (b,'on'); % делаем так, чтобы на систему координат каждый раз новая точка наносилась поверх, а не стиралось всё и писалось снова | |
while true %цикл, чтобы когда точки достигали конца промежутка, пробежка начиналась снова | |
for x = -2:0.01:2 % цикл пробежки по x в промежутке от -2 до 2, где шаг хода равен 0.09 | |
c = scatter(b,x,x.*x,15,'filled','black'); % построить окружность на системе координат b в точке (x,x*x) радиусом 15, заполненный черным цветом | |
drawnow % построить окружность прямо сейчас | |
delete(c); % удалить с системы координат созданную окружность, чтобы в каждый момент времени на графике была лишь одна окружность | |
end %завершение цикла пробежки | |
end %завершение вечного цикла (условно, цикл на деле может быть закончен только принудительным прерыванием программы |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%16. Написать программу на языке MATLAB, которая рисует точку, движущуюся по синусоиде. | |
b = axes; % создаем систему координат b | |
prom = -pi:0.01:5*pi; %создаем отрезок, на котором будет построен график синуса | |
plot(b,prom,sin(prom)); % строим на системе координат b график синуса для отрезка prom | |
hold (b,'on'); % делаем так, чтобы на систему координат каждый раз новая точка наносилась поверх, а не стиралось всё и писалось снова | |
while true %цикл, чтобы когда точки достигали конца промежутка, пробежка начиналась снова | |
for x = -pi:0.09:5*pi % цикл пробежки по x в промежутке от -pi до 5*pi, где шаг хода равен 0.09 | |
c = scatter(b,x,sin(x),15,'filled','black'); % построить окружность на системе координат b в точке (x,sin(x)) радиусом 15, заполненный черным цветом | |
drawnow % построить окружность прямо сейчас | |
delete(c); % удалить с системы координат созданную окружность, чтобы в каждый момент времени на графике была лишь одна окружность | |
end %завершение цикла пробежки | |
end %завершение вечного цикла (условно, цикл на деле может быть закончен только принудительным прерыванием программы |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% 4 .Написать программу на языке MATLAB, которая строит график функции sin(x^2) на | |
% отрезке [−π, π]. На графике должны быть подписи осей, заголовок, и координатная сетка | |
x= -pi:0.1:pi; % задаём вектор аргументов | |
y = sin(x.^2); % задаем вектор значений | |
plot(y); % рисуем график | |
grid on; % включаем коорд. сетку | |
title('sin(x^2)'); % подписываем график | |
xlabel ('Ось x'); % подписываем ось х ... | |
ylabel ('Ось y'); % и ось у |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% 5. Написать программу на языке MATLAB, которая строит график функции sin(x2+ y2) | |
% на отрезке [−π, π] в виде СЕТКИ. На графике должны быть подписи осей, заголовок, и координатная сетка. | |
% задаём область определения функции двух переменных на промежутке от -pi до pi по х | |
% и на промежутке от -1 до 1 по y, записываем это в матрицы x и y | |
[x,y] = meshgrid(-pi:0.1:pi,-1:0.1:1); | |
z = sin(x.^2 + y.^2); % задаём функцю двух переменных | |
% Обратите внимание на точки перед знаком вохведения в степень – они указывают на матричное произведение, поскольку x и y матрицы | |
mesh(x,y,z); % строим график функции в виде СЕТКИ | |
title('sin(x^2 + y^2)'); % подписываем график | |
xlabel ('Ось x'); % подписываем ось х ... | |
ylabel ('Ось y'); % ось у ... | |
zlabel ('Ось z'); % и ось z |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% 6. Написать программу на языке MATLAB, которая строит график функции cos(x2+ y2) | |
% на отрезке [−π, π] в виде ПОВЕРХНОСТИ. На графике должны быть подписи осей, заголовок, и координатная сетка. | |
% задаём область определения функции двух переменных на промежутке от -pi до pi по х | |
% и на промежутке от -1 до 1 по y, записываем это в матрицы x и y | |
[x,y] = meshgrid(-pi:0.1:pi,-1:0.1:1); | |
z = cos(x.^2 + y.^2); % задаём функцю двух переменных. | |
% Обратите внимание на точки перед знаком вохведения в степень – они указывают на матричное произведение, поскольку x и y матрицы | |
surf(x,y,z); % строим график функции в виде ПОВЕРХНОСТИ | |
title('cos(x^2 + y^2)'); % подписываем график | |
xlabel ('Ось x'); % подписываем ось х ... | |
ylabel ('Ось y'); % ось у ... | |
zlabel ('Ось z'); % и ось z |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% 7. Написать программу на языке MATLAB, которая генерирует N случайных чисел, | |
% равномерно распределённых в интервале от 0 до 2, и строит их гистограмму. На | |
% графике должны быть подписи осей, заголовок, и координатная сетка. | |
N = input('Vvedite N:'); % вводим N их Command Window | |
rng('shuffle') % инициализируем генератор случайных чисел | |
hist (2.*rand(N,1)); % рисуем гистограмму случайных чисел от 0 до 2 | |
grid on; % включаем коорд. сетку | |
title(['Гистограмма распределения ' num2str(N) ' случайных чисел в промежутке [0;2]']); % подписываем график | |
xlabel ('Элементы'); % подписываем ось x ... | |
ylabel ('Количество элементов'); % и ось y |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% 8. Написать программу на языке MATLAB, которая сортирует строки матрицы A, | |
% состоящей из N строк и M столбцов, по неубыванию первого элемента строки. | |
N = input('Vvedite N:'); % вводим N из Command Window | |
M = input('Vvedite M:'); % вводим M из Command Window | |
rng('shuffle') % инициализируем генератор случайных чисел | |
A = randn(N,M); % генерируем матрицу случайных чисел размером NxM | |
disp (sortrows(A,1)); % сортируем по первому элементу строки и выводим её в Command Window |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% 12. Написать функцию cross_mat(N, M) на языке MATLAB, которая возвращает матрицe из N строк и M столбцов, | |
% у которой на главной и побочной диагоналях стоят единицы, а остальные элементы равны нулю | |
function B = cross_mat(N,M) % объявляем функцию cross_mat в которую передается N и M, и возвращает она B | |
B = eye(N,M); % создаём единичную матрицу NxM | |
B = B + fliplr(B); % добавляем к ней её же, но с переставленными столбцами слева направо | |
B(B==2) = 1; % если матрица квадратная, то в цетральном элементе получится 1+1=2. Устанавливаем всем 2-йкам в матрице единицы. | |
end % закрываем объявление функции | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% 10. Написать функцию invert_rows(A) на языке MATLAB, которая переставляет столбцы | |
% матрицы A в обратном порядке и возвращает результат | |
function B = invert_rows(A) % Объявляем функцию с названием инверт_ровс, которая получает матрицу А и возвращает матрицу В | |
B = fliplr(A); % переворачиваем матрицу | |
end % Закрываем реализацию функции |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% 14. Написать функцию is_comm(A, B) на языке MATLAB, которая возвращает истину, | |
% если умножение матриц A, B является коммутативным (A B = B A), и ложь, если нет. | |
function B = is_comm(A,B) % объявляем функцию is_comm в которую передается A и B, и возвращает она B | |
B = isequal(A*B,B*A); % присваиваем b результат проверки выражения | |
end % закрываем объявление функции |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% 9. Написать функцию plot_row_sums(A) на языке MATLAB, | |
% которая отображает суммы cтрок матрицы A в виде столбчатой диаграммы | |
function plot_row_sums(A) % объявляем функцию plot_row_sums, аргумент у неё будет массив A | |
bar(sum(A)); % рисуем столбчатую диаграмму сумм стоблцов матрицы А | |
end % закрываем реализацию функции |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% 11. Написать функцию remove_negative(A) на языке MATLAB, | |
% которая из матрицы A удаляет строки с отрицательной суммой и возвращает результат. | |
function B = remove_negative(A) % объявляем функцию remove_negative, которая принимает матрицу A и возвращает матрицу B | |
B = A; % чтобы не зачищать исходную матрицу, будем работать с матрицей B | |
rowsums = sum(B'); % считаем сумму всех столбцов транспонированной матрицы B | |
v =[]; % создаем вектор, в котором будем хранить номера строк, в которых сумма элементов меньше 0 | |
for i = 1:length(rowsums) % бежим циклом от 1 до кол-ва строк | |
if (rowsums(i)<0) %если сумма в строке меньше 0 | |
v(end+1) = i; %записываем номер стоблца в конец вектора v | |
end | |
end %закончили бегать | |
B(v,:)=[]; % удаляем найденные строки | |
end % закрываем объявление функции | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment