ИНДИВИДУАЛЬНАЯ РАБОТА ПО MATLAB
- Для комментирования войдите или зарегистрируйтесь
ИНДИВИДУАЛЬНАЯ РАБОТА ПО 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