ИНДИВИДУАЛЬНАЯ РАБОТА ПО MATLAB

Нет ответов
admin
Аватар пользователя admin
Offline
Создано: 20/08/2012

ИНДИВИДУАЛЬНАЯ РАБОТА ПО MATLAB

1. Простые вычисления

 

Задания

Задача 1.

  • Ввести текст в виде комментария, как заглавие программы.
  • Ввести исходные данные.
  • Задать изменение аргумента.
  • Вычислить значения функций 1 и 2 для аргумента в заданном интервале.
  • Вывести графики функций одновременно на одном графике в декартовых координатах. Для разных графиков использовать разный тип линий.

Задача 2 .

  • Ввести текст в виде комментария, как заглавие программы.
  • Ввести исходные данные.
  • Задать изменение аргумента.
  • Вычислить значения функций 1 и 2 для аргумента в заданном интервале.
  • Вывести графики функций в двух подокнах на одном графике. Графики сделать в столбиковом формате.

 

Варианты заданий:

 

?

Функция 1

Функция 2

a

b

h

1

y = sin(x)

z = exp(x+3)/5000 - 1

-2π

π/20

2

y = cos(x)

z = 0.00025e3-x - 0.6

-2π

π/20

3

y = |tg(x)| + 0.1

z = (1+x)6

-2π

π/20

4

y = (x2-1)/15

z = 1+sin(x)

-2π

π/20

5

y = (x3-2)/15

z = 5cos(x)

-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