Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


одно окно одни оси, с дополнениями к графикам

Московский государственный технический университет

Им. Н. Э. Баумана

 

Кафедра «Защита информации»

 

 

Учебная практика

Работа в среде Matlab

Руководитель

Деулина И. И.

Исполнитель

Студент группы ИУ 10-22

Власенко Олеся

 

 

Москва 2012

 

Содержание:

1. Лабораторная работа 1………………………………………………………... 2

2. Лабораторная работа 2………………………………………………………… 4

3. Лабораторная работа 3, 4, 5……………………………………………………12

4. Лабораторная работа 6…………………………………………………………16

5. Лабораторная работа 7…………………………………………………………20

6. Лабораторная работа 8…………………………………………………………26

7. Лабораторная работа 9…………………………………………………………34

8. Вывод……………………………………………………………………………36

9. Список литературы…………………………………………………………….37

 

 

Лабораторная работа 1

Тема: «Вычисление и рисование графиков функций»

Задания.

Создать функцию пользователя y = f (x), вычислить ее значение в точке х 0 и простроить график.

 

Функция: х0=3,1

 

Выполнение:

x = 0:0.05:1;

y = sec(x) + sin (x) -1;

plot (x, y)

x0=3.1

y0 = sec(x0) + sin (x0) -1

 

Ход работы:

 

 

График функции:

 

 

 

Лабораторная работа 2

 

Тема: «Графика. Диаграммы и гистограммы»

Задания

  1. Постройте графики функций одной переменной на отрезке [0.01, 2π]:

и

Выведите графики различными способами:

• в отдельные графические окна;

• в одно окно на одни оси;

• в одно окно на отдельные оси.

Дайте заголовки, разместите подписи к осям, легенду, используйте различные цвета, стили линий и типы маркеров, нанесите сетку.

Выполнение:

x = 0.01:0.01:2*pi;

y = sqrt(x) -1-cos(0.5*x);

f = exp(-x).* sqrt(1+x+x.^2) - (x.^2);

plot (x, y, x, f) % одно окно одни оси

plotyy (x, y, x, f) % лучшее расположение осей (наиболее подходящий масштаб)

subplot(1,2,1); plot(x,f) % одно окно разные оси

subplot(1,2,2); plot(x,y)

figure; plot (x,y) % отдельные окна

figure; plot (x,f)

plot (x, y, 'Y.-', x, f, 'm*--') % одно окно одни оси, с дополнениями к графикам

grid on

title ('Графики двух функций')

legend ('График 1','График 2')

xlabel ('Ось Х')

ylabel ('Ось У')

 

Ход работы:

 

 

Одно окно одни оси

% лучшее расположение осей (наиболее подходящий масштаб)

Одно окно разные оси

Отдельные окна

одно окно одни оси, с дополнениями к графикам

 

 

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

Выведите графики различными способами:

• каркасной поверхностью;

• залитой цветом каркасной поверхностью;

• промаркированными линиями уровня (самостоятельно выбрать значения функции, отображаемые линиями уровня);

• освещенной поверхностью.

Расположите графики в отдельных графических окнах и в одном окне с соответствующим числом осей. Представьте вид каркасной или освещенной поверхности с нескольких точек обзора.

Выполнение:

[x, y] = meshgrid (-1:0.05:1, -1:0.05:1);

z=(((sin(x.^2)) + (cos(x.^2))).^(x*y));

mesh (x, y, z) % каркасная поверхность

surf(x, y, z) % залитая цветом

colorbar

surfc(x, y, z) % промаркированная линиями уровня

colorbar

surfl (x, y, z) % освещенной поверхностью

subplot(2,3,1); mesh (x, y, z)

title ('Каркасная поверхность')

subplot(2,3,2); surf(x, y, z)

colorbar

title ('Залитая цветом')

subplot(2,3,3); surfc(x, y, z)

colorbar

title ('Промаркированная линиями уровня')

subplot(2,3,4); surfl (x, y, z)

title ('Освещенная поверхность')

subplot(2,3,5); mesh (x, y, z)

title ('Каркасная поверхность(поворот)')

subplot(2,3,6); surf(x, y, z)

colorbar

title ('Залитая цветом(поворот)')

//Поворот поверхностей осуществлялся вручную, с помощью специальной кнопки

 

Ход работы:

Поверхности:

3. Постройте векторное поле градиента функции.

