лабораторная матлаб. Отчет. Вариант 1 Параметры векторов и матриц
![]()
|
Вариант 1 1. Параметры векторов и матриц Задаться вектором V и матрицей M. ![]() ![]() Г – последняя цифра текущего года, N – номер обучающегося в списке группы. Г и N не закладывать как переменные. Взять конкретные значения для каждой из позиции (допустимо объединить значения знаками операций, допустимо так же записывать заранее вычисленный результат). ![]() %Задаем Матрицы V=[2020+1+1;2020+1+2;2020+1+3]; M=[2020+1+1 2020+1+2 2020+1+3; 2020+1+4 2020+1+5 2020+1+5; 2020+1+7 2020+1+8 2020+1+9]; Г=2020; N=1 Листинг в Matlab Для вектора и матрицы применить следующие функции: disp(V); ![]() Выводится вектор V disp(V(1)); ![]() Выводится 1 элемент вектора V length(V); ![]() Выводится длина вектора V size(V); ![]() Выводится размерность вектора V как матрицы (3 строки и 1 столбец) disp(M); ![]() Выводится матрица М disp(M(1)); ![]() Выводится первый элемент матрицы М disp(M(1,1)); ![]() Выводится элемент строки 1 и столбца 1 матрицы М length(M); ![]() Выводится длина матрицы М как вектора size(M). ![]() Выводится размерность матрица М как матрицы 2. Работа с переменными в матрице ![]() ![]() Где a = Г * N, b = Г + N, Г – последняя цифра текущего года, N – номер варианта обучающегося в списке группы. Вывести каждое значение в матрице через соответствующие индексы элементов. Листинг в Matlab ![]() clc; a=2020*1; b=2020+1; M1=[2./(a-b) 2./(a+b); (a-b)./2 (a+b)./2]; disp('Элемент 1,1'); disp(M1(1,1)); disp('Элемент 1,2'); disp(M1(1,2)); disp('Элемент 2,1'); disp(M1(2,1)); disp('Элемент 2,2'); disp(M1(2,2)); Результат ![]() 3. Работа с матрицей через индексацию Заполнить матрицу M2 теми же элементами, что содержатся в M и в том же порядке, но заполнение значениями матрицы выполнить через соответствующие индексы. Например, ![]() Листинг в Matlab ![]() clc; a=2020*1; b=2020+1; M1=[2./(a-b) 2./(a+b); (a-b)./2 (a+b)./2]; M2(1,1)=M1(1,1); M2(1,2)=M1(1,2); M2(2,1)=M1(2,1); M2(2,2)=M1(2,2); 4. Обособление столбца матрицы Создать вектор ![]() ![]() Прокомментировать какими именно элементами из M он заполнился. Создать вектор ![]() ![]() Прокомментировать, какими именно элементами из М или М2 он заполнился. Вывести на лист содержимое ![]() ![]() ![]() ![]() Листинг в Matlab ![]() clc; a=2020*1; b=2020+1; M1=[2./(a-b) 2./(a+b); (a-b)./2 (a+b)./2]; disp('Элемент 1,1'); disp(M1(1,1)); disp('Элемент 1,2'); disp(M1(1,2)); disp('Элемент 2,1'); disp(M1(2,1)); disp('Элемент 2,2'); disp(M1(2,2)); Результат ![]() Вектор V1 заполнился элементами 2 столбца матрицы, вектор V2 – элементами 2 строки. 5. Запись матрицы в файл Индексы i2 и j2 распределены по диапазону [1..8], i3 – по диапазону [1..4]. Создать матрицу по следующему правилу ![]() ![]() Создать вектор по следующему правилу ![]() Создать вектор по следующему правилу ![]() Получить матрицу А, первый столбец которой – Х, второй столбец – Y. Внимание! Необходимо именно получить по имеющимся данным, а не ввести с клавиатуры заново. Записать матрицу А в файл по формату: "ВАРИАНТ_ФАМИЛИЯ_СТУДЕНТА0" Матрицу S записать в файл по формату: "ВАРИАНТ_ФАМИЛИЯ_СТУДЕНТА1" Матрица R содержит квадраты элементов матрицы S. Матрицу R записать в файл по формату: "ВАРИАНТ_ФАМИЛИЯ_СТУДЕНТА2" Листинг в Matlab ![]() clc; clear all; for i2=1:8 for j2=1:8 S(i2,j2)=1*i2+2020*j2 end end; for i3=1:4 X(i3,1)=2*2020+2*1; Y(i3,1)=X(i3).^2; end; A=[X Y]; fid = fopen('1_АвдеевА0.txt', 'wt'); % открыли файл для записи for j=1:2 for i=1:4 fprintf(fid,' %d', A(i,j)); end; fprintf(fid, '\n'); end; fclose(fid); fid = fopen('1_АвдеевА1.txt', 'wt'); % открыли файл для записи for j=1:8 for i=1:8 fprintf(fid,' %d', S(i,j)); end; fprintf(fid, '\n'); end; fclose(fid); fid = fopen('1_АвдеевА2.txt', 'wt'); % открыли файл для записи for j=1:8 for i=1:8 R(i,j)=S(i,j).^2; fprintf(fid,' %d', R(i,j)); end; fprintf(fid, '\n'); end; fclose(fid); Результат Файл 1_АвдеевА0.txt ![]() Файл 1_АвдеевА1.txt ![]() Файл 1_АвдеевА2.txt ![]() 6. Чтение матрицы из файла Выполнить чтение данных из файла по формату: "ВАРИАНТ_ФАМИЛИЯ_СТУДЕНТА3" Файл создать вручную и заполнить произвольными значениями. Листинг в Matlab ![]() clc; clear all; fid = fopen('1_АвдеевА3.txt', 'r'); % открыли файл для чтения formatSpec = '%d %f'; sizeA = [3 Inf]; A = fscanf(fid,formatSpec,sizeA); fclose(fid); disp(A); Файл 1_АвдеевА3.txt ![]() Результат ![]() 7. Арифметика с матрицами а) Сложение матриц Пусть ![]() ![]() ![]() ![]() Вывести результаты: ![]() ![]() ![]() ![]() Листинг в Matlab ![]() clc; clear all; L=[2020+1+1 2020+1+2 2020+1+3; 2020+1+4 2020+1+5 2020+1+5; 2020+1+7 2020+1+8 2020+1+9]; K=[0 -1 -2; 1 0 -1; 2 1 0]; %Сложение матриц disp('L+K='); disp(L+K); for i=1:3 for j=1:3 M3(i,j)=L(i,j)+K(i,j); end end; disp('M3='); disp(M3); Результат ![]() б) Вычитание матриц Пусть ![]() ![]() ![]() ![]() Вывести результаты: ![]() ![]() ![]() ![]() Листинг в Matlab ![]() %Вычитание матриц disp('L-K='); disp(L-K); for i=1:3 for j=1:3 M4(i,j)=L(i,j)-K(i,j); end end; disp('M4='); disp(M4); Результат ![]() в) Сложение матрицы с константой Пусть ![]() ![]() Вывести результаты: ![]() ![]() ![]() ![]() Листинг в Matlab ![]() %Сложение матрицы с константой disp('1+L='); disp(1+L); for i=1:3 for j=1:3 M5(i,j)=1+L(i,j); end end; disp('M5='); disp(M5); Результат ![]() г) Перемножение матриц Пусть ![]() ![]() ![]() ![]() Выполнить умножение ![]() Получить тот же результат поэлементно с использованием соответствующих операторов. Листинг в Matlab ![]() %Перемножение матриц A3=[1+2020+1 1+2020+3 1+2020+5 1+2020+7; 1+2020+2 1+2020+4 1+2020+6 1+2020+8]; B3=[1+2020+1 1+2020+5; 1+2020+2 1+2020+6 1+2020+3 1+2020+7 1+2020+4 1+2020+8]; disp('A3*B3='); disp(A3*B3); for i=1:2 for j=1:2 S=0; for k=1:4 S=S+A3(i,k)*B3(k,j); end; M5_1(i,j)=S; end end; disp('M5_1='); disp(M5_1); Результат ![]() д) Умножение матрицы на константу Вывести -L. Пояснить уместность данного примера для рассмотрения умножения матрицы на константу. Получить матрицу ![]() ![]() Листинг в Matlab ![]() %Умножение матрицы на константу disp('-L='); disp(-1*L); for i=1:3 for j=1:3 T(i,j)=-1*L(i,j); end end; disp('T='); disp(T); Результат ![]() е) Определитель матрицы Вычислить определители (det) всех ранее созданных массивов, подходящих под условие расчёта определителя. Прокомментировать невозможность вычисления определителя для остальных массивов. Листинг в Matlab ![]() %Определитель матрицы disp('Определитель L='); disp(det(L)); disp('Определитель K='); disp(det(K)); disp('Определитель M3='); disp(det(M3)); disp('Определитель M4='); disp(det(M4)); disp('Определитель M5='); disp(det(M5)); disp('Определитель M5_1='); disp(det(M5_1)); disp('Определитель T='); disp(det(T)); Результат ![]() Остальные матрицы не квадратные, определитель для них не существует ж) Скалярное произведение векторов Пусть ![]() ![]() ![]() ![]() Перемножить скалярно ![]() Вывести результат скалярного произведения. Проверить результат скалярного произведения поэлементно: ![]() Где N – номер варианта обучающегося, NN – размерность вектора, Г – последняя цифра текущего года. Листинг в Matlab ![]() % Скалярное произведение векторов X=[1+2020+10; 1+2020+11; 1+2020+12]; Y=[1+2020+13; 1+2020+14; 1+2020+15]; disp('(X,Y)='); disp(dot(X,Y)); S=0; for i=1:3 S=S+X(i)*Y(i); end disp('S='); disp(S); Результат ![]() з) Векторное произведение векторов Пусть ![]() ![]() ![]() ![]() Получить векторное произведение векторов ![]() Формула для векторного произведения следующая: ![]() ![]() ![]() ![]() Проверить соотношения: ![]() ![]() ![]() Рассчитать ![]() ![]() ![]() ![]() Листинг в Matlab ![]() % Векторное произведение векторов disp('X x Y='); disp(cross(X,Y)); Z(1,1)=((-1).^(1-1))*det([X(2) X(3); Y(2) Y(3)]); Z(2,1)=((-1).^(2-1))*det([X(1) X(3); Y(1) Y(3)]); Z(3,1)=((-1).^(3-1))*det([X(1) X(2); Y(1) Y(2)]); disp('Z='); disp(Z); % Проверяем соотношения fi=acos(dot(X,Y)./(norm(X).*norm(Y))); disp('модуль Z='); disp(norm(Z)); disp('модуль Z по формуле='); disp(norm(X).*norm(Y).*sin(fi)); Результат ![]() и) Суммирование элементов вектора Использовать функцию sum для нахождения суммы элементов векторов X и Y. Проверить результат суммированием элементов вектора через их индексы. Листинг в Matlab ![]() % Суммирование элементов вектора disp('sum(X)='); disp(sum(X)); disp('sum(Y)='); disp(sum(Y)); Sx=0;Sy=0; for i=1:3 Sx=Sx+X(i); Sy=Sy+Y(i); end; disp('Сумма Х по элементно'); disp(Sx); disp('Сумма Y по элементно'); disp(Sy); Результат ![]() к) След матрицы (сумма элементов на главной диагонали) Использовать функцию trace. Получить тот же результат с использованием операции суммирования. Листинг в Matlab ![]() % След матрицы (сумма элементов на главной диагонали) disp('trace(L)='); disp(trace(L)); trL=0; for i=1:3 trL=trL+L(i,i); end; disp('След матрицы с использованием операции суммирования'); disp(trL); Результат ![]() л) Векторизация Пусть ![]() ![]() Векторизовать sin(M6). Прокомментировать полученный результат. Посчитать результат векторизации символьно и векторно. Листинг в Matlab ![]() % Векторизация M6=[0 1*pi./3; 1*pi/3 1*pi]; disp('Векторизация sin(M6)='); disp(sin(M6)); for i=1:2 for j=1:2 V1_1(i,j)=sin(M6(i,j)); end end; disp('Векторизация по элементно'); disp(V1_1); disp('Векторизация векторно'); disp([sin(M6(:,1)) sin(M6(:,2))]); Результат ![]() м) Обратная матрица Пусть ![]() ![]() Вывести обратную к ней матрицу. Посчитать определитель матрицы. Листинг в Matlab ![]() % Обратная матрица A4=[2020+1+9 2020+1+8 2020+1+7; 2020+1+3 2020+1+0 2020+1+1; 2020+1+2 2020+1+4 2020+1+1]; disp('Обратная матрица'); disp(inv(A4)); disp('Определитель обр матрица'); disp(det(inv(A4))); Результат ![]() н) Единичная матрица Получить единичную матрицу ![]() ![]() eye(Nmod 5) Проверить другие способы получения единичной матрицы: ![]() ![]() xmody – результат деления значения x на значение y. Листинг в Matlab ![]() % Единичная матрица disp('Единичная матрица'); B5=eye(5,5); disp(B5); disp('Единичная матрица- другие способы получения '); A4_1=inv(A4); disp(A4*A4_1); disp(A4^0); Результат ![]() о) Трансформирование вектора в диагональную матрицу Пусть ![]() Получить в диагональную квадратную матрицу ![]() ![]() Листинг в Matlab ![]() % Трансформирование вектора в диагональную матрицу V5=[2020+1+1;2020+1+2;2020+1+3]; disp('Диагональная матрица'); C5=diag(V5); disp(C5); Результат ![]() п) Фрагментированные матрицы Выполнить фрагментацию матрицы ![]() ![]() ![]() Выполнить фрагментацию матрицы ![]() ![]() ![]() Выполнить фрагментацию матрицы ![]() ![]() ![]() Z = A4([диапазон_строк], [диапазон_столбцов]) Листинг в Matlab ![]() % Фрагментированные матрицы disp('Фрагментированные матрицы'); Z4=A4(2:3,2:3); disp('Z4='); disp(Z4); Z5=A4(3:3,2:3); disp('Z5='); disp(Z5); Z6=A4(1:3,2:2); disp('Z6='); disp(Z5); Результат ![]() р) Склейка матриц по горизонтали Получить матрицу ![]() ![]() ![]() ![]() Листинг в Matlab ![]() % Склейка матриц по горизонтали F=horzcat(V5,Z,Z6); disp('F='); disp(F); Результат ![]() с) Склейка по вертикали Получить матрицу ![]() ![]() ![]() Листинг в Matlab ![]() % Склейка матриц по вертикали G=vertcat(A4,L); disp('G='); disp(G); Результат ![]() т) Сортировка по столбцу Для нечётных вариантов выполнить сортировку полученной матрицы ![]() Для чётных вариантов выполнить сортировку полученной матрицы ![]() Листинг в Matlab ![]() % Сортировка по столбцу disp('Сортировка по 3 столбцу'); disp(sortrows(G,3)); Результат ![]() у) Сортировка по строке Для нечётных вариантов выполнить сортировку полученной матрицы ![]() Для чётных вариантов выполнить сортировку полученной матрицы ![]() Листинг в Matlab ![]() % Сортировка по строке disp('Сортировка по 6 строке'); G1=sortrows(G',6); disp(G1'); Результат ![]() ф) Обычная сортировка элементов вектора Пусть ![]() Выполнить обычную сортировку ![]() ![]() Листинг в Matlab ![]() % Обычная сортировка элементов вектора V6=[1+mod(6,3);1+mod(2,4);1+mod(8,5)]; disp('Обычная сортировка'); disp(sort(V6)); Результат ![]() х) Инверсия элементов вектора Пусть ![]() Инвертировать матрицу ![]() Листинг в Matlab ![]() % Инверсия элементов вектора disp('Инверсия элементов вектора слева направо'); disp(fliplr(V6')); disp('Инверсия элементов вектора сверху вниз'); disp(flipud(V6)); Результат ![]() 8. Решение СЛАУ Решить СЛАУ через матрицы: - методом Крамера; - методом обратной матрицы. Решить СЛАУ через символику. Применив к расчётам функции «sym» и «syms». ![]() Листинг в Matlab ![]() clc; clear all; A=[1 3 0 3; -1 3 -1 2; 1 4 0 4; 1 3 1 3]; b=[7;5;9;10]; % Решение методом Крамера A1=A;A2=A;A3=A;A4=A; A1(:,1)=b; A2(:,2)=b; A3(:,3)=b; A4(:,4)=b; x1(1,1)=det(A1)./det(A); x1(2,1)=det(A2)./det(A); x1(3,1)=det(A3)./det(A); x1(4,1)=det(A4)./det(A); disp('Решение методом Крамера'); disp(x1); disp('Решение методом обратной матрицы'); x2=inv(A)*b; disp(x2); % Решить СЛАУ через символику syms x1 x2 x3 x4; X=[x1;x2;x3;x4]; E=A*X-b; X=solve(E); disp('Решение СЛАУ через символику'); disp(double(X)); Результат ![]() Варианты задания (согласно номеру обучающегося в списке учебной группы):
|