del2

Дискретный лапласиан

Описание

пример

L = del2(U) возвращается дискретное приближение дифференциального оператора Лапласа применилось к U с помощью интервала по умолчанию, h = 1, между всеми точками.

пример

L = del2(U,h) задает универсальную форму, скалярный интервал, h, между точками во всех размерностях U.

пример

L = del2(U,hx,hy,...,hN) задает интервал hx,hy,...,hN между точками в каждой размерности U. Задайте каждый вход интервала как скаляр или вектор координат. Количество разрядки входных параметров должно равняться количеству размерностей в U.

  • Первое значение интервала hx задает x - располагающий с интервалами (как скаляр) или x - координаты (как вектор) точек. Если это - вектор, его длина должна быть равна size(U,2).

  • Второе значение интервала hy задает y - располагающий с интервалами (как скаляр) или y - координаты (как вектор) точек. Если это - вектор, его длина должна быть равна size(U,1).

  • Все другие значения интервала задают интервал (как скаляры) или координаты (как векторы) точек в соответствующей размерности в U. Если, для n > 2затемth разрядка входа является вектором, затем его длина, должен быть равен size(U,n).

Примеры

свернуть все

Вычислите ускорение объекта от вектора данных о положении.

Создайте вектор данных о положении.

p = [1 3 6 10 16 18 29];

Чтобы найти ускорение объекта, используйте del2 вычислить вторую числовую производную p. Используйте значение по умолчанию, располагающее с интервалами h = 1 между точками данных.

L = 4*del2(p)
L = 1×7

     1     1     1     2    -4     9    22

Каждое значение L приближение мгновенного ускорения в той точке.

Вычислите дискретный 1D Лапласиан вектора косинуса.

Задайте область функции.

x = linspace(-2*pi,2*pi);

Это производит 100 равномерно разнесенных точек в области значений -2πx2π.

Создайте вектор значений косинуса в этой области.

U = cos(x);

Вычислите лапласиан U использование del2. Используйте доменный векторный x задавать 1D координату каждой точки в U.

L = 4*del2(U,x);

Аналитически, Лапласиан этой функции равен ΔU=-потому что(x).

Постройте график результатов.

plot(x,U,x,L)
legend('U(x)','L(x)','Location','Best')

График U и L соглашается с аналитическим результатом для Лапласиана.

Вычислите и постройте дискретный Лапласиан многомерной функции.

Задайте область X и Y функции.

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

Задайте функцию U(x,y)=13(x4+y4) по этой области.

U = 1/3.*(x.^4+y.^4);

Вычислите Лапласиан этой функции с помощью del2. Интервал между точками в U равно во всех направлениях, таким образом, можно задать вход одинарного интервала, h.

h = 0.25;
L = 4*del2(U,h);

Аналитически, Лапласиан этой функции равен ΔU(x,y)=4x2+4y2.

Постройте дискретный Лапласиан, L.

figure
surf(x,y,L)
grid on
title('Plot of $\Delta U(x,y) = 4x^2+4y^2$','Interpreter','latex')
xlabel('x')
ylabel('y')
zlabel('z')
view(35,14)

График L соглашается с аналитическим результатом для Лапласиана.

Вычислите дискретный Лапласиан функции натурального логарифма.

Задайте область X и Y функции на сетке вещественных чисел.

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

Задайте функцию U(x,y)=12журнал(x2y) по этой области.

U = 0.5*log(x.^2.*y);

Логарифм с комплексным знаком когда аргумент y отрицательно.

Используйте del2 вычислить дискретный Лапласиан этой функции. Задайте интервал между узлами решетки в каждом направлении.

hx = 1; 
hy = 0.5;
L = 4*del2(U,hx,hy);

Аналитически, Лапласиан равен ΔU(x,y)=-(1/x2+1/2y2). Эта функция не задана на линиях x=0 или y=0.

Постройте действительные части U и L на том же графике.

figure
surf(x,y,real(L))
hold on
surf(x,y,real(U))
grid on
title('Plot of U(x,y) and $\Delta$ U(x,y)','Interpreter','latex')
xlabel('x')
ylabel('y')
zlabel('z')
view(41,58)

Главной поверхностью является U и нижней поверхностью является L.

Входные параметры

свернуть все

Входной массив, заданный как векторный, матричный или многомерный массив.

Типы данных: single | double
Поддержка комплексного числа: Да

Разрядка во всех размерностях, заданных как 1 (значение по умолчанию) или скаляр.

Типы данных: single | double
Поддержка комплексного числа: Да

Разрядка в каждой размерности, заданной в качестве отдельных аргументов скаляров (для универсального интервала) или векторы (для неоднородного интервала). Количество разрядки входных параметров должно быть равно количеству размерностей в U. Каждый вход интервала задает интервал между точками в одной размерности U:

  • Первое значение интервала hx задает x - располагающий с интервалами (как скаляр) или x - координаты (как вектор) точек. Если это - вектор, его длина должна быть равна size(U,2).

  • Второе значение интервала hy задает y - располагающий с интервалами (как скаляр) или y - координаты (как вектор) точек. Если это - вектор, его длина должна быть равна size(U,1).

  • Все другие значения интервала задают интервал (как скаляры) или координаты (как векторы) точек в соответствующей размерности в U. Если, для n > 2затемth разрядка входа является вектором, затем его длина, должен быть равен size(U,n).

Типы данных: single | double
Поддержка комплексного числа: Да

Выходные аргументы

свернуть все

Дискретное Лапласово приближение, возвращенное как вектор, матрица или многомерный массив. L одного размера с входом, U.

Больше о

свернуть все

Дифференциальный оператор Лапласа

Если матричный U функциональный U(x,y), который оценен в точках квадратной сетки, затем 4*del2(U) приближение конечной разности дифференциального оператора Лапласа, применился к U,

L=ΔU4=14(2Ux2+2Uy2).

Для функций большего количества переменных, U(x,y,z,...), дискретного Лапласиана del2(U) вычисляет вторые производные в каждой размерности,

L=ΔU2N=12N(2Ux2+2Uy2+2Uz2+...),

где N является количеством размерностей в U и N2.

Алгоритмы

Если вход U матрица, внутренние точки L найдены путем взятия различия между точкой в U и среднее значение его четырех соседей:

Lij=[(ui+1,j+ui1,j+ui,j+1+ui,j1)4ui,j].

Затем del2 вычисляет значения на ребра L путем линейного экстраполирования вторых различий от внутренней части. Эта формула расширена для многомерного U.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Генерация кода графического процессора
Сгенерируйте код CUDA® для NVIDIA® графические процессоры с помощью GPU Coder™.

Смотрите также

|

Представлено до R2006a

Для просмотра документации необходимо авторизоваться на сайте