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

  • отчет

  • Основные математические функции MatLab

  • Условный оператор if

  • Логические операторы

  • Оператор цикла while

  • Оператор цикла for

  • Лабораторная работа по ИТ Матлаб. Лабораторная работа 1. Введение в Матлаб


    Скачать 45.51 Kb.
    НазваниеВведение в Матлаб
    АнкорЛабораторная работа по ИТ Матлаб
    Дата16.04.2022
    Размер45.51 Kb.
    Формат файлаdocx
    Имя файлаЛабораторная работа 1.docx
    ТипОтчет
    #478528


    МИНОБРНАУКИ РОССИИ

    Санкт-Петербургский государственный

    электротехнический университет

    «ЛЭТИ» им. В.И. Ульянова (Ленина)

    Кафедра РТЭ

    отчет

    по лабораторной работе

    по дисциплине «Информационные технологии»

    Тема: «Введение в Матлаб»

    Студент гр. 1281




    Малевская А. Д.

    Преподаватель




    Платонов Р. А.

    Санкт-Петербург

    2022

    Цель работы: освоение базовых операторов и отладка программ в среде конечного пользователя Матлаб.
    Основные теоретические положения

    Переменные

    В Матлаб существуют системные переменные, которые можно использовать

    в математических выражениях:

    - ans - результат последней операции без знака присваивания;

    - i, j - мнимая единица;

    - pi - число π (3.141592653589793);

    - inf - машинный символ бесконечности (∞);

    - NaN - неопределенный результат (0/0, ∞/∞, 1∞ и т.п.);

    - realmin - наименьшее число с плавающей точкой (2.2251е-308);

    - realmax - наибольшее число с плавающей точкой (1.7977е+308).

    Основные математические функции MatLab

    sqrt(x)

    вычисление квадратного корня

    exp(x)

    возведение в степень числа e

    pow2(x)

    возведение в степень числа 2

    log(x)

    вычисление натурального логарифма

    log10(x)

    вычисление десятичного логарифма

    log2(x)

    вычисление логарифма по основанию 2

    sin(x)

    синус угла x, заданного в радианах

    cos(x)

    косинус угла x, заданного в радианах

    tan(x)

    тангенс угла x, заданного в радианах

    cot(x)

    котангенс угла x, заданного в радианах

    asin(x)

    арксинус

    acos(x)

    арккосинус

    atan(x)

    арктангенс

    pi

    число пи

    round(x)

    округление до ближайшего целого


    Массив - множественный тип данных, состоящий из фиксированного числа

    элементов. Как и любой другой переменной, массиву должно быть присвоено имя. Переменную, представляющую собой просто список данных, называют одномерным массивом или вектором. Для доступа к данным, хранящимся в определенном элементе массива, необходимо указать имя массива и порядковый номер этого элемента, называемый индексом

    Самый простой способ задать одномерный массив в МАТLАВ имеет вид:

    nаmе=Xn:dx:Xk

    где nаmе – имя переменной, в которую будет записан сформированный массив, Хn - значение первого элемента массива, Хk - значение последнего его элемента, dx- шаг, с помощью которого формируется следующий элемент массива, то есть значение второго элемента составит Xn+dx, третьего Xn+dx+dx и так далее до Xk.
    Условный оператор if

    Для того чтобы иметь возможность реализовать логику в программе используются условные операторы. Умозрительно эти операторы можно представить в виде узловых пунктов, достигая которых программа делает выбор по какому из возможных направлений двигаться дальше.

    Для этого можно воспользоваться оператором if (если), который и

    выполняет подобные проверки.

    Оператор if-end

    if <выражение>

    <операторы>

    end

    Если значение параметра «выражение» соответствует значению «истинно»,

    то выполняются операторы, иначе они пропускаются программой.
    Логические операторы

    Для реализации составных условий в MatLab используются логические операторы:

    & - логическое И

    | - логическое ИЛИ

    - логическое НЕ

    Оператор цикла while

    Язык программирования MatLab имеет два оператора цикла: while и for.

    while <условие>

    <операторы>

    end

    Здесь <условие> означает условное выражение подобное тому, которое в операторе if, и цикл while работает до тех пор, пока это условие истинно.

    Оператор цикла for

    При переборе значений счетчика в заданном диапазоне и с заданным шагом в программировании применяется оператор цикла for, который просто и нагляднее реализует цикл со счетчиком.

    for <счетчик> = <начальное значение>:<шаг>:<конечное значение>

    <операторы цикла>

    end
    Упражнение 1

    В командном окне

    − Ввести численные переменные а=2,3 в=-34,7 x=1 y=2, вычислить z=(x+y)-a/b

    − Ввести символьные переменные с=a

    − Ввести строковую переменную h= мама мыла раму

    Полученный листинг скопировать в отчет

    >> a=2.3; b=-34.7; x=1; y=2;

    >> z=(x+y)-a/b

    z = 3.0663
    >> c='a'

    c = 'a'
    >> h= 'мама мыла раму'

    h = 'мама мыла раму'
    Упражнение 2

    В командном окне

    − Ввести формулы 25,7-14,6 затем 2 x ans затем x=ans/2

    − Полученный листинг скопировать в отчет

    >> 25.7-14.6

    ans = 11.1000
    >> 2*ans

    ans = 22.2000
    >> x=ans/2

    x = 11.1000
    Упражнение 3

    В командном окне

    − Ввести численные переменные ABC=1, abc=2, Abc=3, aBc=4, вычислить x= ABC+abc+Abc+aBc, вычислить у= ABC*abc*Abc*aBc

    − Полученный листинг скопировать в отчет

    >> ABC=1; abc=2; Abc=3; aBc=4
    >> x= ABC+abc+Abc+aBc

    x = 10
    >> y=ABC*abc*Abc*aBc

    y = 24

    Упражнение 4

    В командном окне

    − Ввести вектор Х с начальным значением Xn=-3,5, шагом dx=1,5 и конечным значением Xk=4,5

    − Вычислить массив значений Y= sin(X/2)

    − Ввести вектор A с начальным значением 0, шагом 1 и конечным значением 5

    − Полученный листинг скопировать в отчет
    >> Xn = -3.5000; dx=1.5; Xk=4.5
    >> X=Xn:dx:Xk

    X = -3.5000 -2.0000 -0.5000 1.0000 2.5000 4.0000
    >> Y=sin(X/2)

    Y = -0.9840 -0.8415 -0.2474 0.4794 0.9490 0.9093
    >> A=0:1:5

    A = 0 1 2 3 4 5
    Упражнение 5

    В командном окне

    − Ввести вектор-строку V из пяти последовательных элементов 1, 2, 3, 2,1

    − Ввести вектора-строки W из четырех последовательных элементов 1,1: 2,3; -0,1; 5,88

    − Ввести вектор-столбец X из трех последовательных элементов 1, 2, 3;

    − Вычислить формулу W1+2W3

    − Полученный листинг скопировать в отчет
    >> V = [1 2 3 2 1]

    V = 1 2 3 2 1
    >> W = [1.1 2.3 -0.1 5.88]

    W = 1.1000 2.3000 -0.1000 5.8800
    >> X = [1; 2; 3]

    X =

    1

    2

    3
    >> W(1)+2*W(3)

    ans = 0.9000
    Упражнение 6

    В командном окне

    − Ввести матрицу А, состоящую из трех строк по три элемента в каждой: строка 1: 1 2 3; строка 2: 4 5 6; строка 3: 7 8 9

    − Вычислить формулу А1,2 в степени А2,2 деленное на А3,3

    − Полученный листинг скопировать в отчет
    >> A = [1 2 3; 4 5 6; 7 8 9]

    A =

    1 2 3

    4 5 6

    7 8 9
    >> A(1,2)^A(2,2)/A(3,3)

    ans = 3.5556
    Упражнение 7

    В окне Редактора (Editor)

    − Применить оператор if-end для программы, которая в зависимости от заданного значения переменной X присваивает переменной signX:

    - значение ‘плюс’, если значение переменной X больше нуля

    - значение ‘минус’, если значение переменной X меньше нуля

    - значение ‘ноль’, если значение переменной X равно нулю

    − Записать программу в файл PR1-7_FIO_GR.m

    − Определить переменную signX для трех значений X: 5, -3, 0

    − Вывести значения Х и signX, используя оператор disp

    − Текст программы и полученные листинги скопировать в отчет
    x = input ("Введите значение переменной x = ");

    if x>0

    signX = 'плюс';

    end

    if x<0

    signX = 'минус';

    end

    if x==0

    signX = 'ноль';

    end

    disp("x = " + x);

    disp(signX);
    >> PR1-7_MAD_GR

    Введите значение переменной x = 5

    x = 5

    плюс

    >> PR1-7_MAD_GR

    Введите значение переменной x = -3

    x = -3

    минус

    >> PR1-7_MAD_GR

    Введите значение переменной x = 0

    x = 0

    ноль
    Упражнение 8

    В окне Редактора (Editor)

    − Применить оператор if-else-end для программы, которая в зависимости от заданного значения переменной X присваивает переменной signX:

    - значение ‘плюс’, если значение переменной X больше нуля

    - значение ‘минус’, если значение переменной X меньше нуля

    - значение ‘ноль’, если значение переменной X равно нулю

    − Записать программу в файл PR1-8_FIO_GR.m

    − Определить переменную signX для трех значений X: 5, -3, 0

    − Вывести значения Х и signX, используя оператор disp

    − Текст программы и полученные листинги скопировать в отчет
    x = input ("Введите значение переменной x = ");

    if x>0

    signX = 'плюс';

    else

    signX = 'минус';

    end

    if x==0

    signX = 'ноль';

    end

    disp("x = " + x);

    disp(signX);
    Листинги

    >> PR1-8_MAD_GR

    Введите значение переменной x = 5

    x = 5

    плюс

    >> PR1-8_MAD_GR

    Введите значение переменной x = -3

    x = -3

    минус

    >> PR1-8_MAD_GR

    Введите значение переменной x = 0

    x = 0

    ноль

    Упражнение 9

    В окне Редактора (Editor)

    − Применить оператор if-else-end для программы, которая в зависимости от заданного значения переменной X присваивает переменной signX:

    - значение ‘плюс’, если значение переменной X больше нуля

    - значение ‘минус’, если значение переменной X меньше нуля

    - значение ‘ноль’, если значение переменной X равно нулю

    − Записать программу в файл PR1-9_FIO_GR.m

    − Определить переменную signX для трех значений X: 5, -3, 0

    − Вывести значения Х и signX, используя оператор disp

    − Текст программы и полученные листинги скопировать в отчет
    x = input ("Введите значение переменной x = ");

    if x>0

    signX = 'плюс';

    elseif x<0

    signX = 'минус';

    else

    signX = 'ноль';

    end

    disp("x = " + x);

    disp(signX);
    Листинги

    >> PR1-9_MAD_GR

    Введите значение переменной x = 5

    x = 5

    плюс

    >> PR1-9_MAD_GR

    Введите значение переменной x = -3

    x = -3

    минус

    >> PR1-9_MAD_GR

    Введите значение переменной x = 0

    x = 0

    ноль
    Упражнение 10

    В окне Редактора (Editor)

    − Применить оператор if-else-end с логическим оператором ‘&’ (И) для программы, которая проверяет попадание переменной Х в диапазон от 0 до 2. При попадании переменной valueX присваивается значение ‘TRUE’, в противном случае – ‘FALSE’

    − Записать программу в файл PR1-10_FIO_GR.m

    − Определить переменную valueX для двух значений X: 5, 1

    − Вывести значения Х и valueX, используя оператор disp

    − Текст программы и полученные листинги скопировать в отчет.
    x = input ("Введите значение переменной x = ");

    if x>0 && x<2

    valueX ='TRUE';

    else

    valueX ='FALSE';

    end

    disp("x = " + x);

    disp(valueX);
    >> PR1-10_MAD_GR

    Введите значение переменной x = 5

    x = 5

    FALSE

    >> PR1-10_MAD_GR

    Введите значение переменной x = 1

    x = 1

    TRUE
    Упражнение 11

    В окне Редактора (Editor)

    − Применить оператор if-else-end с логическим оператором ‘|’ (ИЛИ) для программы, которая проверяет выход переменной Х за границы диапазона от 0 до 2. При выходе переменной valueX присваивается значение ‘TRUE’, в противном случае – ‘FALSE’

    − Записать программу в файл PR1-11_FIO_GR.m

    − Определить переменную valueX для двух значений X: 5, 1

    − Вывести значения Х и valueX, используя оператор disp

    − Текст программы и полученные листинги скопировать в отчет.
    x = input ("Введите значение переменной x = ");

    if x<0 || x>2

    valueX ='TRUE';

    else

    valueX ='FALSE';

    end

    disp("x = " + x);

    disp(valueX);
    >> PR1-11_MAD_GR

    Введите значение переменной x = 5

    x = 5

    TRUE

    >> PR1-11_MAD_GR

    Введите значение переменной x = 1

    x = 1

    FALSE
    Упражнение 12

    В окне Редактора (Editor)

    − Применить оператор цикла while для подсчета суммы ряда. Суммирование выполнять до тех пор пока счетчик i не превышает 20, либо значение суммы S меньше 20.

    − При выходе переменной valueX присваивается значение ‘TRUE’, в противном случае – ‘FALSE’

    − Записать программу в файл PR1-12_FIO_GR.m

    − Вывести значения i и S, используя оператор disp

    − Текст программы и полученные листинги скопировать в отчет
    i=1;

    S=0;

    valueX = 'FALSE';

    while i<20 && S<=20

    S = S+i;

    i = i+1;

    end

    valueX = 'TRUE';

    disp("i = " + i);

    disp("S = " + S);

    >> PR1-12_MAD_GR

    i = 7

    S = 21
    Упражнение 13

    В окне Редактора (Editor)

    − Применить оператор цикла for для нахождения наибольшего элемента вектора из четырех элементов: 3, 6, 5, 3.

    − Записать программу в файл PR1-13_FIO_GR.m

    − Вывести номер и значение наибольшего элемента вектора, используя оператор disp

    − Текст программы и полученные листинги скопировать в отчет
    v = [3 6 5 3];

    max = v(1);

    for i = 1:1:4

    if v(i)>max

    max=v(i);

    end

    end

    disp("max = " + max);

    >> PR1-13_MAD_GR

    max = 6
    Упражнение 14

    В окне Редактора (Editor)

    − Отладить программу. После исправленных команд вставить комментарии с исходными текстами команд.

    − Записать программу в файл PR1-14_FIO_GR.m

    − Текст отлаженной программы скопировать в отчет
    array_1D=1:2:15;

    array_1d=[1 2 3 4;5 6 7 8;9 10 11 12] %2array_1d=[1 2 3 4;5 6 7 8;9 10 11 12]

    x=-pi:1.e-2:2*pi; %x=-pi:1,e-2:2*pi;

    y1= x.^2; y2=x;

    for ii=1:5

    if ii>2

    disp(ii)

    elseif ii == 3 % elseif ii = 3

    j=ii-1

    end

    end

    NN=1;

    while NN<100 %while Nn<100

    NN=NN+1;

    end

    for phi_0=0:0.1:pi %for phi_0=0:0,1:pi

    x = -2*pi: 2e-2: 2*pi;

    u = sin(x-phi_0)

    end
    Упражнение 15

    Правильным результатом работы программы будет определение пересечений трех функций (переменная cross=3)

    В окне Редактора (Editor)

    − Отладить программу. После исправленных команд вставить комментарии с исходными текстами команд.

    − Записать программу в файл PR1-15_FIO_GR.m

    − Текст отлаженной программы скопировать в отчет
    %Определить какие из функций

    %y1(x)= x*x-1 %y2(x)= sqrt(x) %y3(x)= cos(x)

    % пересекаются на интервале [0.5;2]

    clear;

    close all;

    clc;

    x=0.5; % x=0,5;

    shethic=0; % счетчик корней

    cross=0;

    %razn2=0;

    dx=2;

    while x <= 2

    razn1=cos(x)-sqrt(x); % корень уравнения cos(x)=sqrt(x)

    razn2=cos(x+dx)-sqrt(x+dx); % Вставлена строка

    if razn2*razn1 <0

    shethic=shethic+1;

    end

    x=x+dx; % шаг цикла

    razn2=razn1;

    end

    if shethic>0

    disp('cos(x) и sqrt(x) пересекаются ');

    end

    cross=cross+ shethic;

    shethic=0;

    %razn2=0; % обнуляем переменные

    x=0.5;

    while x <= 2

    razn1=cos(x)-x*x+1; % корень уравнения cos(x)=x*x+1

    razn2=cos(x+dx)-(x+dx)*(x+dx)+1; % Вставлена строка

    if razn2*razn1 <0

    shethic=shethic+1;

    end

    x=x+dx;

    razn2=razn1;

    end

    if shethic>0

    disp('cos(x) и x*x-1 пересекаются ');

    end

    cross=cross+ shethic;

    shethic=0;

    %razn2=0;% обнуляем переменные

    x=0.5;

    while x <= 2

    razn1=sqrt(x)-x*x+1; % корень уравнения sqrt(x)=x*x+1

    razn2=sqrt(x+dx)-(x+dx)*(x+dx)+1; % Вставлена строка

    if razn2*razn1 <0

    shethic=shethic+1;

    end

    x=x+dx;

    razn2=razn1;

    end

    if shethic>0

    disp('sqrt(x) и x*x-1 пересекаются');

    end

    cross=cross+ shethic;

    disp('cross');disp(cross);

    x = 0.5:0.0001:2; % шаг и интервал

    y = cos(x);

    y2 = pow2(x) -1;

    y3 = sqrt(x);

    plot(x,y,x,y2,x,y3)% функция построения графика
    Упражнение 16

    Правильным результатом работы программы будет определение пересечений трех функций (переменная cross=3)

    В окне Редактора (Editor)

    − Отладить программу. После исправленных команд вставить комментарии с исходными текстами команд.

    − Записать программу в файл PR1-16_FIO_GR.m

    − Текст отлаженной программы скопировать в отчет
    %Определить какие из функций

    %y1(x)= x*x-1 %y2(x)= sqrt(x) %y3(x)= cos(x)

    % пересекаются на интервале [0.5;2]

    clear;

    close all;

    clc;

    x=0.5; % x=0,5;

    shethic=0; % счетчик корней

    cross=0;

    %razn2=0;

    dx=2;

    while x <= 2

    razn1=cos(x)-sqrt(x); % корень уравнения cos(x)=sqrt(x)

    razn2=cos(x+dx)-sqrt(x+dx); % Вставлена строка

    if razn2*razn1 <0

    shethic=shethic+1;

    end

    x=x+dx; % шаг цикла

    razn2=razn1;

    end

    if shethic>0

    disp('cos(x) и sqrt(x) пересекаются ');

    end

    cross=cross+ shethic;

    shethic=0;

    %razn2=0; % обнуляем переменные

    x=0.5;

    while x <= 2

    razn1=cos(x)-x*x+1; % корень уравнения cos(x)=x*x+1

    razn2=cos(x+dx)-(x+dx)*(x+dx)+1; % Вставлена строка

    if razn2*razn1 <0

    shethic=shethic+1;

    end

    x=x+dx;

    razn2=razn1;

    end

    if shethic>0

    disp('cos(x) и x*x-1 пересекаются ');

    end

    cross=cross+ shethic;

    shethic=0;

    %razn2=0;% обнуляем переменные

    x=0.5;

    while x <= 2

    razn1=sqrt(x)-x*x+1; % корень уравнения sqrt(x)=x*x+1

    razn2=sqrt(x+dx)-(x+dx)*(x+dx)+1; % Вставлена строка

    if razn2*razn1 <0

    shethic=shethic+1;

    end

    x=x+dx;

    razn2=razn1;

    end

    if shethic>0

    disp('sqrt(x) и x*x-1 пересекаются');

    end

    cross=cross+ shethic;

    disp('cross');disp(cross);

    x = 0.5:0.0001:2; % шаг и интервал

    y = cos(x);

    y2 = pow2(x) -1;

    y3 = sqrt(x);

    plot(x,y,x,y2,x,y3)% функция построения графика

    Вывод: При выполнении лабораторной работы были изучены базовые операторы и отладка программ в среде конечного пользователя Матлаб.


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