
Лабораторная работа 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
Поверхности:
Напишите файл-функцию для решения следующих задач:
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»