Can finite difference method can be expressed with diff function?

Hi, Here is the finite difference example
i=2:n-1;
j=2:n-1;
B(i,j) = A(i+1,j) - 2*A(i,j) + A(i-1,j) + A(i,j+1) - 2*A(i,j) + A(i,j-1)
expanding it yields
B(i,j) = A(i+1,j) - *A(i,j)- *A(i,j) + A(i-1,j) + A(i,j+1)- *A(i,j)- *A(i,j) + A(i,j-1)
rearranging,
B(i,j) = {A(i+1,j) - *A(i,j)}- {*A(i,j) - A(i-1,j)} + {A(i,j+1)- *A(i,j)} - {*A(i,j) - A(i,j-1)}
then,
B = diff(A,?,?) - diff(A,?,?) + diff(A,?,?) - diff(A,?,?)
Can this arrangement be possible? if yes, then what are the values in the question marks.

回答 (1 件)

Roger Stafford
Roger Stafford 2016 年 5 月 8 日
編集済み: Roger Stafford 2016 年 5 月 8 日

0 投票

Assuming A is n x n,
B = diff(A,2,1)+diff(A,2,2);
The array B would be of n-2 x n-2 size. The second argument of 2 in each 'diff' indicates a "second" difference.

2 件のコメント

mathango
mathango 2016 年 5 月 9 日
The equation does not work. Each diff result has different matrix size ( 3 x 5 and 5 x 3 for n=5) therefore sum of each diff does not work.
Roger Stafford
Roger Stafford 2016 年 5 月 9 日
I'm sorry. I have corrected it to be what I think you asked for. The second difference operation shrinks the size down by two in the direction in which it is performed. Your expression did second differencing in two directions.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeFunction Creation についてさらに検索

タグ

質問済み:

2016 年 5 月 8 日

コメント済み:

2016 年 5 月 9 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by