Визуализируйте трехмерное векторное поле на поверхности (возьмите разные поверхности):

• поверхность является гиперболоидом;

• поверхность является параболоидом;

• поверхность задана параметрически:

Выполнение:

[x, y] = meshgrid (-5:0.05:5, -5:0.05:5);

z=sqrt((x.^2) + (y.^2) +1);

f= ((x.^2)/8 +(y.^2)/8);

subplot(3,2,1); plot3 (x, y, z)

title('Элиптический параболоид')

subplot(3,2,2); plot3 (x, y, f)

title('Однополостный гиперболоид')

n = 0:0.5:3;

m = 0:0.5:3;

b = cos(n).*cos(m);

c = sin(n).*sin(m);

d = m.*n;

subplot(3,2,3); plot3 (m, n, b)

grid on

subplot(3,2,4); plot3 (m, n, c)

grid on

subplot(3,2,5); plot3 (m, n, d)

grid on

Ход работы:

Поверхности:

Лабораторная работа 3,4,5

Тема: «Использование операторов в MATLAB»

Задание:

Напишите файл-функцию для решения поставленной задачи. Там, где это возможно, предложите два решения: с использованием конструкций языка программирования и без них, применяя функцию find и др.

 

1. Вычислить произведение элементов вектора, не превосходящих среднее арифметическое значение его элементов.

Выполнение:

function c = fun1(a)

disp(prod(find(a <(mean(a)))));

Задание:

2. Подсчитать число нулей и единиц в заданной матрице.

Выполнение:

function c = fun2(A)

disp(sum(sum(A==0)))

disp(sum(sum(A==1)))

Задание:

3. Определить количество положительных элементов вектора, расположенных между его максимальным и минимальным элементами.

Выполнение:

function c = fun3(a)

i=find(a == max(a));

j=find(a == min(a));

disp(sum((a(j:i)>0)) -2);

end

 

Задание:

4. Просуммировать отрицательные элементы матрицы, лежащие ниже главной диагонали.

Выполнение:

function c = fun4(a)

disp(sum(sum(find(triu(a)<0))));

end

Задание:

5. Заменить положительные элементы вектора суммой всех его отрицательных элементов.

Выполнение:

function c = fun5(a)

a(a > 0) = sum(a(a < 0));

c=disp(a);

Задание:

6. Заполнить квадратную матрицу А, каждый элемент которой определяется следующим образом:

Выполнение:

function c = fun6(A)

clc

clear

n=input(' Введите размер матрицы ');

for i=1:n

for j=1:n

if i>j

A(i,j)=i-j;

end

if i==j

A(i,j)=i+j;

end

if i<j

A(i,j)=i^2+j^2;

end

end

end

display(A)

Задание:

7. Вычислить сумму:

Выполнение:

function c = fun7(m,n)

syms x a b

c=symsum(symsum(((x^(a+b))/((a+b)^2)),b,1,m),a,1,n);

disp(c);

Задание:

8. Для матрицы размера п на m найти значение выражения:

Выполнение:

function c = fun8(A)

c=sum(prod(A),2);

disp(c)

Задание:

9. По заданному х найти максимальное значение п, для которого следующая сумма не превосходит 100:

Выполнение:

function c = fun9(x)

s=0;

k=0;

while s<=100

k=k+1;

u=k*(x.^k);

s=s+u;

end

n=k;

display(n);

Задание:

10. Вычислить сумму:

с заданной точностью ε. Суммировать следует, пока модуль отношения текущего слагаемого к уже накопленной части суммы превосходите.

Сравнить результат с точным значением, построив графики ех и s(x) для .

Выполнение:

function c =fun10()

clc

N = 10;

eps = 1e-12;

eps_current = 1;

a = 1;

mysum = @(a,x) sum(a.^(1:x)./ cumprod(1:x));

S = mysum(a, N);

while(eps_current > eps)

S_old = S;

N = 2 * N;

S = mysum(a, N);

eps_current = (S - S_old) / S_old;

end

Задание:

11. Заданы окружности, координаты их центров содержатся в массивах х и у, а радиусы в массиве r. Известны координаты некоторой точки. Требуется вывести график, на котором маркером отмечено положение точки, синим цветом изображены те окружности, внутри которых лежит точка, а остальные окружности нарисованы красным цветом.

Выполнение:

function c= fun11(x_center,y_center,R,x1,x2)

