Documentation

This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the page.

del2

Discrete Laplacian

Syntax

• L = del2(U)
example
• L = del2(U,h)
example
• L = del2(U,h1,...,hN)
example

Description

example

L = del2(U) returns a discrete approximation of Laplace's differential operator applied to U using the default spacing, h = 1, between all points.

example

L = del2(U,h) specifies a uniform, scalar spacing, h, between points in all dimensions of U.

example

L = del2(U,h1,...,hN) specifies the spacing, h1,...,hN, between points in each corresponding dimension of U. For each dimension, specify the spacing as a scalar or a vector of coordinates. The number of spacing inputs must equal the number of dimensions in U.

Examples

collapse all

Calculate the acceleration of an object from a vector of position data.

Create a vector of position data.

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

To find the acceleration of the object, use del2 to calculate the second numerical derivative of p. Use the default spacing h = 1 between data points.

L = 4*del2(p) 
L = 1 1 1 2 -4 9 22 

Each value of L is an approximation of the instantaneous acceleration at that point.

Calculate the discrete 1-D Laplacian of a cosine vector.

Define the domain of the function.

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

This produces 100 evenly spaced points in the range .

Create a vector of cosine values in this domain.

U = cos(x); 

Calculate the Laplacian of U using del2. Use the domain vector x to define the 1-D coordinate of each point in U.

L = 4*del2(U,x); 

Analytically, the Laplacian of this function is equal to .

Plot the results.

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

The graph of U and L agrees with the analytic result for the Laplacian.

Calculate and plot the discrete Laplacian of a multivariate function.

Define the x and y domain of the function.

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

Define the function over this domain.

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

Calculate the Laplacian of this function using del2. The spacing between the points in U is equal in all directions, so you can specify a single spacing input, h.

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

Analytically, the Laplacian of this function is equal to .

Plot the discrete Laplacian, 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) 

The graph of L agrees with the analytic result for the Laplacian.

Calculate the discrete Laplacian of a natural logarithm function.

Define the x and y domain of the function on a grid of real numbers.

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

Define the function over this domain.

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

The logarithm is complex-valued when the argument y is negative.

Use del2 to calculate the discrete Laplacian of this function. Specify the spacing between grid points in each direction.

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

Analytically, the Laplacian is equal to . This function is not defined on the lines or .

Plot the real parts of U and L on the same graph.

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) 

The top surface is U and the bottom surface is L.

Input Arguments

collapse all

Input array, specified as a vector, matrix, or multidimensional array.

Data Types: single | double
Complex Number Support: Yes

Spacing in all dimensions, specified as 1 (default), or a scalar.

Data Types: single | double
Complex Number Support: Yes

Spacing in each dimension, specified as scalars or vectors. The number of spacing inputs must be equal to the number of dimensions in U. Each spacing input defines the spacing between points in the corresponding dimension of U:

• Use a scalar to specify a uniform spacing.

• Use a vector to specify a nonuniform spacing. The coordinate vector gives the position of each point and must have the same number of elements as the corresponding dimension of U (a one-to-one match of coordinates and points).

Data Types: single | double
Complex Number Support: Yes

Output Arguments

collapse all

Discrete Laplacian approximation, returned as a vector, matrix, or multidimensional array. L is the same size as the input, U.

collapse all

Laplace's differential operator

If a matrix U is a function U(x,y) that is evaluated at the points of a square grid, then 4*del2(U) is a finite difference approximation of Laplace's differential operator applied to U,

$L=\frac{\Delta U}{4}=\frac{1}{4}\left(\frac{{\partial }^{2}U}{\partial {x}^{2}}+\frac{{\partial }^{2}U}{\partial {y}^{2}}\right).$

For functions of more variables, U(x,y,z,...), the discrete Laplacian del2(U) calculates second-derivatives in each dimension,

$L=\frac{\Delta U}{2N}=\frac{1}{2N}\left(\frac{{\partial }^{2}U}{\partial {x}^{2}}+\frac{{\partial }^{2}U}{\partial {y}^{2}}+\frac{{\partial }^{2}U}{\partial {z}^{2}}+...\right),$

where N is the number of dimensions in U and $N\ge 2$.

Algorithms

If the input U is a matrix, the interior points of L are found by taking the difference between a point in U and the average of its four neighbors:

${L}_{ij}=\left[\frac{\left({u}_{i+1,j}+{u}_{i-1,j}+{u}_{i,j+1}+{u}_{i,j-1}\right)}{4}-{u}_{i,j}\right]\text{\hspace{0.17em}}.$

Then, del2 calculates the values on the edges of L by linearly extrapolating the second differences from the interior. This formula is extended for multidimensional U.