Главная страница
Навигация по странице:

  • Для вектора и матрицы применить следующие функции

  • 2. Работа с переменными в матрице

  • 3. Работа с матрицей через индексацию

  • 4. Обособление столбца матрицы

  • 5. Запись матрицы в файл

  • 6. Чтение матрицы из файла

  • 7. Арифметика с матрицами а) Сложение матриц

  • Варианты задания (согласно номеру обучающегося в списке учебной группы)

  • лабораторная матлаб. Отчет. Вариант 1 Параметры векторов и матриц


    Скачать 456.79 Kb.
    НазваниеВариант 1 Параметры векторов и матриц
    Анкорлабораторная матлаб
    Дата24.02.2023
    Размер456.79 Kb.
    Формат файлаdocx
    Имя файлаОтчет.docx
    ТипДокументы
    #953024

    Вариант 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) нечётные варианты, - (второй столбец M) чётные варианты.
    Прокомментировать какими именно элементами из M он заполнился.

    Создать вектор - (первый столбец из транспонированной M2) нечётные варианты, - (второй столбец из транспонированной M2) чётные варианты.

    Прокомментировать, какими именно элементами из М или М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);

    Результат



    в) Сложение матрицы с константой

    Пусть для нечётных вариантов;

    для чётных вариантов.

    Вывести результаты: и , если известно, что задана через индексированные элементы , где N – номер варианта обучающегося.

    Листинг в 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);

    Результат



    з) Векторное произведение векторов

    Пусть и - для чётных вариантов;

    и - для нечётных вариантов.

    Получить векторное произведение векторов . Использовать cross.
    Формула для векторного произведения следующая:

    ,




    Проверить соотношения:


    ;

    .

    Рассчитать поэлементно.

    , , .

    Листинг в 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);

    Результат



    п) Фрагментированные матрицы

    Выполнить фрагментацию матрицы и получить матрицу , в которой фигурируют 2-3 строки и 2-3 столбцы матрицы .

    Выполнить фрагментацию матрицы и получить матрицу , в которой фигурируют 3 строка и 2-3 столбцы матрицы .

    Выполнить фрагментацию матрицы и получить матрицу , в которой фигурируют 1-3 строки и 2 столбец матрицы .

    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);

    Результат


    р) Склейка матриц по горизонтали

    Получить матрицу посредством склейки матриц , и по горизонтали (horzcat).

    Листинг в Matlab


    % Склейка матриц по горизонтали

    F=horzcat(V5,Z,Z6);

    disp('F=');

    disp(F);

    Результат



    с) Склейка по вертикали

    Получить матрицу посредством склейки матриц и по вертикали (vertcat).

    Листинг в Matlab


    % Склейка матриц по вертикали

    G=vertcat(A4,L);

    disp('G=');

    disp(G);


    Результат



    т) Сортировка по столбцу

    Для нечётных вариантов выполнить сортировку полученной матрицы по элементам указанного 3-го столбца.

    Для чётных вариантов выполнить сортировку полученной матрицы по элементам указанного 2-го столбца.

    Листинг в Matlab


    % Сортировка по столбцу

    disp('Сортировка по 3 столбцу');

    disp(sortrows(G,3));


    Результат



    у) Сортировка по строке

    Для нечётных вариантов выполнить сортировку полученной матрицы по элементам указанной 6-й строки.

    Для чётных вариантов выполнить сортировку полученной матрицы по элементам указанной 3-й строки.

    Листинг в Matlab


    % Сортировка по строке

    disp('Сортировка по 6 строке');

    G1=sortrows(G',6);

    disp(G1');

    Результат



    ф) Обычная сортировка элементов вектора

    Пусть .

    Выполнить обычную сортировку с использованием функции . xmody – результат деления значения x на значение y.

    Листинг в Matlab


    % Обычная сортировка элементов вектора

    V6=[1+mod(6,3);1+mod(2,4);1+mod(8,5)];

    disp('Обычная сортировка');

    disp(sort(V6));

    Результат


    х) Инверсия элементов вектора

    Пусть .

    Инвертировать матрицу . xmody – результат деления значения x на значение y. Применить fliplr и flipud, выполнив предварительно необходимые преобразования.

    Листинг в 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));

    Результат



    Варианты задания (согласно номеру обучающегося

    в списке учебной группы):

    1.

    14.

    2.

    15.

    3.

    16.

    4.

    17.

    5.

    18.

    6.

    19.

    7.

    20.

    8.

    21.

    9.

    22.

    10.

    23.

    11.

    24.

    12.

    25.

    13.

    26.


    написать администратору сайта