fi = 0:0.01:2*pi;

x = x_center + R * cos(fi);

y = y_center + R * sin(fi);

plot(x,y)

hold on

plot(x1,x2,'.r');

hold off

 

 

//сохраненные файл-функции находятся в архиве, в папке «Лабораторная работа 3 4 5»

 

Лабораторная работа 6

Тема: «М-файлы»

Задания.

1. Напишите и выполните файл-программу построения графиков следующих функций с заголовком, подписями к осям, сеткой. Используйте разные типы линий и маркеров. Для вычисления значений функций создайте файл-функцию. Для fpiot и plot используйте две подобласти на одном рисунке:

;

;

Выполнение:

Содержание файла-программы:

x=0:0.1:2*pi;

u=(sin(log(x+1))+cos(log(x+1)));

subplot(2,2,1)

plot(x,u)

title('u')

grid on

x=-0.9:0.1:0.9;

f=1./(1+(1./(1+x)));

subplot(2,2,2)

plot(x,f)

title('f')

grid on

x=0.5:0.1:1.5;

g=x.^(x.^x);

subplot(2,2,3)

plot(x,g)

title('g')

grid on

x=0:0.1:1;

h=sin(6*pi.*(x.^2).*abs(x-(2/3)));

subplot(2,2,4)

plot(x,h)

title('g')

grid on

 

Графики:

2. Напишите и выполните файл-программу для построения поверхностей.

Для вычисления значений функций создайте файл-функцию:

Выполнение:

Содержание файла-программы:

x=-1:0.1:1;

y=-1:0.1:1;

[X,Y]=meshgrid(x,y);

z=exp(3*X.*sin(Y.*pi*0.5)) + exp(3*Y.*sin(X.*0.5*pi));

subplot(1,2,1)

surf(X,Y,z)

title('Z')

grid on

x=0:0.1:1;

y=0:0.1:1;

[X,Y]=meshgrid(x,y);

w=(sin(exp(X.*2)-exp(Y.*(-2)))+cos(exp(Y.*2)-exp(X.*-2)));

subplot(1,2,2)

surf(X,Y,w)

title('W')

grid on

 

 

Поверхности:

 

2. Напишите файл-функцию для решения следующих задач:

 

1) по заданному вектору определить номер его элемента с наибольшим отклонением от среднего арифметического всех элементов вектора;

 

function c = function1(a)

[ maxVal maxInd ] = max(abs(a - mean(a)));

 

2)вычислить сумму всех элементов вектора с нечетными индексами;

 

function b = summa(a,m,n)

a=m:2:n;

b= sum(a);

 

3) найти максимальное значение среди диагональных элементов заданной матрицы;

 

function c = function3(A)

c = max(diag(A))

 

4) переставить первый столбец квадратной матрицы с ее диагональю;

function b =function4(A)

v = diag(A);

A=diag(A(:,1));

A(:,1)= v;

b=A;

 

5) просуммировать все внедиагональные элементы заданной матрицы;

 

function S =sum(A)

S = sum(sum(A)) - sum(diag(A));

 

 

6) заменить максимальный элемент вектора средним значением всех его элементов;

 

function x = replaceMax2Mean(x)

x(x == max(x)) = mean(x);

 

7) заменить элемент матрицы с индексами 1,1 произведением всех элементов матрицы;

 

function ans = proizv(A)

A (1,1) = prod(prod(A));

 

8) построить многоугольник (замкнутый) с координатами вершин (xi9yi), заданными

векторами хну;

 

function z= function8(X,Y)

X=[1 2 3 2 1];

Y=[1 2 0 5 1];

z=patch(X,Y,[1 0 0]);

 

9) отобразить элементы заданного вектора синими маркерами, а максимальный элемент— красным и вернуть значение и номер максимального элемента.

 

function c = function9(a)

I=max(a);

i=find(a == max(a));

disp(i);

disp(I);

plot(a,'.b');

hold on

plot(a(i),'.r');

hold off

end

 

 

//сохраненные файл-функции находятся в архиве, в папке «Лабораторная работа 6»

 

 

Лабораторная работа 7

Тема: «Методы вычисления в MATLAB»

Задания

1. Вычислите интеграл от функции:

по промежутку между ее двумя соседними корнями, принадлежащими отрезку [0, 4].

Выполнение:

fplot ('(cos (x - sqrt(2)).*exp(2*sin (x))-1)', [0,4])

