プロセスを見つけることからセレスは、多項式フィッティングを実現最小二乗法について話します

  スター勢ぞろい科学の歴史、ギャラクシーもし宝石。これらの牛は、基本的には天才ですが、信じられないといくつかのnobodiesがあり、世界は下品な憶測がびっくりしてスーパースターにランク驚愕します。例えば、メンデレーエフ、空白の周期表の全体は、化学者は空欄に記入ん全世界魅了しました。もう一つのドイツの高校教師、明フアンジョンTitius(ヨハン・ティティウス)、そして1766年にこのような一連を書きました:

  (0 + 4)/ 10 = 0.4

  (3 + 4)/ 10 = 0.7

  (6 + 4)/ 10 = 1.0

  (12 + 4)/ 10 = 1.6

  (24 + 4)/ 10 = 2.8

  (48 + 4)/ 10 = 5.2

  (96 + 4)/ 10 = 10.0

  (192 + 4)/ 10 = 19.6

  (384 + 4)/ 10 = 38.8

  ...

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  太陽系で6つの惑星を持つことが知られているその時、人々、すなわち水星、金星、地球、火星、木星、土星。地球日の距離(約1.5億キロ)は、このシリーズのTitiusにちょうど近く天文単位、日から6つの惑星の距離であり、そして魅力を残した場合は!このシリーズはTitiusと呼ばれています - ボーデはそれを与えられました。

  1781年、19.6位置に近い英国、ドイツハーシェル(つまり、シリーズの第八です)天王星は、それ以来、人々はこれが必須であると考えています発見しました。これは、いくつかによると、それは、2.8シリーズの位置は、第五の惑星に対応すべきであるが、見出されていません。その結果、多くの天文学者やアマチュア天文学者は偉大な熱意となり、彼は新しい惑星を発見する旅に乗り出しました。

  1801年新年の夜は、イタリアの司祭ジュゼッペ・ピアッツィはまだ注意深く星を見ています。ボーデ2.8の場所与えられた - 突然、彼はちょうどTitiusは、望遠鏡からの非常に小さな星を発見しました。絶えず位置を変えるの数日間の観察期間中の惑星。Piazziはさらに小惑星を観測考えるとき、彼は病気になりました。彼が回復した場合、それが欠落し、小惑星を探していると思います。Piazzi彼はこれが人々のための惑星が発見されていないかもしれ信じて、この機会をあきらめませんでした。

  天文学者Piazziの発見は、異なるビューを保持します。一部の人々はPiazziは正しかったと思い、何人かの人々は、これは天文学コミュニティの話、言うこと彗星、この惑星上の少数派かもしれないと思います。

  この時点で、大きな神は、彼は数学の天才ガウスた、登場しました。Piazziの観測によると、その優れた数学的能力、唯一の時間をガウスたとえそれがその上空で発生するだろうというときに注目軌道風雲謎の小惑星の形状、。1801年12月31日、ドイツのアマチュア天文学者Olbersの夜は、ガウスは、空の望遠鏡のこの作品に合わせて予測しました。予想通り、風雲謎の小惑星が再び魔法が登場します!

  ジョンTitiusから、父ジュゼッペ・ピアッツィに、数学ガウスの王子、Olbersアマチュア天文学者に、多くの牛が共同でセレスという名前の、このオブジェクトを発見されました。セレスは、ソーラーシステムで最小である小惑星帯に位置する唯一の準惑星です。セレスは、かつての標準として用いた。その大きな惑星よりも何でも、および惑星は同じレベルの惑星として、または小惑星として見ることができます。例えば冥王星は、大きな、古い9つの太陽系よりセレスはわずか9つの惑星のランクから撤退し、準惑星に分類されるように、2006年までは、と呼ばれてきました。

  だから、正確にどのようにガウスセレスの軌道を計算し、それ?実際に最小二乗フィット軌道を使用している予測を行います。1809年に使用されたガウス最小二乗法は、彼の著書「天体運動の理論」を発表しました。

  のは、ガウスは、コスプレに、牛の感覚を体験しないふりをしてみましょう。

  図は、縦軸はセレスに対応する位置を示し、横軸は時間を表し観察赤い点の各々に対応する、0:00〜10個の観測記録でセレスからPiazziを想定しています。マップ上の11観測点の後の曲線は(非常に近い)がある場合は、ちょうどこの曲線の方程式を見つけます:

  Y = F(X)、Y = F(X)

  Y = F(X)

  我々は、11、12を配置して自由セレスを予測することができます。ガウスは、そのように思いました。しかし、この曲線の方程式を見つける方法?この質問は、ガウスを生きることは困難です。彼は、k番目の多項式Gを使用(x)をG(x)をG(x)は(x)は、F(x)は、F(x)は、Fを近似します。

  f(x)が≈g(X)= A0 + A1X + a2x2 + a3x3 + ... + akxk F(X)\約G(X)= A_0 + a_1x + a_2x ^ 2 + a_3x ^ 3 + ... + a_kx ^ K

  f(x)が≈g(X)= A

  0

  ​

  + A

  1

  ​

  X + A

  2

  ​

  バツ

  2

  + A

  3

  ​

  バツ

  3

  + ... + A

  K

  ​

  バツ

  K

  適切な係数a0を選択することで、A1、A2、A3、...、AK A_0、A_1、A_2、A_3、...、a_ka

  0

  ​

  、

  1

  ​

  、

  2

  ​

  、

  3

  ​

  、...、A

  K

  ​

  、そのエラーので:

  損失=Σ10i= 0(G(I)-f(i))を2つの損失= \ sum_ {i = 0} ^ {10}(G(I)-f(I))^ 2

  損失=

  I = 0

  Σ

  10

  ​

  (G(I)-f(I))

  2

  最小は、我々がg(x)はG(x)はG(x)は、我々が探している方程式の曲線であると考えることができます。最小二乗ガウス方法は、観測データに基づき、所定の多項式のk KK誤差は多項式係数a0のセットの最小値を見つけるために、A1、A2、A3、...、AK A_0、A_1、A_2、A_3、.. 。、a_ka

  0

  ​

  、

  1

  ​

  、

  2

  ​

  、

  3

  ​

  、...、A

  K

  ​

  、係数のセットと、((x)をG(x)をG(x)は、次にGを計算する(11)G(11)G(11)、G(12)G(12)G Gを得ること12が可能です)値、あなたはセレスの位置11、12を予測することができるように。

  私たちは、ない最小二乗法ガウスではありませんが、幸いnumpyのは、私たちはガウスのふりをし続けることを可能にする強力なツールを提供してくれます。

  NPとして>>>インポートnumpyの

  >>> _x = np.linspace(0、10、11)

  >>> _y = np.array([ - 0.3、-0.5、-0.2、-0.3、0、0.4、0.2、-0.3、0.2、0.5、0.4])

  >>> np.polyfit(_x、_y、3)

  アレイ([0.00066045、-0.01072261、0.12684538、-0.43146853])

  1

  2

  3

  4

  5

  ここで、_xがPiazziが時系列に観測され、_yはPiazziはセレスの場所の順序を観察している、我々は選択した多項式の次数は3です。np.polyfit行う(XS、YS、3)、4つの係数三次多項式の最小二乗法を見つける三次多項式ように最小の観測データを誤りです。このように書か三次多項式:

  G(X)= - 0.43146853 + 0.12684538x-0.01072261x2 + 0.00066045x3 G(X)= -0.43146853 + 0.12684538x - 0.01072261x ^ 2 + ^ 3 0.00066045x

  G(X)= - 0.43146853 + 0.12684538x-0.01072261x

  2

  + 0.00066045x

  3

  この機能は、観測データを検証するために使用されます。

  >>> G = np.poly1d(np.polyfit(_x、_y、3))

  >>> G(_x)

  アレイ([ - 0.43146853、-0.31468531、-0.21538462、-0.12960373、-0.05337995、

  0.01724942、0.08624709、0.15757576、0.23519814、0.32307692、

  0.42517483])

  >>>損失= np.sum(np.square(G(_x)-_ Y))

  >>>損失

  0.4857342657342658

  PLTとして>>>インポートmatplotlib.pyplot

  >>> plt.plot(_x、_y、C = R ''、LS = ''、マーカーは= 'O')

  >>> plt.plot(_x、G(_x)、C = G ''、LS = ':')

  >>> plt.show()

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  多項式G(x)をG(x)をG(x)の代わりに、Fの(X)(X)ただし、f(x)は、F 3回、最小誤差が0.4857であると。観測データとg(x)をG(x)をG(x)は、絵画データ、以下の結果と近似されます

  明らかに、この効果はフィットセレスが見つかりません。我々はまた、多項式の高い力を試すことができ、心配しないで、それがどのように動作するか参照してください。次のコードは、一方では4-9多項式フィット結果との誤差をプロットしました。

  NPとしてnumpyのインポート

  PLTとしてインポートmatplotlib.pyplot

  plt.rcParams [ 'font.sans-セリフ'] = [ 'FangSong']

  plt.rcParams [ 'axes.unicode_minus'] =偽

  _x = np.linspace(0、10、11)

  _y = np.array([ - 0.3、-0.5、-0.2、-0.3、0、0.4、0.2、-0.3、0.2、0.5、0.4])

  G3 = np.poly1d(np.polyfit(_x、_y、3))

  G4 = np.poly1d(np.polyfit(_x、_y、4))

  G5 = np.poly1d(np.polyfit(_x、_y、5))

  G6 = np.poly1d(np.polyfit(_x、_y、6))

  G7 = np.poly1d(np.polyfit(_x、_y、7))

  G8 = np.poly1d(np.polyfit(_x、_y、8))

  G9 = np.poly1d(np.polyfit(_x、_y、9))

  loss3 = np.sum(np.square(G3(_x)-_ Y))

  loss4 = np.sum(np.square(G4(_x)-_ Y))

  loss5 = np.sum(np.square(G5(_x)-_ Y))

  loss6 = np.sum(np.square(G6(_x)-_ Y))

  loss7 = np.sum(np.square(G7(_x)-_ Y))

  loss8 = np.sum(np.square(G8(_x)-_ Y))

  loss9 = np.sum(np.square(G9(_x)-_ Y))

  plt.plot(_x、_y、C = R ''、LS = ''、マーカーは、= 'O')

  plt.plot(_x、G3(_x)、ラベル= U '三次多項式、誤り%0.4F' %loss3)

  plt.plot(_x、G4(_x)、ラベル= U '四次多項式、誤り%0.4F' %loss4)

  plt.plot(_x、G5(_x)、ラベル= U '五次多項式、誤り%0.4F' %loss5)

  plt.plot(_x、G6(_x)、ラベル= U '6多項式、誤り%0.4F' %のloss6)

  plt.plot(_x、G7(_x)、ラベル= U '7多項式、エラー%0.4F' %のloss7)

  plt.plot(_x、G8(_x)、ラベル= U '8多項式、エラー%0.4F' %のloss8)

  plt.plot(_x、G9(_x)、ラベル= U '9多項式、エラー%0.4F' %のloss9)

  plt.legend()

  plt.show()

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  27

  28

  29

  30

  31

  32

  33

  34

  35

  36

  9エラー多項式フィッティング、0.0010は、ほぼすべての観測点の貫通小さい、正確適合曲線を有するようにすることが分かります。この効果は十分に満足することができます。わずか9多項式フィッティング結果を保持下図は、より明確に見えます。

  まあ、コスプレを超えている。実際の天体の軌道は、天体の位置は、単一の値が出て表現することができないので、倒錯ではないでしょう。上記の例では、純粋に多項式フィッティング。時には、それは問題ではない、図に示されているデータに適合するのが好き、フィッティングの方法は、上記まだ有効です。

  次のようにフィッティングのコードは次のとおりです。

  NPとしてnumpyのインポート

  PLTとしてインポートmatplotlib.pyplot

  plt.rcParams [ 'font.sans-セリフ'] = [ 'FangSong']

  plt.rcParams [ 'axes.unicode_minus'] =偽

  XS = np.linspace(-1、1、11)

  YS = np.array([ - 0.3、-0.5、-0.2、-0.3、0、0.4、0.2、-0.3、0.2、0.5、0.4])

  XM = np.linspace(-1、1、201)

  YM =((XM ** 2-1)** 3 + 0.5)* np.sin(2 * XM)+ np.random.random(201)/ 10から0.1

  FS4 = np.poly1d(np.polyfit(XS、YS、4))

  FS5 = np.poly1d(np.polyfit(XS、YS、5))

  FS6 = np.poly1d(np.polyfit(XS、YS、6))

  FS7 = np.poly1d(np.polyfit(XS、YS、7))

  FS8 = np.poly1d(np.polyfit(XS、YS、8))

  FS9 = np.poly1d(np.polyfit(XS、YS、9))

  FS10 = np.poly1d(np.polyfit(XS、YS、10))

  FM2 = np.poly1d(np.polyfit(XM、YM、2))

  FM3 = np.poly1d(np.polyfit(XM、YM、3))

  FM4 = np.poly1d(np.polyfit(XM、YM、4))

  FM5 = np.poly1d(np.polyfit(XM、YM、5))

  FM6 = np.poly1d(np.polyfit(XM、YM、6))

  FM7 = np.poly1d(np.polyfit(XM、YM、7))

  plt.subplot(211)

  plt.plot(XS、YS、C = R ''、LS = ''、マーカーは= 'O')

  plt.plot(XS、FS4(XS)、ラベル= U '四次多項式')

  plt.plot(XS、FS5(XS)、ラベル= U '五次多項式')

  plt.plot(XS、FS6(XS)、ラベル= U '6多項式')

  plt.plot(XS、FS7(XS)、ラベル= U '多項式7')

  plt.plot(XS、FS8(XS)、ラベル= U '8つの多項式')

  plt.plot(XS、FS9(XS)、ラベル= U '多項式9')

  plt.legend()

  病院の鄭州流れます。http://mobile.zzyyrl.com/

  それは鄭州の病院の良い流れ、次のとおりです。http://mobile.zzyyrl.com/

  plt.subplot(212)

  plt.plot(XM、YM、C = G ''、LS = ''、マーカー= '')

  plt.plot(XM、FM2(XM)、ラベル= U '次多項式')

  plt.plot(XM、FM3(XM)、ラベル= U '三次多項式')

  plt.plot(XM、FM4(XM)、ラベル= U '四次多項式')

  plt.plot(XM、FM5(XM)、ラベル= U '五次多項式')

  plt.plot(XM、FM6(XM)、ラベル= U '6多項式')

  plt.plot(XM、FM7(XM)、ラベル= U '多項式7')

  plt.legend()

  plt.show()

おすすめ

転載: www.cnblogs.com/wode1/p/Daniel.html