
- •Простейшие вычисления в Matlab
- •Работа с массивами. Векторы-столбцы и векторы-строки
- •Работа с массивами
- •Двумерные массивы и матрицы
- •Блочные матрицы
- •Визуализация матрицы поэлементными операциями над ними
- •Графики, диаграммы и гистограммы
- •Программирование. Операторы цикла.
- •Программирование. Операторы ветвления. Исключительные ситуации
Работа с массивами
Первое задание представлено на рисунке 13.
Рисунок 13 – Задание №3.1
Код к решению задачи представлен в листинге 9, ответ на рисунке 14.
Листинг 9 – Код задания №3.1
x = [0.1, 0.4, 0.6, 0.8, 1.1, 1.3, 2.2];
y = ((8*(cos(x)).^2)/(3+sin(2*x)))+(2*exp(-4*x));
disp(sprintf('%g ', y'));
Рисунок 14 – Полученный ответ к заданию №3.1
Во втором задании необходимо заполнить вектор-столбец элементами, начинающимися с нуля и до единицы с шагом 0,2 (используя операцию транспонирование) и вектор-строку, начинающуюся с единицы до двух с шагом –0,4. Код представлен в листинге 10, а результат на рисунке 15.
Листинг 10 – Код задания №3.2
x = [0:0.2:1];
disp(sprintf('%g ', x'));
y = [2:-0.4:1];
disp(sprintf('%g ', y'));
Рисунок 15 – Полученный ответ к заданию №3.2
Далее необходимо построить график функции y(x) = e-x(1+cos2x) на отрезке [0,5]. Код задания представлен в листинге 11, а ответ на рисунке 16.
Листинг 11 – Код задания №3.3
x = [0:0.5:5];
y = (exp(-x).*(1+cos(2*x)));
plot(x,y);
Рисунок 15 – Полученный график к заданию №3.3
В
следующем задании необходимо построить
на отрезке [-2, -0,5] графики функций f(x)
= cos(
,
g(x)
= sin(
.
Код решения представлен в листинге 12,
а полученные графики на рисунке 16.
Листинг 12 – Код задания №3.4
x = [-2:0.005:-0.5];
f = cos(4.8./(x.^3));
g = sin(3./(5*x.^3));
plot(x, f, x, g)
Рисунок 16 – Полученный график к заданию №3.4
В пятом задании необходимо:
а)
Найти скалярное произведение векторов:
a
=
,
b
=
;
б) найти длину (модуль) вектора a;
в) найти векторное произведение векторов a и b.
Код задания представлен в листинге 13, а полученный ответ на рисунке 17.
Листинг 13 – Код задания №3.5
a = [2.5;-4.6;6.4];
b = [3.3;6.7;-8.4];
s = sum(a.*b);
disp(s);
d = sqrt(sum(a.*a));
disp(d);
c = cross(a, b);
disp(c);
Рисунок 17 – Полученный ответ к заданию №3.5
В
последнем задании необходимо найти
объем параллелепипеда, если a
=
,
b
=
,
c
=
.
Код задания представлен в листинге 14,
а полученный ответ на рисунке 18.
Листинг 14 – Код задания №3.6
a = [7.3;0;0];
b = [4.4;9.6;0];
c = [-3.8;-6.8;1.4];
v = abs(sum(a.*cross(b,c)))
Рисунок 18 – Полученный ответ к заданию №3.6
В результате выполнения последних шести упражнений я научился работать с массивами, векторами-строками и вектор-столбцами.
Двумерные массивы и матрицы
В первом задании необходимо:
а)
Найти сумму и разность матриц C
=
,
А =
;
б)
Умножить матрицы C
и B
=
;
в) полученную матрицу умножить на 2.
Код решения представлен в листинге 15, а полученный ответ на рисунке 19.
Листинг 15 – Код задания №4.1
C = [9 4 -2;-1 -7 3];
A = [7 -5 1; 1 5 0];
B = [8 2 -3; 2 1 -6; -5 5 0];
S = C + A;
disp(S);
R = C - A;
disp(R);
P = C * B;
disp(P);
T = P * 2;
disp(T);
Рисунок 19 – Полученный ответ к заданию №4.1
Далее необходимо найти значение выражения (A+C)*B2*(A+C)T, где эти матрицы были записаны в предыдущем задании. Код задания представлен в листинге 16, а ответ на рисунке 20.
Листинг 16 – Код задания №4.2
C = [9 4 -2;-1 -7 3];
A = [7 -5 1; 1 5 0];
B = [8 2 -3; 2 1 -6; -5 5 0];
(A+C)*B^2*(A+C)';
Рисунок 20 – Полученный ответ к заданию №4.2
В
третьем задании нужно вычислить значение
выражения
*
*
.
Код задания представлен в листинге 17,
а ответ на рисунке 21.
Листинг 17 – Код задания №4.3
a = [7 1 -2];
B = [8 5 0; -7 8 -3; 3 5 -1];
c = [-6; 5; 1];
a * B * c
Рисунок 21 – Полученный ответ к заданию №4.3
В четвёртом задании необходимо решить систему линейных уравнений, которая представлена на рисунке 22. Код решения представлен в листинге 18, ответ на рисунке 23.
Рисунок 22 – Задача №4.4
Листинг 18 – Код решения задачи №4.4
A = [7.3 2.5 -2.5; 2.4 7.5 4.1; -1.1 3.2 4.9];
b = [2.1; 5.3; 4.5];
x = A\b
Рисунок 23 – Полученный ответ к заданию №4.4
Теперь нужно решить это же уравнение, но где левая часть уравнения будет записана в файле matr.txt, а правая в файле rside.txt, после чего полученный ответ будет записан в файл sol.txt. Записанные в файлах данные представлены на рисунке 24, а код решения в листинге 19.
Рисунок 24 – Записанные данные для задачи №4.5
Листинг 19 – Код решения задачи №4.5
A = load('matr.txt');
b = load('rside.txt');
x = A\b;
fid = fopen('sol.txt', 'w');
fprintf(fid, '%.4f\n', x);
fclose(fid);
Ответ был записан в файл sol.txt, где он был аналогичен тому, который изображен на рисунке 23.
В ходе решения задач я научился работать в Matlab с двумерными массивами.