C言語関係掲示板

過去ログ

No.998 z=f(x、y)における等高線を求めるプログラム

[戻る] [ホームページ]
No.819

等高線
投稿者---ハヤブサ(2003/12/12 17:43:44)


今任意の関数z=f(x、y)における等高線を求めるプログラムをNewton法を使って作ろうと思うのですが、どんなアルゴリズムを用いたらうまくできるでしょうか?いろいろ考えるとごちゃごちゃになり、うまくできないんです。だれか手助けください。初心者なのでよろしくお願いします。

No.821

Re:等高線
投稿者---たいちう(2003/12/12 18:37:20)


「等高線を求める」とは何を指しているのでしょうか?

それらしい一番簡単なプログラムは、地形図のようにzによって
色を塗り分けるプログラムですが。
これならば、1)場合わけ、2)任意の位置に任意の色の点を打つ、
の2つがそれぞれできれば問題ないでしょう。

入力(z=f(x,y))に対して、どんな出力が欲しいのか、
具体的に説明してください。

No.822

Re:等高線
投稿者---たか(2003/12/12 21:09:10)


これは前に仕事でやった事があります。等高線を求めるアルゴリズムは
いくつかありますが、基本は等高線の接線をx, yそれぞれについて偏微分
し、その全微分の値が0になるように(ある一定のイプシロン以下となるよ
うに)ニュートン法で求め、その接線の方向へ少しだけ進み、改めて次の
接線を求めます。

この方法を使うには、等高線の曲線がz = f(x, y)で表せる必要がありま
す。

No.824

Re:等高線
投稿者---ハヤブサ(2003/12/13 23:17:46)


不十分な記事ですみません。
僕が出力させたいのは、
z=f(x、y)において
z=1を満たす(x、y)の点列
z=2を満たす(x、y)の点列

z=nを満たす(x、y)の点列

を出力させようとしているのですが、z=nでのこの点列を滑らかに結べば等高線になりませんかね??

No.826

Re:等高線
投稿者---たか(2003/12/14 13:02:51)


>僕が出力させたいのは、
>z=f(x、y)において
>z=1を満たす(x、y)の点列
>z=2を満たす(x、y)の点列
>z=nを満たす(x、y)の点列
>
>を出力させようとしているのですが、z=nでのこの点列を滑らかに結べば等高線になりませんかね??

ニュートン法では一つの初期値につき一つの解しか求まりませんが、もし
すべての解を求める手段があるのなら、それでもいいでしょう。

二次元の線を滑らかに結ぶには、閉曲線のスプライン補完法が使えます。

ここからダウンロードして下さい。