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 -spacing (как скаляр) или x -cordinates (как вектор) точек. Если это вектор, его длина должна быть равна size(U,2).

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

  • Все другие значения интервалов задают интервалы (как скаляры) или координаты (как векторы) точек соответствующей размерности в U. Если, для n > 2, а nth spacing вход является вектором, тогда его длина должна быть равна 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 является приближением мгновенного ускорения в этой точке.

Вычислите дискретное 1-D Laplacian вектора косинуса.

Определите область определения функции.

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

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

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

U = cos(x);

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

L = 4*del2(U,x);

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

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

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

Figure contains an axes. The axes contains 2 objects of type line. These objects represent U(x), L(x).

Область графика U и L согласен с аналитическим результатом для Laplacian.

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

Задайте области 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)

Figure contains an axes. The axes with title Plot of $\Delta U(x,y) = 4x^2+4y^2$ contains an object of type surface.

Область графика L согласен с аналитическим результатом для Laplacian.

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

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

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

Определите функцию U(x,y)=12log(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)

Figure contains an axes. The axes with title Plot of U(x,y) and $\Delta$ U(x,y) contains 2 objects of type surface.

Верхняя поверхность U и нижняя поверхность L.

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

свернуть все

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

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

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

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

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

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

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

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

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

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

свернуть все

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

Подробнее о

свернуть все

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

Определение оператора Laplace, используемое в del2 в MATLAB® зависит от размерности данных в U.

  • Если U вектор, представляющий U(x) функции, которая вычисляется на точках линии, затем del2(U) является конечным разностным приближением

    L=ΔU4=142Ux2.

  • Если U является матрицей, представляющей U(x,y) функции, которая оценивается в точках квадратной сетки, затем del2(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++ с помощью Coder™ MATLAB ®

.

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

.

См. также

|

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