有限差分

その名前が示すように、この手法では有限差分を使用してを計算します。 Δ y Δ b MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2Caerbd9MBZ9 gBHnharuavP1wzZbItLDhis9wBH5garmWu51MyVXgaruWqVvNCPvMC G4uz3bqeeuuDJXwAKbsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4 rqqrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9 pg0FirpepeKkFr0xfr=xfr=xb9adbaGaciGadmWaamaaciGaaqqace qbcaGcbaWaaSaaaeaacqqHuoarcaWG5baabaGaeuiLdqKaamOyaaaa aaa@3FD6@

最初に、 b MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2Caerbd9MBZ9 gBHnharuavP1wzZbItLDhis9wBH5garmWu51MyVXgaruWqVvNCPvMC G4uz3bqeeuuDJXwAKbsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4 rqqrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9 pg0FirpepeKkFr0xfr=xfr=xb9adbaGaciGadmWaamaaciGaaqqace qbcaGcbaGaamOyaaaa@3BFC@ の変化分、 Δ b MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2Caerbd9MBZ9 gBHnharuavP1wzZbItLDhis9wBH5garmWu51MyVXgaruWqVvNCPvMC G4uz3bqeeuuDJXwAKbsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4 rqqrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9 pg0FirpepeKkFr0xfr=xfr=xb9adbaGaciGadmWaamaaciGaaqqace qbcaGcbaGaeuiLdqKaamOyaaaa@3D62@ が選択されます。次に、出力の変化分 Δ y Δ b MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2Caerbd9MBZ9 gBHnharuavP1wzZbItLDhis9wBH5garmWu51MyVXgaruWqVvNCPvMC G4uz3bqeeuuDJXwAKbsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4 rqqrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9 pg0FirpepeKkFr0xfr=xfr=xb9adbaGaciGadmWaamaaciGaaqqace qbcaGcbaWaaSaaaeaacqqHuoarcaWG5baabaGaeuiLdqKaamOyaaaa aaa@3FD6@ が次のように計算されます。(1)
Δ y Δ b     y ( x ( b + Δ b ) , x ˙ ( b + Δ b ) , b + Δ b ) y ( x ( b ) , x ˙ ( b ) , b ) Δ b MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2Caerbd9MBZ9 gBHnharuavP1wzZbItLDhis9wBH5garmWu51MyVXgaruWqVvNCPvMC G4uz3bqeeuuDJXwAKbsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4 rqqrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9 pg0FirpepeKkFr0xfr=xfr=xb9adbaGaciGadmWaamaaciGaaqqace qbcaGcbaWaaSaaaeaacqqHuoarcaWG5baabaGaeuiLdqKaamOyaaaa caqGGaGaeyisISRaaeiiamaalaaabaGaamyEamaabmaabaGaamiEam aabmaabaGaamOyaiabgUcaRiabfs5aejaadkgaaiaawIcacaGLPaaa caGGSaGabmiEayaacaWaaeWaaeaacaWGIbGaey4kaSIaeuiLdqKaam OyaaGaayjkaiaawMcaaiaacYcacaWGIbGaey4kaSIaeuiLdqKaamOy aaGaayjkaiaawMcaaiabgkHiTiaadMhadaqadaqaaiaadIhadaqada qaaiaadkgaaiaawIcacaGLPaaacaGGSaGabmiEayaacaWaaeWaaeaa caWGIbaacaGLOaGaayzkaaGaaiilaiaadkgaaiaawIcacaGLPaaaae aacqqHuoarcaWGIbaaaaaa@6706@

この手法は多大な処理を要するため、通常は小規模な設計感度解析(変数が20個以下)で使用します。Nb個の設計変数があるシステムの場合、この手法では、 2 ( N b + 1 ) MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2Caerbd9MBZ9 gBHnharuavP1wzZbItLDhis9wBH5garmqr1ngBPrgitLxBI9gBaerb d9wDYLwzYbItLDharqqr1ngBPrgifHhDYfgasaacH8srps0lbbf9q8 WrFfeuY=Hhbbf9v8qqaqFr0xc9pk0xbba9q8WqFfea0=yr0RYxir=J bba9q8aq0=yq=He9q8qqQ8frFve9Fve9Ff0dmeaacaGacmWadaWaai GacaabbiqafiaakeaacaaIYaGaaiikaabbaaaaaaaaIXwyJTgapeGa amOta8aadaWgaaWcbaWdbiaadkgaa8aabeaak8qacqGHRaWkcaaIXa WdaiaacMcaaaa@4599@ 回のシミュレーションが必要です。 y ( x ( b + Δ b ) , x ˙ ( b + Δ b ) , b + Δ b )  and  y ( x ( b ) , x ˙ ( b ) , b ) MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2Caerbd9MBZ9 gBHnharuavP1wzZbItLDhis9wBH5garmWu51MyVXgaruWqVvNCPvMC G4uz3bqeeuuDJXwAKbsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4 rqqrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9 pg0FirpepeKkFr0xfr=xfr=xb9adbaGaciGadmWaamaaciGaaqqace qbcaGcbaGaamyEamaabmaabaGaamiEamaabmaabaGaamOyaiabgUca Riabfs5aejaadkgaaiaawIcacaGLPaaacaGGSaGabmiEayaacaWaae WaaeaacaWGIbGaey4kaSIaeuiLdqKaamOyaaGaayjkaiaawMcaaiaa cYcacaWGIbGaey4kaSIaeuiLdqKaamOyaaGaayjkaiaawMcaaiaabc cacaqGHbGaaeOBaiaabsgacaqGGaGaamyEamaabmaabaGaamiEamaa bmaabaGaamOyaaGaayjkaiaawMcaaiaacYcaceWG4bGbaiaadaqada qaaiaadkgaaiaawIcacaGLPaaacaGGSaGaamOyaaGaayjkaiaawMca aaaa@6006@ を計算するために、2回のシミュレーションが必要です。 y ( x ( b + Δ b ) , x ˙ ( b + Δ b ) , b + Δ b )  and  y ( x ( b ) , x ˙ ( b ) , b ) MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2Caerbd9MBZ9 gBHnharuavP1wzZbItLDhis9wBH5garmWu51MyVXgaruWqVvNCPvMC G4uz3bqeeuuDJXwAKbsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4 rqqrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9 pg0FirpepeKkFr0xfr=xfr=xb9adbaGaciGadmWaamaaciGaaqqace qbcaGcbaGaamyEamaabmaabaGaamiEamaabmaabaGaamOyaiabgUca Riabfs5aejaadkgaaiaawIcacaGLPaaacaGGSaGabmiEayaacaWaae WaaeaacaWGIbGaey4kaSIaeuiLdqKaamOyaaGaayjkaiaawMcaaiaa cYcacaWGIbGaey4kaSIaeuiLdqKaamOyaaGaayjkaiaawMcaaiaabc cacaqGHbGaaeOBaiaabsgacaqGGaGaamyEamaabmaabaGaamiEamaa bmaabaGaamOyaaGaayjkaiaawMcaaiaacYcaceWG4bGbaiaadaqada qaaiaadkgaaiaawIcacaGLPaaacaGGSaGaamOyaaGaayjkaiaawMca aaaa@6006@ , k = 1... N b MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2Caerbd9MBZ9 gBHnharuavP1wzZbItLDhis9wBH5garmWu51MyVXgaruWqVvNCPvMC G4uz3bqeeuuDJXwAKbsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4 rqqrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9 pg0FirpepeKkFr0xfr=xfr=xb9adbaGaciGadmWaamaaciGaaqqace qbcaGcbaGaaiilaiaadUgacqGH9aqpcaaIXaGaaiOlaiaac6cacaGG UaGaamOtamaaBaaaleaacaWGIbaabeaaaaa@4272@ を計算するために、Nb +1回のシミュレーションが必要です。言い換えると、設計変数ごとに1回、現在の設計に1回のシミュレーションが必要です。

