對網上流傳的水波演算法的質疑

2021-06-15 18:55:11 字數 2074 閱讀 7852

我在研究你的水波程式時,認真的進行了研究了很長時間,我覺得網上流傳的水波演算法在推理的過程中有一些問題值得商榷。

1。你推出公式4a+b=1的前提是能量守恆,水波的振幅之和不發生變化.

如果真是能量守恆的話,應該是a=1/4,b=0

這是因為該點的能量全部傳給四周,而中心的能量傳出去了。

而若取a=1/2,b=-1則實際效果是能量增加,雖然振幅之和不變,但整個資料越來越大,振幅不斷增加。中心點這麼大的能量不足以產生這麼大的振幅。

而實質上能量正比於振幅的平方。

2.你的波能函式核心是:

buf2(i, j) = (buf1(i, j - 1) + buf1(i - 1, j) + buf1(i + 1, j) + buf1(i, j + 1)) /2 -

buf2(i, j)

』實質是buf2(i,j)下一時刻的能量是周圍四點的能量的一半減去buf2(i,j)

上上一次的能量。

buf2(i, j) = buf2(i, j) - buf2(i, j) /32

swap(buf1,buf2)

而不是你公式裡所推導的:

buf2(i, j) = (buf1(i, j - 1) + buf1(i - 1, j) + buf1(i + 1, j) + buf1(i, j + 1)) /2 –

buf1(i, j)

』實質是buf2(i,j)下一時刻的能量是周圍四點的能量的一半減去buf2(i,j)

上一次的能量。

buf2(i, j) = buf2(i, j) - buf2(i, j) /32

swap(buf1,buf2) ;若是buf1這一步已有沒有對結果無影響。

式子一: 'buf2(i, j) = (buf1(i - 1, j) + buf1(i + 1, j) + buf1(i, j - 1) + buf1(i, j + 1)) / 2 - buf2(i, j)

式子二: buf2(i, j) = sqr((buf1(i - 1, j) ^ 2 + buf1(i + 1, j) ^ 2 + buf1(i, j - 1) ^ 2 + buf1(i, j + 1) ^ 2)) / 2 '- buf2(i, j)

式子三:buf2(i, j) = (buf1(i, j - 1) + buf1(i - 1, j) + buf1(i + 1, j) + buf1(i, j + 1)) /4

'上式完整形式為buf2(i, j) =buf2(i, j)+ (buf1(i - 1, j) + buf1(i + 1, j) + buf1(i, j - 1) + buf1(i, j + 1)) / 4-buf2(i, j)

'波能在自身原有的能量基礎上從周圍四個方向的波源獲得其1/4的能量,再把自身的能量平均分成四份完全傳播給周圍四點。

'buf2(i, j) = buf2(i, j) - buf2(i, j) / 32 '部分波能被水吸收

x(i-1,j)

x(i,j-1)

x(i,j)

x(i,j+1)

x(i+1,j)

1

3

0

3

3

0

9

0

3

1

0

9

0

9

0

1

3

0

9

0

3

3

0

3

1

4

8

0

8

4

0

16

0

4

8

0

8

4

16

16

0

16

16

64

網上流傳的微軟面試邏輯題分析

殺父問題 在乙個村莊中 50對夫婦中的每乙個丈夫都曾經不忠於妻子 一旦某個男人與別的女人有染 村子裡的女人 除了這個男人的妻子 因為大家都瞞著她 立刻就知道了 村子很小 村里規定對通姦行為的嚴厲處罰是通姦男人的妻子必須在當天親手殺死自己的丈夫 所有的女人都願意遵守這條法律 問題是 有一天 永無過失 ...

海盜瓜分金幣 一道網上流傳的微軟面試題

在乙個孤島上有 5個海盜要瓜分 100塊金幣 他們按下列方法來瓜分這些掠奪物 資格最老的海盜提出乙個分配意見 然後大家對這個分配意見投票表決 如果有一半的人投了贊成票 就按照這個方案來劃分 如果沒有通過 就殺調這個資格最老的海盜 然後再由活著的海盜中資格最老的海盜來提出分配方案 按照同樣的方式來投票...

對ZeroMQ速度的質疑

都說zeromq的速度很快,到底有多快?官方說的每秒百萬筆交易速度,真有這麼nb?這兩天用zeromq實現了乙個交易中介軟體,可惜速度只有5000筆每秒的速度,為啥差距這麼大呢?問題到底在 呢?1.支援的所有模式中,pub sub效能最好,在cpu e8400,記憶體1g的機器上可以輕鬆跑到每秒接近...