質問: 2*pi/4 とした時に、うまくプロットできません。 本来r*cos(theta)=0なのでどちらのプログラミングも同じ結果が出るはずなのですが、matlab上では誤差の影響なのか6.1232e-17という計算結果になることはわかりました。 しかしこの誤差がどう悪さをしてプロットがうまくできないのかが解明できていません。 多少の誤差が生じたとしても、音源の位置が本来の場所からちょっとずれて音が広がっていく様子が二つ目の図と同じようにプロットされると思ったのですが、うまく点音源の音圧分布がプロットされず困っています。 もし原因がわかる方がいたらご教授よろしくお願いいたします。 ※今回音圧の計算に用いたものは以下の式を変形したものです。 また今後比較的楽に音源の数を増やせるようにするためにcos,sinの計算を使用しています。
回答: こんにちは。 私の環境だとプロットされる図が逆になりますが、貼り付けの際の間違いでしょうか。 いずれにせよ、結果に違いが生じるのは、 sqrt(x1.^2+y1.^2+z1.^2) の値を考えると理解できるかと思います。2つの条件で言えば、音源においてゼロかものすごく小さな値になります。ですので、soundsorce1ではゼロ割になるか、ものすごく小さな値で割っているかの違いとなります。ものすごく小さな値で割るとsoundsorce1の値が音源においてものすごく大きくなるので、他の値が全部ゼロに見えてしまう、というからくりです。カラーバーを表示させて色の表示範囲を確認すれば合点がいくのではと思います。 このように本来音源そのものでは数値計算上値が変になってしまうので、別途処理が必要になるかと思います。sqrt(x1.^2+y1.^2+z1.^2)を(sqrt(x1.^2+y1.^2+z1.^2)+eps)にするとか(epsには適当に小さい値を入れる)、音源の位置は別の値に差し替えるとかでしょうか。