MotionSolveでは、有限差分の使用時に、感度マトリックス [ Δ y Δ b ] MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2Caerbd9MBZ9 gBHnharuavP1wzZbItLDhis9wBH5garmWu51MyVXgaruWqVvNCPvMC G4uz3bqeeuuDJXwAKbsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4 rqqrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9 pg0FirpepeKkFr0xfr=xfr=xb9adbaGaciGadmWaamaaciGaaqqace qbcaGcbaWaamWaaeaadaWcaaqaaiabfs5aejaadMhaaeaacqqHuoar caWGIbaaaaGaay5waiaaw2faaaaa@41C8@ を計算する手段として並列処理を選択できます。並列手法の使用法の詳細については、次の例をご参照ください。

有限差分における主な課題は、適切な Δ b MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2Caerbd9MBZ9 gBHnharuavP1wzZbItLDhis9wBH5garmWu51MyVXgaruWqVvNCPvMC G4uz3bqeeuuDJXwAKbsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4 rqqrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9 pg0FirpepeKkFr0xfr=xfr=xb9adbaGaciGadmWaamaaciGaaqqace qbcaGcbaGaeuiLdqKaamOyaaaa@3D62@ を選択することです。この値が小さすぎると、解における数値エラーにまぎれて感度が失われます。これらの値が大きすぎると、解の非線形性が見落とされます。どちらの場合も、感度に著しい誤差が伴う可能性があります。摂動 Δ b MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2Caerbd9MBZ9 gBHnharuavP1wzZbItLDhis9wBH5garmWu51MyVXgaruWqVvNCPvMC G4uz3bqeeuuDJXwAKbsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4 rqqrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9 pg0FirpepeKkFr0xfr=xfr=xb9adbaGaciGadmWaamaaciGaaqqace qbcaGcbaGaeuiLdqKaamOyaaaa@3D62@ も、システムの規模と単位に依存します。MotionSolveでは、 Δ b MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2Caerbd9MBZ9 gBHnharuavP1wzZbItLDhis9wBH5garmWu51MyVXgaruWqVvNCPvMC G4uz3bqeeuuDJXwAKbsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4 rqqrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9 pg0FirpepeKkFr0xfr=xfr=xb9adbaGaciGadmWaamaaciGaaqqace qbcaGcbaGaeuiLdqKaamOyaaaa@3D62@ は次の式で計算されます。(2)
Δ b = Optimizer .fd_step × max ( 1 , b ) MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaeuiLdqKaam Oyaiabg2da9iaab+eacaqGWbGaaeiDaiaabMgacaqGTbGaaeyAaiaa bQhacaqGLbGaaeOCaiaab6cacaqGMbGaaeizaiaab+facaqGZbGaae iDaiaabwgacaqGWbGaey41aqRaaeyBaiaabggacaqG4bWaaeWaaeaa caaIXaGaaiilaiaadkgaaiaawIcacaGLPaaaaaa@5194@

このため、Optimizer.fd_stepに別の値を指定することで摂動ステップを変更できます。要約すると、有限差分は小規模な問題にのみ適用可能であり、摂動 Δ b MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2Caerbd9MBZ9 gBHnharuavP1wzZbItLDhis9wBH5garmWu51MyVXgaruWqVvNCPvMC G4uz3bqeeuuDJXwAKbsr4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4 rqqrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9 pg0FirpepeKkFr0xfr=xfr=xb9adbaGaciGadmWaamaaciGaaqqace qbcaGcbaGaeuiLdqKaamOyaaaa@3D62@ に指定する必要がある値の解決が困難な問題も存在します。