A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
一番です。
今帰ってきたと子なので大雑把に。鞍部問題でいやってほど苦しんだ人間ですので、尋常な方法ではありません。
点(Xi, Yi), i=1,2,...,n を通る円の方程式を求めるとして、
円の中心点(X0, Y0)の座標は
Xiの最大値Xmaxと最小値Xminの間に X0が存在する
Yiの最大値Ymaxと最小値Yminの間に Y0が存在する
ことが「偏りがないサンプリング」で、十分大きな資料数がある場合にはは言えるでしょう(私が解いた問題では、偏りがあって苦労した)。
XmaxとXminの間を16分割して(Xmax-Xmin)/128の幅(Xhaba)で
YmaxとYminの間を16分割して(Ymax-Ymin)/128の幅(Yhaba)で
16*16 =256 個の点のどこかに中心点があるとして、すべての観測点との距離を計算して、距離の平均と、計算でもとのた距離との差の絶対値が最小となった点(Xk, Yk)をもとめます(私の場合には、Yk=Ymaxとなって本来求めたいYk=Ymin側の中心点が消えてしまった)。
点(Xk, Yk)の周り , Xk-Xhaba から Xk+Xhabaの間, Yk-Yhaba から Yk-Yhaba の間について、同様に、X方向・y方向ともに16分割して計算して行きます。
これを何回か繰り返してゆくと、残差の変化がほとんどない点が最適解としてえられます。
これで求められた点と、観測点の重心を中点とする反対側に鞍部の向こう側の解となる中心点(Xl, Yl)があると仮定して
点(Xl, Yl)の周り , Xl-Xhaba から Xl+Xhabaの間, Yl-Yhaba から Yl-Yhaba の間について、同様に、X方向・y方向ともに16分割して計算して行きます。
これを何回か繰り返してゆくと、残差の変化がほとんどない点が最適解としてえられます。
以上の方法て゛、2つの解がえられます。定義域などの情報から一方の解は捨てられるでしょう。
個の方法は、計算時間がやたらかかりますが、鞍部問題に引っかかりにくいので便利です。点(1.1,1.1), (1,-1), (-1,1), (-1,-1)の4点が与えられているときに、
点(0,0)付近を中心とした半径1.4位の円を想定するか、
点(10,10)(くらいかな)付近を中心とする半径10くらいの円を想定するか、
点(-10,-10)(くらいかな)付近を中心とする半径10くらいの円を想定するか、
です。
手作業で行うのであれば、任意の点3点を選んで、3点を通る円の式を解析で求めて、これを初期値(Xm, Ym)とする。
点(Xm, Ym)の周り , Xm-Xhaba から Xm+Xhabaの間, Ym-Yhaba から Ym-Yhaba の間について、同様に、X方向・y方向ともに16分割して計算して行きます。
という方法もあります。「任意の点」というよりも、点間距離が大きくなる点を選んだ(総当りで3てん感の距離の合計を求めて最大となった点を初期値とする。ただし正三角形に近い形の場合が収束が早い)ほうが、最適解になりやすいです。
方法はいくつかありますので、プログラミングの技術(含プログラム作成時間がどのくらいさけるか、最初の方法ですとFor-Nextの繰り返しだけだから3-4日で何とか形になる、を含む)と相談して選んでください。「研究する」ことが重要であって、プログラミングは研究するための道具でしかないのですから、多少計算時間はかかっても(夜間放置して解を得ることになっても)、研究のほうが重要ですので、プログラミングは短時間で終了させる必要があります。
No.2
- 回答日時:
全く詳しくないド素人(プログラムも数学も)ですが、
プログラムの手順としては
1. Xj,Yjを読み込む。 ファイル形式で読み込むのか、数値入力するのか、ビジュアルに入れるのかその辺はきまっていますか?
2. x0,y0を計算で出す。
ヒントとしては、
S=Σ{(xj-x0)^2 +(yj-y0)^2}
=Σ(xj-x0)^2 +Σ(yj-y0)^2
=x1^2-2x1x0+x0^2+x2^2-2x2x0+x0^2+.....+Σ(yj-y0)^2
=Σxj^2-Σ2xjx0+Σx0^2+Σ(yj-y0)^2
∂S/∂x0=-Σ(2xj-2x0)
⇒Σxj=n*x0
x0 = Σxj/n
ということでちょっと気になっている、http://oshiete1.goo.ne.jp/qa4381786.htmlの2番目の回答と同じ。
これがどういうことかというと、読み込んだxjを全部足して読み込んだ個数で割るという意味。
3.pを求める。
4.結果を表示する。
どう見ても研究というより課題だけど、自分でやらないと意味がないと思う。
No.1
- 回答日時:
「円の」の意味が解釈不能。
VBプログラムを作るとして、求める方程式と、どの残差を最小にしたいか、
それとも、どなたかが作成したプログラムでしょうか、こちらですと、作成者に聞いたほうが早いのですが。
この回答へのお礼
お礼日時:2008/10/16 11:54
ここでの円は座標上での円です。
残差を最小にして計算を行いたいです。
S=Σ{(xj-x0)^2 +(yj-y0)^2}
として、
∂S/∂x0=0
∂S/∂y0=0
より、(x0,y0)が求め、次に半径r0を
ρ=(1/N)Σ√{(xj-x0)^2 +(yj-y0)^2}
として、
r0=pを求めるプログラムを作りたいのです。
ちなみにどなたかがこのプログラムを作成していないか探したところ見つかりませんでした。
内容不足ですみませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
エクセルVBA 他の仕事を止...
-
時間(ミリ秒を含む)の引き算
-
C言語初心者。静磁場の計算。台...
-
バッチファイルでウインドウを...
-
BASICのプログラムで行列式の積...
-
ホームページビルダーで料金の...
-
10進数を2進数に変換する問題
-
matlabで計算終了
-
エクセルで特定のセルのみを任...
-
fortran dlog2
-
放物線の運動
-
VBとVBAの違い
-
アセンブリ言語で0x4(%esp)の...
-
Excel VBAにてFFT
-
関数を使わないで日付の計算を...
-
VBAで関数をつくる
-
正しい五十音順について
-
VBAで仕様書は書きますか?
-
あるプログラムのコマンドライ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
EXCELなどで「返す」という表現
-
matlabで計算終了
-
排他的論理和 BCC(水平パリテ...
-
変化させるセルが変化しない
-
モジュラス103の計算とは何でし...
-
傾いた四角形内の範囲の条件式
-
VBAで関数をつくる
-
[急募]Pythonについてです。
-
数値計算の高速化 (cos, sin, exp)
-
C言語についての質問です。 ル...
-
切り上げたい
-
DLL(VC++で作った)で稼動中の...
-
CとFORTRANの計算速度はどちら...
-
趣味で「乗換案内」みたいなソ...
-
CGIの実行権限(ディスク容...
-
エクセルで特定のセルのみを任...
-
functionを含んだプログラムを...
-
時間差を求める
おすすめ情報