Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Пример применения MATLAB



Задача.

Дано: В объёме тетраэдра скалярное и векторное поля изменяются по линейному закону. Координаты вершин тетраэдра заданы матрицей вида [ x 1, y 1, z 1; x 2, y 2, z 2; x 3, y 3, z 3; x 4, y 4, z 4]. Значения скалярного поля в вершинах заданы матрицей [Ф1; Ф2; Ф3; Ф4]. Декартовы компоненты векторного поля в вершинах заданы матрицей [ F 1 x , F 1 y , F 1 z ; F 2 x , F 2 y , F 2 z ; F 3 x , F 3 y , F 3 z ; F 4 x , F 4 y , F 4 z ].

Определить в объёме тетраэдра градиент скалярного поля, а также дивергенцию и ротор векторного поля. Составить для этого функцию MATLAB.

Решение. Ниже приведён текст m-функции.

% grad_div_rot - Вычисление градиента, дивергенции и ротора... в объёме тетраэдра

% [grad,div,rot]=grad_div_rot(nodes,scalar,vector)

% ВХОДНЫЕ ПАРАМЕТРЫ

% nodes - матрица координат вершин тетраэдра:

% строкам соответствуют вершины, столбцам - координаты;

% scalar - столбцовая матрица значений скалярного поля в вершинах;

% vector - матрица компонентов векторного поля в вершинах:

% строкам соответствуют вершины, столбцам - декартовы компоненты.

% ВЫХОДНЫЕ ПАРАМЕТРЫ

% grad - матрица-строка декартовых компонентов градиента скалярного поля;

% div - значение дивергенции векторного поля в объёме тетраэдра;

% rot - матрица-строка декартовых компонентов ротора векторного поля.

%

% При вычислениях предполагается, что в объёме тетраэдра

% векторное и скалярное поля изменяются в пространстве по линейному закону.

function [grad,div,rot]=grad_div_rot(nodes,scalar,vector);

a=inv([ones(4,1) nodes]); % Матрица коэффициентов линейной интерполяции

grad=(a(2:end,:)*scalar).'; % Компоненты градиента скалярного поля

div=[a(2,:) a(3,:) a(4,:)]*vector(:); % Дивергенция векторного поля

rot=sum(cross(a(2:end,:),vector.'),2).';

Пример запуска разработанной m-функции:

>> nodes=10*rand(4,3)

nodes =3.5287 2.0277 1.9881 8.1317 1.9872 0.15274 0.098613 6.0379 7.4679 1.3889 2.7219 4.451

>> scalar=rand(4,1)

scalar = 0.93181 0.46599 0.41865 0.84622

>> vector=rand(4,3)

vector = 0.52515 0.01964 0.50281 0.20265 0.68128 0.70947 0.67214 0.37948 0.42889

0.83812 0.8318 0.30462

>> [grad,div,rot]=grad_div_rot(nodes,scalar,vector)

grad = -0.16983 -0.03922 -0.17125

div = -1.0112

rot = -0.91808 0.20057 0.78844

Если предположить, что пространственные координаты измеряются в метрах, а векторное и скалярное поля - безразмерные, то в данном примере получилось:

grad Ф = (-0.16983* 1 x - 0.03922* 1 y - 0.17125* 1 z) м-1;

div F = -1.0112 м-1;

rot F = (-0.91808* 1 x + 0.20057* 1 y + 0.78844* 1 z) м-1.





Дата публикования: 2014-12-08; Прочитано: 417 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...