grid on

x1 = fzero ('(cos (x - sqrt(2)).*exp(2*sin (x))-1)', 0.5)

x2 = fzero ('(cos (x - sqrt(2)).*exp(2*sin (x))-1)', 2.5)

I = quad ('(cos (x - sqrt(2)).*exp(2*sin (x))-1)', x1, x2)

Ход работы:

График функции:

2. Вычислите интеграл от функции

по промежутку между ее локальным максимумом и локальным минимумом, абсциссы которых принадлежат отрезку [-5, 0].

Выполнение:

fplot ('sin(x) - (x.^2).* cos (x)', [-5,0])

grid on

x1 = fminbnd ('sin(x) - (x.^2).* cos (x)', -4, -3.5)

x2 = fminbnd ('sin(x) - (x.^2).* cos (x)', -1.5, -1)

I = quad ('sin(x) - (x.^2).* cos (x)', x1, x2)

Ход работы:

График функции:

Задание:

Найдите корень уравнения f(z) = 0.1, если

Выполнение:

syms x

f = x.* tan(x).^2;

integral=int (f, x)

c = log(cos(0)) + 0*tan(0) - 0^2/2

% по теореме Ньютона-Лейбница d= f(z)-f(0) т.к. с= f(0)=0, то d = f(z)

syms z

d = log(cos(z)) + z*tan(z) - z^2/2

fplot ('log(cos(z)) + z*tan(z) - z^2/2-0.1', [-10,10])

% f(z) = 0.1

grid on

% на графике видно, что корень уравнения не один, их количество стремится к бесконечности

 

Ход работы:

График:

 

Задание:

4. Решите систему дифференциальных уравнений для х [0, 5]:

Выполнение:

Фаил-программа:

function F = ddefun(x,y,Z)

Y1 = Z(:,1);

Y2 = Z(:,2);

F = [ Y2(1)

-Y1(2)+Y2(1)];

 

function S = ddehistory(x)

S = [(sin(x) + 0.1)

(x -2)];

 

function ddetest

sol =dde23(@ddefun,[0.5; 1], @ddehistory,[0, 5]);

figure

subplot (2,1,1)

plot (sol.x, sol.y(1,:), 'o')

y1= inline ('sin(x) + 0.1');

hold on

fplot (y1, [0,5], 'r')

title ('Первая компонента решения')

legend ('приближенное значение','точное значение')

subplot (2,1,2)

plot (sol.x, sol.y(1,:), '+')

y2 = inline('x-2');

hold on

fplot(y2, [0,5], 'r')

title ('Вторая компонента решения')

legend ('приближенное значение', 'точное значение')

 

//запустив последнюю функцию, мы получим результат на экране

 

Решение:

График решение:

 

Задание:

5. Решите дифференциальное уравнение для

Выполнение:

Фаил-программа:

 

function solvdem

Y0=[0.02;1];

[T,Y]=ode113(@oscil,[0;5],Y0);

plot(T,Y(:,1),'r.-')

hold on

plot(T,Y(:,2),'k.:')

grid on

hold off

 

function F = oscil(x,y)

F= [y(2); 0.1*(y(1)^2)-3*y(1) + 2*sin(x)];

 

График решение:

//сохраненные файл-функции находятся в архиве, в папке «Лабораторная работа 7»

 

Лабораторная работа 8

Тема «Работа с массивами»

Задания

1. Задана квадратная матрица

Элементы матрицы А обозначим aik. Требуется узнать и записать размер матрицы в переменную n (конечно, он равен 3, но лучше использовать функцию для автоматического определения размера) и вычислить приведенные ниже величины (нормы матрицы):

Выполнение:

A= [ -1.2 4.6 -0.3

2.8 9.9 -0.7

0.9 -2.5 7.1]

n=size(A)

S = sum (A)

S = sum (S)

p = sum (max(A))

q = sum (max (A, [ ], 2))

Ход работы:

2. При помощи встроенных функций для заполнения стандартных матриц,

индексации двоеточием и, возможно, поворота, транспонирования или

вычеркивания получите следующие матрицы:

;

 

 

;

Выполнение:

d = [ 2 3 4 5 6 7 8]

N = diag (d) + diag (ones (1, 6), 1) + diag (ones (1,6), -1) + diag ((5), 6) + diag ((5), -6)

N (6,7) = 0

 

Ход работы:

