|
ЛР1_отчёт_НовохатскийАВ_0201. Министерство образования российской федерации
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Санкт-Петербургский государственный электротехнический университет "ЛЭТИ"
Факультет электроники Кафедра радиотехнической электроники
"Введение в MATLAB "
ОТЧЕТ к лабораторной работе по дисциплине "Информатика"
Преподаватель Шевченко С.А.
Студент гр.0201 Новохатский А.В.
Санкт-Петербург 2021
Цель работы: освоение базовых операторов и отладка программ в среде ко-
нечного пользователя Матлаб.
Основные теоретические положения. В Матлаб существуют системные переменные, которые можно использовать в математических выражениях:
- ans - результат последней операции без знака присваивания;
- i, j - мнимая единица;
- pi - число π (3.141592653589793);
- inf - машинный символ бесконечности (∞);
- NaN - неопределенный результат (0/0, ∞/∞, 1∞ и т.п.);
- realmin - наименьшее число с плавающей точкой (2.2251е-308);
- realmax - наибольшее число с плавающей точкой (1.7977е+308).
Любая переменная до использования в формулах и выражениях должна быть определена. Для определения переменной необходимо набрать ее имя, символ «=» и значение переменной. Здесь знак равенства – это оператор присваивания, действие которого не отличается от других языков программирования.
Массивы
Массив - множественный тип данных, состоящий из фиксированного числа элементов. Как и любой другой переменной, массиву должно быть присвоено имя. Переменную, представляющую собой просто список данных, называют одномерным массивом или вектором. Для доступа к данным, хранящимся в определенном элементе массива, необходимо указать имя массива и порядковый номер этого элемента, называемый индексом. Если возникает необходимость хранения данных в виде таблиц, в формате строк и столбцов, то необходимо использовать двумерные массивы (матрицы). Для доступа к данным, хранящимся в таком массиве, необходимо указать имя массива и два индекса: первый должен соответствовать номеру строки, а второй номеру столбца, в которых хранится необходимый элемент.
Условный оператор if
Для того чтобы иметь возможность реализовать логику в программе используются условные операторы. Умозрительно эти операторы можно представить в виде узловых пунктов, достигая которых программа делает выбор по какому из возможных направлений двигаться дальше.
Например, требуется определить, содержит ли некоторая переменная arg положительное или отрицательное число и вывести соответствующее сообщение на экран. Для этого можно воспользоваться оператором if (если), который и выполняет подобные проверки. Оператор if-end if end Если значение параметра «выражение» соответствует значению «истинно», то выполняются операторы, иначе они пропускаются программой. Следует отметить, что «выражение» является условным выражением, в котором выполняется проверка некоторого условия. В таблице ниже представлены варианты простых логических выражений оператора if.
Для реализации составных условий в MatLab используются логические операторы:
& - логическое И
| - логическое ИЛИ
- логическое НЕ
Оператор цикла while
Язык программирования MatLab имеет два оператора цикла: while и for. while end Здесь означает условное выражение подобное тому, которое применяется в операторе if, и цикл while работает до тех пор, пока это условие истинно. Если условие будет ложным до начала выполнения цикла, то операторы, входящие в цикл, не будут выполнены ни разу. В операторе while можно записывать такие же условия, что и в условном операторе if.
Оператор цикла for
При переборе значений счетчика в заданном диапазоне и с заданным шагом в программировании применяется оператор цикла for, который просто и нагляднее реализует цикл со счетчиком.
Упражнение 1.
>> a=2.3
a =
2.3000
>> b=-34.7
b =
-34.7000
>> x=1
x =
1
>> y=2
y =
2
>> z=(x+y)-a/b
z =
3.0663
>> h="мама мыла раму"
h =
"мама мыла раму"
z = 2.9337
Упражнение 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 x = 10 >> y=ABC*abc*Abc*aBc y = 24 Упражнение 4.
Листинг:
>> X=-3.5:1.5:4.5 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:5 A = 0 1 2 3 4 5 Упражнение 5.
Листинг:
>> 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.
Листинг:
>> 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.
Листинг:
X = input ('введите Х');
if X == 0
signX = 0;
end
if X > 0
signX = +1;
end
if X < 0
signX = -1;
end
disp(X);
disp(signX); 7.1
введите Х 5
5 1
7.2
введите Х -3
-3 -1
7.3 введите Х0
0 0 Упражнение 8.
Листинг:
X = input ('введите Х');
if X == 0
signX = 0;
end
if X > 0
signX = +1;
else signX = -1;
end
disp(X);
disp(signX);
8.1
введите Х 5
5 1
8.2
введите Х -3
-3 -1
8.3 введите Х0
0 0
Упражнение 9.
Листинг:
X = input ('введите Х');
if X == 0
signX = 0;
else if X > 0
signX = +1;
else signX = -1;
end
disp(X);
disp(signX); 9.1
введите Х 5
5 1
9.2
введите Х -3
-3 -1
9.3 введите Х0
0 0 Упражнение 10.
Листинг:
X = input ('введите Х');
if (X > 0) && (X < 2)
valueX='TRUE';
else valueX='FALSE';
end
disp(X);
disp(valueX); введите Х 5
5 FALSE
введите Х 1
1 TRUE Упражнение 11.
Листинг:
X = input ('введите Х');
if X < 0 | X > 2
valueX='TRUE';
else valueX='FALSE';
end
disp(X);
disp(valueX); введите Х 5
5 TRUE
введите Х 1
1 FALSE Упражнение 12.
Листинг:
S = 0;
i = 0;
while i <= 20 && S < 20
S = S+i;
i = i+1;
end
if S > 20
valueX = 'FALSE';
else valueX = 'TRUE';
end
disp (['S= ' num2str(S)]);
disp (['i= ' num2str(i)]);
disp (['valueX= ' num2str(valueX)]); S= 21
i= 7
valueX= FALSE Упражнение 13.
Листинг:
n = input('vvedite kolichestvo chisel v vektore ');
A = [ ];
m = -9999999999999;
k = 0;
dx = 1;
for i=1:dx:n
A(i) = input('vvedite chislo v vektor ');
if A(i) > m
m = A(i);
k = i;
end
end
disp(['naibolshee chislo ' num2str(m)]);
disp(['nomer elementa ' num2str(k)]); vvedite kolichestvo chisel v vektore 4
vvedite chislo v vektor 3
vvedite chislo v vektor 6
vvedite chislo v vektor 5
vvedite chislo v vektor 3
naibolshee chislo 6
nomer elementa 2 Упражнение 14.
Программа:
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;
y1= x.^2; y2=x;
for ii=1:1,2:5
if ii>2
disp(ii)
elseif ii = 3
j=ii-1
end
end
NN=1;
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.
Программа:
%Определить какие из функций
%y1(x)= x*x-1 %y2(x)= sqrt(x) %y3(x)= cos(x)
% пересекаются на интервале [0.5;2]
clear;
close all;
clc;
x=0,5;
shethic=0; % счетчик корней
cross=0;
razn2=0;
dx=2;
while x <= 2
razn1=cos(x)-sqrt(x); % корень уравнения cos(x)=sqrt(x)
if razn2*razn1 ==0 %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
if razn2*razn1 ==0 %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
if razn2*razn1 ==0 %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.
Программа:
%Определить какие из функций
%y1(x)= x*x-1 %y2(x)= sqrt(x) %y3(x)= cos(x)
% пересекаются на интервале [0.5;2]
clear;
close all;
clc;
x=0.5;
shethic=0; % счетчик корней
cross=0;
razn2=0;
dx=2; % шаг менять нельзя!
while x <= 2
razn1=cos(x)-sqrt(x); % корень уравнения cos(x)=sqrt(x)
if razn2*razn1 ==0 %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
if razn2*razn1 ==0 %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
if razn2*razn1 ==0 %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)% функция построения графика Вывод: в ходе лабораторной работы мы изучили и научились применять базовые операторы в среде MATLAB, изучили базовые команды, а так же изучили отладку программы. |
|
|