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

Задача.

Дано: В объёме тетраэдра скалярное и векторное поля изменяются по линейному закону. Координаты вершин тетраэдра заданы матрицей вида [x1, y1, z1; x2, y2, z2; x3, y3, z3; x4, y4, z4]. Значения скалярного поля в вершинах заданы матрицей [Ф1; Ф2; Ф3; Ф4]. Декартовы компоненты векторного поля в вершинах заданы матрицей [F1x, F1y, F1z; F2x, F2y, F2z; F3x, F3y, F3z; F4x, F4y, F4z].

Определить в объёме тетраэдра градиент скалярного поля, а также дивергенцию и ротор векторного поля. Составить для этого функцию 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*1x - 0.03922*1y - 0.17125*1z) м-1;

div F = -1.0112 м-1;

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

 








Дата добавления: 2015-08-14; просмотров: 1044;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.