Выполнение:

A = eye(7) + rot90(-eye(7))

A (4,4) = 5

Ход работы:

Выполнение:

A = diag(ones (1,7),4) + eye (11,11)

A (8:11,:) = [ ]

 

Ход работы:

Выполнение:

A = eye (11,11) + diag (ones (1,10),1)

D = diag (-1*ones(1,10),1)

D (:, 5:end) = 0

B = -1*eye(11)

B (1:3,:) = 0

S = A + D + B

 

Ход работы:

3. Сконструируйте блочные матрицы (используя функции для заполнения стандартных матриц) и определите заданные величины, применяя функции обработки данных и поэлементные операции.

; ;

;

Выполнение:

M= [ eye(3) 4*eye(3); 2*ones(3) 3*ones(3)]

S= sum(sum (sqrt(M^2)))

 

N = [ ones(2) -3*ones(2,4); -3*ones(4,2) 2*eye(4)]

Ход работы:

 

 

1)Переставьте столбцы матрицы в порядке возрастания суммы элементов столбца.

Выполнение:

[V, ind] = sort(sum(A))

A = A ([ ind],:)

Ход работы:

 

2)Найдите сумму всех положительных элементов матрицы.

Выполнение:

N = max (A, 0)

S = sum(sum (N))

Ход работы:

 

3) Считайте матрицу из файла matr.txt (предварительно создайте ее самостоятельно),

замените в ней все элементы, большие среднего арифметического ее элементов, на среднее арифметическое и запишите ее в файл newmatr.txt (включите этот файл в отчет)

Выполнение:

A = load ('matr.txt')

Sr = mean(mean (A))

S = max (A, Sr)

save ' newmatr.txt ' S -ascii

Ход работы:

 

4)Определите максимальный столбцовый и строчный индексы отрицательных элементов матрицы.

Выполнение:

[ i, j ] = max(find (A<0))

Ход работы:

Лабораторная работа 9

Тема: «Интерактивная среда для построения графиков»

Задания

Постройте поверхности из задания к лабораторной работе №2. Используя средства редактора свойств Property Editor, оформите их графическое представление:

• задайте характеристики осей;

• подберите цветовую палитру для лучшего отражения свойств поверхности;

• поварьируйте свойства граней и маркеров точек сетки;

• воспользуйтесь камерой для всестороннего осмотра и изучения поверхности

Выполнение:

[x, y] = meshgrid (-5:0.05:5, -5:0.05:5);

z=sqrt((x.^2) + (y.^2) +1);

f= ((x.^2)/8 +(y.^2)/8);

b = ((x.^2)/8 -(y.^2)/8);

surf(x,y,z)

surf(x,y,f)

surf(x,y,b)

Поверхности:

Двуполостный гиперболоид

Однополостный гиперболоид

 

Гиперболический параболоид

Вывод:

В ходе данной лабораторной работы, мы научились работать с графиками, с массивами и матрицами. Мы научились простейшим операциям с графиками, таким как построение графиков функций, вычисление их значений в заданной точке, выводам графиков различными способами. С помощью специальной кнопки, посмотреть график со всех сторон. Научились визуализировать функции нескольких переменных на прямоугольной области определения, а так же определять экстремумы функции. Разобрались в работе с массивами в matlabи при помощи функций для заполнения матриц, индексация двоеточием и транспонирования получали нужные матрицы. Выполнять различные арифметические операции, например решение интегралов и дифференциальных уравнений. Эти знания пригодятся нам в дальнейшем обучении, так как matlabможет выполнять различные технические вычисления.

Список литературы:

1. Ануфриев И., Смирнов А., Смирнова Е. MATLAB 7.0. БХВ-Петербург · 2005.

2. http://solidbase.karelia.ru/edu/meth_calc/files/sod.shtm

3. http://matlab.exponenta.ru/



<== предыдущая лекция | следующая лекция ==>
Решение контрольного примера | З. Н. Гиппиус: антиномии «двоящегося пола». Преобразование пола на пути преодоления раздвоенности духа и тела
Поделиться с друзьями:


Дата добавления: 2016-12-18; Мы поможем в написании ваших работ!; просмотров: 1862 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Не будет большим злом, если студент впадет в заблуждение; если же ошибаются великие умы, мир дорого оплачивает их ошибки. © Никола Тесла
==> читать все изречения...

2574 - | 2263 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.013 с.