ИНДИВИДУАЛЬНАЯ РАБОТА ПО MATLAB
1. Простые вычисления
Задания
Задача 1.
-
Ввести текст в виде комментария, как заглавие программы.
-
Ввести исходные данные.
-
Задать изменение аргумента.
-
Вычислить значения функций 1 и 2 для аргумента в заданном интервале.
-
Вывести графики функций одновременно на одном графике в декартовых координатах. Для разных графиков использовать разный тип линий.
Задача 2 .
-
Ввести текст в виде комментария, как заглавие программы.
-
Ввести исходные данные.
-
Задать изменение аргумента.
-
Вычислить значения функций 1 и 2 для аргумента в заданном интервале.
-
Вывести графики функций в двух подокнах на одном графике. Графики сделать в столбиковом формате.
Варианты заданий:
?
|
Функция 1
|
Функция 2
|
a
|
b
|
h
|
1
|
y = sin(x)
|
z = exp(x+3)/5000 - 1
|
-2π
|
2π
|
π/20
|
2
|
y = cos(x)
|
z = 0.00025e3-x - 0.6
|
-2π
|
2π
|
π/20
|
3
|
y = |tg(x)| + 0.1
|
z = (1+x)6
|
-2π
|
2π
|
π/20
|
4
|
y = (x2-1)/15
|
z = 1+sin(x)
|
-2π
|
2π
|
π/20
|
5
|
y = (x3-2)/15
|
z = 5cos(x)
|
-2π
|
2π
|
π/20
|
6
|
y = x2 - 10
|
z = 0.025exp(-1.2x)
|
-5
|
5
|
1
|
7
|
y = 3sin(x)
|
z=0.015x3
|
-5
|
5
|
1
|
8
|
y = 4sin(x)
|
z = 0.05x2
|
1
|
10
|
1
|
9
|
y = 6sin(x)
|
z = 0.01x3
|
-10
|
10
|
1
|
10
|
y = 2+cos(x)
|
z = - 0.05(x2 + 10cos(x))
|
-8
|
8
|
1
|
11
|
y = sin2(x/3)
|
z = 0.01(x2 - 40sin(x))
|
-8
|
8
|
1
|
12
|
y = cos3(x)
|
z = sin(x) + sin(2x)
|
-π
|
π
|
π/8
|
13
|
y = 0.5x + cos2(x)
|
z = sin2(x) + cos(x)
|
-π
|
π
|
π/8
|
14
|
y = sin(x) + cos2(2x)
|
z = x(0.5 + x)exp(0.1x)
|
-π
|
π
|
π/8
|
15
|
y = |sin(x)|exp(x/2)
|
z = 5x - x 1.5+sin(x)
|
0
|
5
|
0.5
|
Методические указания
1. Текстовые пояснения в программу вводятся, как комментарий. Он начинается с символа %, который располагается в первой позиции строки. Комментарий - это текст! В него не надо включать символы операций.
2. Для формирования XY графика необходимо:
-
Задать аргумент в формате x=<нач. значение>:<шаг>:<нач. значение>.
-
Вычислить функцию, например, y=f(x).
-
Вывести график процедурой plot(x,y,s). Процедура рисует график прямыми линиями между вычисленными точками. Здесь s - строковая константа, задающая параметры линии, ее можно пропускать. Определены следующие значения s:
Цвет линии
|
Тип точки
|
Тип линии
|
y
|
желтый
|
.
|
точка
|
-
|
сплошная
|
m
|
фиолетовый
|
o
|
кружок
|
:
|
двойной пунктир
|
c
|
голубой
|
x
|
крест
|
-.
|
штрих пунктир
|
r
|
красный
|
+
|
плюс
|
--
|
штрих
|
g
|
зеленый
|
*
|
звездочка
|
|
|
b
|
синий
|
s
|
квадрат
|
|
|
w
|
белый
|
d
|
ромб
|
|
|
k
|
черный
|
v
|
треугольник вверх
|
|
|
|
|
<
|
треугольник влево
|
|
|
|
|
>
|
треугольник вправо
|
|
|
|
|
p
|
пятиугольник
|
|
|
|
|
h
|
шестиугольник
|
|
|
-
Если на одном графике нужно отобразить несколько функций, например, y1=f(x) и y2=f(x), то они вначале вычисляются, а затем выводятся процедурой plot(x,y1,'s1',x,y2,'s2...), в которой в качестве параметров для каждой функции следуют группы <аргумент, функция, строка типа линии>.
-
Для создания в графическом окне нескольких подокон для вывода графиков используется процедура subplot(m,n,p), где m - число подокон в окне по горизонтали, n - по вертикали, p - номер используемого подокна (нумерация с 1).
-
Для формирования графика в столбиковой форме нужно использовать процедуру bar(x,y). При выводе такого графика в подокно строка программы имеет вид subplot(m,n,p), bar(x,y)
Пример выполнения
Задание
Функция 1: y = 2sin(x)
Функция 2: z = 0.02x3
Начальное значение аргумента a = -2π
Конечное значение аргумента b = 2π
Шаг изменения аргумента h = π/20
Задача 1
% Задача 1
% Диапазон и шаг
a=-2*pi;
b=2*pi;
h=pi/20;
% Задание аргумента
X=a:h:b;
%Расчет функций
Y=2*sin(X);
Z=0.02*X.^3;
% Вывод графиков с одинаковым типом линии в окно 1
figure(1);
plot(X,Y,X,Z);
% Включим координатную сетку
grid on
% Вывод графиков с разными типами линии в окно 2
figure(2);
plot(X,Y,'-',X,Z,':');
% Включим координатную сетку
grid on
Задача 2
% Задача 2
% Диапазон и шаг
a=-2*pi;
b=2*pi;
h=pi/20;
% Задание аргумента
X=a:h:b;
%Расчет функций
Y=2*sin(X);
Z=0.02*X.^3;
% Вывод графика 1 в виде столбиков в подокно 1
subplot(2,1,1),bar(X,Y);
% Вывод графика 2 в виде столбиков в подокно 2
subplot(2,1,2),bar(X,Z);
2. Многомерные вычисления
Задания
Задача 1.
Двумерная функция и объемные графики в своих окнах.
-
Ввести исходные данные.
-
Вычислить двумерную функцию.
-
Вывести функцию в виде 5 трехмерных графиков разного типа.
-
Вывести функцию в виде 2 контурных графиков разного типа.
Задача 2.
Двумерная функция и объемные графики в подокнах общего окна.
Варианты заданий:
?
|
Функция
|
Пределы изменения
|
x
|
y
|
1
|
z=sin(x)cos(y)
|
от -2π до 2π
|
от -2π до 2π
|
2
|
z=sin(x/2)cos(y)
|
от -2π до 2π
|
от -2π до 2π
|
3
|
z=sin(2x)cos(y)
|
от -2π до 2π
|
от -2π до 2π
|
4
|
z = sin(x)cos(y/2)
|
от -2π до 2π
|
от -2π до 2π
|
5
|
z = sin(x/2)cos(2y)
|
от -2π до 2π
|
от -2π до 2π
|
6
|
z = sin(2x)cos(2y)
|
от -2π до 2π
|
от -2π до 2π
|
7
|
z = (1+sin(x)/x)(sin(y)/y)
|
от -2π до 2π
|
от -2π до 2π
|
8
|
z = (sin(x)/x)cos(y)
|
от -2π до 2π
|
от -2π до 2π
|
9
|
z = (sin(x)/x)|cos(y)|
|
от -2π до 2π
|
от -2π до 2π
|
10
|
z = (sin(x)/x)y
|
от -2π до 2π
|
от -2π до 2π
|
11
|
z = (sin(x)/x)|y|
|
от -2π до 2π
|
от -2π до 2π
|
12
|
z = (sin(x)/x)sin(y)
|
от -2π до 2π
|
от -2π до 2π
|
13
|
z = (sin(x)/x)|sin(y)|
|
от -2π до 2π
|
от -2π до 2π
|
14
|
z = (sin(x)/x)(1-y)
|
от -2π до 2π
|
от -2π до 2π
|
15
|
z = (sin(x)/x)|y+0.5|
|
от -2π до 2π
|
от -2π до 2π
|
Методические указания
1. Формирование задач. В работе предусмотрены 2 задачи, в каждой из которых вычисляется двумерная функция, описывающая объемную фигуру, и строятся поверхностные и контурные графики с использованием различных графических функций. В первой задаче каждый график выводится в свое окно, во второй в подокна общего окна.
2. Представление матриц. Значения матрицы выводятся в текстовой форме построчно. Если столбцы в экране не умещаются, происходит разбиение на группы столбцов, которые выводятся последовательно. Табличный вывод в MatLab, как в MathCAD, не предусмотрен.
3. Поверхностный и контурный графики. Для формирования поверхностного или контурного графика необходимо:
-
задать число точек по координатам X и Y,
-
создать вложенные циклы по X и Y, вычислить функцию Z=f(X,Y),
-
ввести номер графического окна, вывести туда график выбранного типа.
4. Следует использовать графики:
-
трехмерный с аксонометрией, функция plot3(X,Y,Z),
-
трехмерный с функциональной окраской, функция mesh(X,Y,Z),
-
трехмерный с функциональной окраской и проекцией, функция meshc(X,Y,Z),
-
трехмерный с функциональной окраской и проекцией, функция surf(X,Y,Z),
-
контурный, функция contour(X,Y,Z),
-
объемный контурный, функция contour3(X,Y,Z),
-
трехмерный с освещением, функция surfl(X,Y,Z).
5. В каждом окне можно рисовать несколько графиков с наложением друг на друга. В списке параметров для каждого графика параметры перечисляются группами последовательно (в работе график для окна один). В каждую группу входят:
-
X - первая координата площадки основания,
-
Y - вторая координата площадки основания,
-
Z - значение функции.
Пример выполнения
Задание
Функция z = sin(x)/x*sin(y)/y. Пределы изменения аргументов -2π...2π.
Задача 1
% Задача 1
% Число точек и шаг
N=40;
h=pi/20;
% Расчет матрицы
for n=1:2*N+1
if n==N+1 A(n)=1; else A(n)=sin(h*(n-N-1))/(h*(n-N-1)); end;
end;
for n=1:2*N+1
for m=1:2*N+1
Z(n,m)=A(n)*A(m);
end;
end;
% Задание площадки
[X,Y]=meshgrid([-N:1:N]);
% Вывод графика в аксонометрии в окно 1
figure(1);
plot3(X,Y,Z);
% вывод трехмерного графика с функциональной окраской в окно 2
figure(2);
mesh(X,Y,Z);
% вывод трехмерного графика с функциональной окраской и проекцией в окно 3
figure(3);
meshc(X,Y,Z);
% вывод трехмерного графика с проекцией в окно 4
figure(4);
surf(X,Y,Z);
% Вывод контурного графика в окно 5
figure(5);
contour(X,Y,Z);
% Вывод объемного контурного графика в окно 6
figure(6);
contour3(X,Y,Z)
% Вывод объемного графика с освещением в окно 7
figure(7);
surfl(X,Y,Z);
Задача 2
% Задача 2
% Число точек и шаг
N=40;
h=pi/20;
% Расчет матрицы
for n=1:2*N+1
if n==N+1 A(n)=1; else A(n)=sin(h*(n-N-1))/(h*(n-N-1)); end;
end;
for n=1:2*N+1
for m=1:2*N+1
Z(n,m)=A(n)*A(m);
end;
end;
% Задание площадки
[X,Y]=meshgrid([-N:1:N]);
% Вывод графика в аксонометрии в подокно 1
subplot(3,3,1),plot3(X,Y,Z);
% вывод трехмерного графика с функциональной окраской в подокно 2
subplot(3,3,2),mesh(X,Y,Z);
% вывод трехмерного графика с функциональной окраской и проекцией в подокно 3
subplot(3,3,3),meshc(X,Y,Z);
% вывод трехмерного графика с проекцией в подокно 4
subplot(3,3,4),surf(X,Y,Z);
% Вывод контурного графика в подокно 5
subplot(3,3,5),contour(X,Y,Z);
% Вывод объемного контурного графика в подокно 6
subplot(3,3,6),contour3(X,Y,Z);
% Вывод объемного графика с освещением в подокно 7
subplot(3,3,7),surfl(X,Y,Z);
3. Решение уравнений
Задания
Задача 1.
Решение нелинейного уравнения.
1. Создать Mat-функцию для функции f1(x).
2. Создать файл программы. Ввести текст заглавия задачи, как комментарий. Ввести в него аргументы в заданных пределах.
3. Вывести y(x)=f1(x) в виде XY графика. По нему определить приближенно корни уравнения y(x)=0. Если корни на графике не просматриваются, то изменить пределы изменения аргумента и повторить операции.
4. Для каждого корня найти точное значение, используя функцию fzero.
5. Сформировать строку с результатами и вывести ее в заголовок окна графика.
Задача 2.
Решение системы из двух нелинейных уравнений.
1. Создать Mat-функции для функций f2(x) и f3(x) = f1(x) - f2(x).
2. Создать файл программы. Ввести текст заглавия задачи, как комментарий. Ввести в него аргументы в заданных пределах.
3. Вывести f1(x) и f2(x) в виде XY графиков. По нему определить приближенно корни системы уравнений, как координаты точек пересечения графиков f1(x) и f2(x).Если корни на графике не просматриваются, то изменить пределы изменения аргумента и повторить операции.
4. Для каждого корня найти точное значение, используя функцию fzero к переменной f3(x).
5. Сформировать строку с результатами и вывести ее в заголовок окна графика.
Варианты заданий:
?
|
f1(x)- полином 3- ей степени с коэффициентами а
|
f2(x)
|
a3
|
a2
|
a1
|
a0
|
1
|
0
|
-1
|
4
|
-1
|
0.2exp(x)-20
|
2
|
0
|
2
|
-2
|
-15
|
40|cos(x)|
|
3
|
0
|
1
|
4
|
-1
|
10ln(x+5.5)
|
4
|
0
|
9
|
-8
|
-70
|
100|sin(x)|
|
5
|
0
|
-4
|
4
|
50
|
70cos(x)
|
6
|
1
|
-5
|
4
|
40
|
60exp(|0.1*x|)-100
|
7
|
2
|
-3
|
2
|
30
|
20sin(2x)
|
8
|
3
|
-6
|
1
|
50
|
exp(|x|)sin(2x)
|
9
|
4
|
-9
|
1
|
70
|
exp(|x|)cos(3x)
|
10
|
5
|
-7
|
5
|
60
|
-60|cos(x)|
|
11
|
-1
|
-4
|
9
|
60
|
15log(x+5.1)
|
12
|
-2
|
-6
|
-7
|
55
|
-50ln(x+5.1)
|
13
|
-3
|
-9
|
-8
|
75
|
-100|cos(x)|
|
14
|
-4
|
7
|
8
|
-75
|
100sin(x/2)
|
15
|
-5
|
1
|
4
|
-1
|
40cos(x/2)
|
Методические указания
1. При решении нелинейного уравнения оно формируется из функций задания, как f1(x)=0.
2. При решении системы из двух нелинейных уравнений из функций задания формируется уравнение f3(x) = f1(x) - f2(x) = 0. Функции из задания надо определить, как функции пользователя, создав для них новые Mat-функции. Это упростит обращения к ним при решении уравнений.
3. В качестве имен функций можно выбрать fun1, fun2 и fun3. Mat-функции надо создавать в новом окне редактора. Формат Mat-функции:
function [var1 var2 :] = <имя функции>(список параметров)
var1=<выражение>
var2=<выражение>
function - зарезервированное слово,
[var1 var2 :] - вектор имен возвращаемых функцией значений.
4. В нашем случае возможное такое описание Mat-функции:
function = fun1(x) f1=<выражение>
5. Локализация корней. Уравнение или система уравнений может иметь несколько корней, каждый из которых ищется отдельно. При этом для каждого корня надо задать диапазон аргумента, в котором он находится (только один!).
6. Это делается путем локализации корня. Для этого надо просчитать значения функций в заданном интервале и построить их графики. Начальное значение для решения одного уравнения - точка пересечения графиком функции оси Х. График выводится процедурой, в которой аргументы - переменная х и анализируемая функция. С помощью grid on график делается с координатной сеткой:
plot(x,fun1(x));grid on;
7. Начальное значение для решения системы из двух уравнений - точка взаимного пересечения графиков функций. Графики выводятся процедурой, в которой для каждого графика следует группа параметров:
plot(x,fun1(x),x,fun2(x));grid on;
8. Функция fzero. Используется для нахождения корня нелинейного уравнения. Формат этой функции:
<имя результата>=fzero('имя функции',[левый предел: правый предел])
Пример использования:
% Вектор аргумента
x=[a:h:b];
% График локализации корней
plot(x,fun1(x));grid on;
% Найти первый корень
x1=fzero('fun1(x)',[-4 -3]);
Пример выполнения
Задание
Функция 1 f1(x) = -0.85*x3-2x2+7x+2
Функция 2 f2(x) = 6cos(x) - 5
Для нахождения корней выражений будем использовать процедуры MatLab, для которых нужно выражения оформить, как Mat-функции. Создадим в редакторе MatLab новые встроенные Mat-функции с именами fun1, fun2 и fun3, тексты которых сохраним в файлах: fun1.m, fun2.m и fun3.m. Третья функция нужна для решения системы из двух уравнений по тому же алгоритму, что для одного уравнения, но с преобразованием двух уравнений в одно разностное.
Файл fun1.m function f1=fun1(x)
f1=-0.85*x.^3-2*x.^2+7*x+2
Файл fun2.m function f2=fun2(x)
f2=6*cos(x)-5
Файл fun3.m function f3=fun3(x)
f3=-0.85*x.^3-2*x.^2+7*x+2-6*cos(x)+5 Задача 1
Задача 1
% Задача 1
% Нахождение корней выражения
% Пределы и шаг аргумента
a=-4;
b=4;
h=0.5;
% Вектор аргумента
x=[a:h:b];
% График локализации корней
plot(x,fun1(x));grid on;
% Найти первый корень
x1=fzero('fun1(x)',[-4 -3]);
% Найти второй корень
x2=fzero('fun1(x)',[-1 0]);
% Найти третий корень
x3=fzero('fun1(x)',[1 3]);
% Получить строку результатов
Result=strcat('x1=',num2str(x1),' x2=',num2str(x2),' x3=',num2str(x3));
% Включить его в график в форме заголовка
title(Result)
Задача 2
% Задача 2
% Решение системы нелинейных уравнений
% Пределы и шаг аргумента
a=-4;
b=4;
h=0.5;
% Вектор аргумента
x=[a:h:b];
% График локализации корней
plot(x,fun1(x),x,fun2(x));grid on;
% Найти первый корень
x1=fzero('fun3(x)',[-4 -3])
% Найти второй корень
x2=fzero('fun3(x)',[-1 0]);
% Найти третий корень
x3=fzero('fun3(x)',[2 3]);
% Получить строку результатов
Result=strcat('x1=',num2str(x1),' x2=',num2str(x2),' x3=',num2str(x3));
% Включить его в график в форме заголовка
title(Result);
4. Символьные вычисления
Задания
Задача 1.
Развертка/свертка.
-
Ввести выражение f1(x) и развернуть его.
-
Полученное выражение свернуть. Сравнить результат с f1(x).
Задача 2
Дифференцировать/интегрировать.
-
Ввести выражение f1(x) и найти производную по х.
-
Для полученного выражения найти неопределенный интеграл. Сравнить с f1(x).
Задача 3.
Разложить в ряд Тейлора.
-
Ввести выражение f2(x) и найти его разложение в ряд Тейлора.
-
Построить XY график для f2(x) и его разложения в ряд Тейлора F2(x).
Варианты заданий:
?
|
f1(x)
|
f2(x)
|
1
|
(1+x)2
|
ax3+bx2+cx+d
|
2
|
(1-x)2
|
sin(ax)
|
3
|
(a+x)2
|
cos(ax)
|
4
|
(a-x)2
|
sec(x)
|
5
|
(1+x)3
|
exp(ax)
|
6
|
(1-x)3
|
x(ln(x)-1)
|
7
|
(a+x)3
|
-csc(x)
|
8
|
(a-x)3
|
1/(1+x2)
|
9
|
(1+x)4
|
1/(a+bx)
|
10
|
(1-x)4
|
1/(1-x2)
|
11
|
(a+x)4
|
-cos3(x)/3
|
12
|
(a-x)4
|
sin3(x)/3
|
13
|
(1+x)5
|
x2(ln(x)-0.5)/2
|
14
|
(1-x)5
|
-(ln(x)+1)/x
|
15
|
(a+x)5
|
ln2(x)/2
|
Методические указания
1. Обратите внимание: в задании употреблены имена стандартных функций, принятые в MatLab. Они могут не совпадать с принятыми в математике. В именах функций имеет значение высота букв.
2. Результат символьных преобразований выводится в командное окно с новым символьным именем. В отличие от вывода результатов несимвольных преобразований выводимое значение размещается без абзацного отступа.
3. Развертка и свертка выражений. Под разверткой понимается запись выражения в развернутой форме (с открытыми скобками). Под сверткой понимается обратное действие.
-
Начать надо с указания символьных переменных. Для этого применяется функция: syms перечень имен переменных через пробел.
-
Затем надо ввести исходную функцию.
-
Далее следует выполнить операцию развертки и получить результат с именем f1_new. Для этого используется функция expand(имя переменной).
-
Затем над f1_new нужно выполнить операцию свертки и получить результат с именем f1_old. Для этого используется функция simple(имя переменной).
-
Признаки правильного выполнения операций - при свертке результата развертки восстанавливается исходная функция.
4. Дифференцирование и интегрирование выражений. При дифференцировании выражения находится производная по выбранной переменной. При интегрировании выражения находится неопределенный интеграл (первообразная) по выбранной переменной. Константа по умолчанию - нуль.
-
Начать надо с указания символьных переменных. Для этого применяется функция: syms перечень имен переменных через пробел.
-
Затем надо ввести исходную функцию.
-
Далее следует выполнить операцию дифференцирования и получить результат с именем f1_new. Для этого используется функция diff(f1,'x',n). Здесь f1- имя функции, 'x' - имя переменной (вводится, как строка, в апострофах), по которой производится дифференцирование, n - порядок производной.
-
Затем над f1_new нужно выполнить операцию интегрирования и получить результат с именем f1_old. Для этого используется функция int(f1_new,'x'). Здесь f1_new - имя функции, 'x' - имя переменной (вводится, как строка), по которой производится интегрирование.
-
Признаки правильного выполнения операций - при интегрировании результата дифференцирования восстанавливается исходная функция.
5. Разложение в ряд Тейлора. При этом для заданного выражения находится ряд Тейлора с остаточным членом, величина которого зависит от точности, выбираемой при выполнении операции. Остаточный член отбрасывается.
-
Начать надо с указания символьных переменных. Для этого применяется функция: syms перечень имен переменных через пробел.
-
Затем надо ввести исходную функцию.
-
Далее следует выполнить операцию разложения в ряд Тейлора и получить результат с именем f1_new. Для этого используется функция taylor(f1,n,'x',a). Здесь f1 - имя функции, переменной, n - порядок остаточного члена, , 'x' - имя переменной (вводится, как строка, в апострофах), по которой производится разложение, a - значение переменной, для которого делается разложение (если оно пропускается, то предполагается а=0).
-
Затем над f1_new нужно выполнить операцию свертки и получить результат с именем f1_old. Для этого используется функция simple(имя переменной).
-
Признаки правильного выполнения операции - в окрестности точки, а графики исходной и полученной функций совпадают. Для построения графиков символьных функций имеется процедура ezplot(f2,-h,h);grid on. Здесь f - имя символьной функции, (-h h) - нижний и верхний предел значений аргумента, grid on - включает в графике координатную сетку. В заголовок графического окна помещается описание функции. По этой причине в одно графическое окно можно вывести только один график.
Пример выполнения
Задание
f1(x)=(a+x)3
f2(x)=sin(x)/x
Задача 1
% Задача 1
% Определить символьные переменные
syms a x;
% Функция
f1=(a+x)^3
% Расширить ее
f1_new=expand(f1)
% Свернуть расширенное
f1_old=simple(f1_new)
Задача 2
Задача 2
% Определить символьные переменные
syms a x;
% Функция
f1=(a+x)^3
% Найти первую производную по х
f1_new=diff(f1,'x',1)
% Найти неопределенный интеграл по х
f1_old=int(f1_new,'x')
Задача 3
% Задача 3
% Определить символьные переменные
syms x;
% Функция
f2=sin(x)/x
% Найти разложение Тейлора по х в точке 0
f2_new=taylor(f2,5,'x',0)
% Диапазон просмотра
h=4;
% График f2
figure(1);
ezplot(f2,-h,h);grid on
% График f2_new
figure(2);
ezplot(f2_new,-h,h);grid on