Главная страница

лабораторная матлаб. Лаб2. Номер варианта диапазон x


Скачать 489.68 Kb.
НазваниеНомер варианта диапазон x
Анкорлабораторная матлаб
Дата24.02.2023
Размер489.68 Kb.
Формат файлаdocx
Имя файлаЛаб2.docx
ТипДокументы
#952836

  1. Построить графики поверхности для плоского скалярного поля в среде Matlab c помощью команд mesh и surf. Вид функции , а также диапазон и шаг изменения переменных и указаны в таблице:

номер варианта

диапазон x

диапазон y

u(x,y)

1

-1:0.05:2

-4:0.05:1




%Задание 1

%Строим поверхности p

[X Y]=meshgrid([-1:0.05:2],[-4:0.05:1]);

U=X.^2+Y.^2+1;

%c помощью команды mesh

mesh(X,Y,U);

title('График c помощью команды mesh');

xlabel('x');

ylabel('y');

figure();

%c помощью команды surf

surf(X,Y,U);

title('График c помощью команды surf');

xlabel('x');

ylabel('y');
Листинг программы в Matlab

Результат работы





  1. Для скалярного поля из задания 1 рассчитать значение функции, расположенное посередине диапазонов вариации переменных и . Построить линию уровня, проходящую через данную точку, с помощью команды contour.


%Задание 2

%Задаем векторное поле

Xmax=2;Xmin=-1;Ymax=1;Ymin=-4

VP = @(x,y) x.^2+y.^2+1;

[X Y]=meshgrid([Xmin:0.05:Xmax],[Ymin:0.05:Ymax]);

U=VP(X,Y);

%Значение функции в серединах вариации переменных

x0=(Xmax+Xmin)/2

y0=(Ymax+Ymin)/2

U0=VP(x0,y0);

fprintf('Значение функции в середине равно: %5.3f\n',U0);

%Строим линию уровня

contour(X,Y,U,[U0 U0])

title('Линия уровня через середину');

xlabel('x');

ylabel('y');
Листинг программы в Matlab

Результат работы





  1. Рассчитать градиент функции скалярного поля из задания 1 в точке из задания 2 численно (аналитически) и с помощью команды gradient (найдя длину вектора градиента по полученным его координатам). Построить вектор указанного градиента совместно с линией уровня (пример - рис. 7).



%Задание 3

%Задаем векторное поле

Xmax=2;Xmin=-1;Ymax=1;Ymin=-4

VP = @(x,y) x.^2+y.^2+1;

%Значение функции в серединах вариации переменных

x0=(Xmax+Xmin)/2

y0=(Ymax+Ymin)/2

U0=VP(x0,y0);

%Задание области для градиента

dx=0.01;dy=0.01;d=0.1;nx=2*d/dx+1;ny=2*d/dy+1;

%XX=linspace(x0-d,x0+d,nx);

%YY=linspace(y0-d,y0+d,ny);

%Определение номера точки x0 ,y0

nx0=d/dx;ny0=d/dy;

%Рассчет матрицы F

[XX YY]=meshgrid([x0-d:dx:x0+d],[y0-d:dy:y0+d]);

F=VP(XX,YY);

%Рассчет матриц производных

[FX,FY] = gradient(F,dx,dy);

%Значение производных

FX0=FX(ny0,nx0)

FY0=FX(ny0,nx0)

[X Y]=meshgrid([Xmin:0.05:Xmax],[Ymin:0.05:Ymax]);

U=VP(X,Y);

x0=(Xmax+Xmin)/2

y0=(Ymax+Ymin)/2

U0=VP(x0,y0);

%Строим линию уровня

contour(X,Y,U,[U0 U0])

title('Линия уровня и градиент');

xlabel('x');

ylabel('y');

grid on

hold on

plot([x0 FX0],[y0 FY0],'-r');

hold off
Листинг программы в Matlab

Результат работы




  1. Построить набор векторов плоского векторного поля, заданного координатными функциями и в среде Matlab c помощью команды quiver. Вид функций и , а также диапазон и шаг изменения переменных и указаны в таблице (вектора строятся для каждой точки из диапазона координат):

номер варианта

диапазон x

диапазон y





константа c

свободная координата

1

-1:0.2:1

-1:0.2:1

x

y

1




%Задание 4

%Задаем векторное поле

P = @(x,y) x;

Q = @(x,y) y;

x=linspace(1,-1,10);

y=linspace(1,-1,10);

u=P(x,y);

v=Q(x,y);

quiver3(x,y,u,v,c);

title('Набор векторов плоского векторного поля');

xlabel('x');

ylabel('y');

grid on
Листинг программы в Matlab

Результат работы



  1. Аналитически найти выражения для семейства векторных линий для плоского векторного поля, заданного координатными функциями и из задания 1. По заданным значениям константы c и массиву значений свободной координаты векторной линии (указаны в таблице) рассчитать массив значений зависимой координаты согласно выражению для векторной линии. По полученным массивам координат построить векторную линию и вектора поля на ней.

Решение

Построить векторные линии и для плоского (двумерного) поля . Построить несколько векторов для данного поля.

По уравнению семейства линий:

Уравнение семейства линий задано в явном виде

%Задание 5

%Задаем векторное поле

Xmax=1;Xmin=-1;Ymax=1;Ymin=-1

P = @(x,y) x;

Q = @(x,y) y;

c=1;

Yx = @(x) x*c;

x=linspace(0,1,10);

y=Yx(x)

u=P(x,y);

v=Q(x,y);
%Строим линию уровня

quiver(x,y,u,v,c);

title('Векторная линия и вектора поля');

xlabel('x');

ylabel('y');

hold on

plot(x,y,'-r');

hold off

grid on

Листинг программы в Matlab


Результат работы



  1. Рассчитать 3-х мерный массив координат векторов для объемного векторного поля, заданного координатными функциями , , при произвольных и одинаковых диапазонах и шаге вариации переменных , , . Построить указанные вектора с помощью команды quiver3.



%Задание 6

%Задаем векторное поле

P = @(x,y,z) -x.^2+z.^2./y;

Q = @(x,y,z) y.^2-x.^2+z./y;

R = @(x,y,z) z.^2+y.^2./x;

x=-2:0.1:2;

y=-2:0.1:2;

z=-2:0.1:2;

u=P(x,y,z);

v=Q(x,y,z);

w=R(x,y,z);

%Строим линию уровня

quiver3(x,y,z,u,v,w,10);

title('Векторное поле');

grid on


Листинг программы в Matlab


Результат работы



  1. Найти значение дивергенции объемного векторного поля из задания 6 с помощью команды divergence. Построить графики срезов объема в 3-х произвольных плоскостях (команда slice), график поверхности уровня для произвольного значения функции divergence (команда isosurface) и графики срезов с поверхностей уровня в 3-х произвольных плоскостях (команда contourslice).



%Задание 7

%Задаем векторное поле

P = @(x,y,z) -x.^2+z.^2./y;

Q = @(x,y,z) y.^2-x.^2+z./y;

R = @(x,y,z) z.^2+y.^2./x;

x=-2:0.1:2;

y=-2:0.1:2;

z=-2:0.1:2;

[U V W]=meshgrid(P(x,y,z),Q(x,y,z),R(z,y,z));

u=P(x,y,z);

v=Q(x,y,z);

w=R(x,y,z);

div = divergence(x,y,z,U,V,W);

slice(x,y,z,div,[-2 0 2],[-2 0 2],[-2 0 2]);

title('Срезы объема');

figure()

isosurface(x,y,x,div,1)

title('Поверхность уровня');

figure()

contourslice(x,y,z,div,[-2 -1 0 1 2],[-2 -1 0 1 2],[-2 -1 0 1 2],[-2 -1 0 1 2])

title('Графики срезов с поверхностей уровня');
Листинг программы в Matlab

Результат работы







написать администратору сайта