JP5692739B2 - 常微分方程式を解くための方法、プログラム及びシステム - Google Patents

常微分方程式を解くための方法、プログラム及びシステム Download PDF

Info

Publication number
JP5692739B2
JP5692739B2 JP2010054251A JP2010054251A JP5692739B2 JP 5692739 B2 JP5692739 B2 JP 5692739B2 JP 2010054251 A JP2010054251 A JP 2010054251A JP 2010054251 A JP2010054251 A JP 2010054251A JP 5692739 B2 JP5692739 B2 JP 5692739B2
Authority
JP
Japan
Prior art keywords
ordinary differential
value
predetermined threshold
differential equation
differential equations
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010054251A
Other languages
English (en)
Other versions
JP2011186991A (ja
Inventor
アルキメデス・カネド
吉澤 武朗
武朗 吉澤
小松 秀昭
秀昭 小松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2010054251A priority Critical patent/JP5692739B2/ja
Priority to US13/045,866 priority patent/US20110225225A1/en
Publication of JP2011186991A publication Critical patent/JP2011186991A/ja
Application granted granted Critical
Publication of JP5692739B2 publication Critical patent/JP5692739B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • G06F17/13Differential equations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Operations Research (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Complex Calculations (AREA)

Description

この発明は、コンピュータを利用したシミュレーション・システム等において使用される常微分方程式を解くための方法、プログラム及びシステムに関し、特に、常微分方程式を解くための計算を高速化し、あるいは計算量を減らすための技法に関するものである。
従来より、科学技術計算、シミュレーションなどの分野で、コンピュータが利用されている。
最近になって特に盛んに開発されるようになってきたシミュレーションの分野として、ロボット、自動車、飛行機などのメトカトロニクスのプラントのシミュレーション用ソフトウェアがある。電子部品とソフトウェア技術に発展の恩恵により、ロボット、自動車、飛行機などでは、神経のように張り巡らされたワイヤ結線や無線LANなどを利用して、大部分の制御が電子的に行われる。
それらは、本来的には機械的装置であるのに、大量の制御ソフトウェアをも内蔵している。そのため、製品の開発に当たっては、制御プログラムの開発とそのテストに、長い時間と、膨大な費用と、多数の人員を費やす必要が出てきた。
このようなテストにために従来行われている技法として、HILS(Hardware In the Loop Simulation)がある。特に、自動車全体の電子制御ユニット(ECU)をテストする環境は、フルビークルHILSと呼ばれる。フルビークルHILSにおいては、実験室内で、本物のECUが、エンジン、トランスミッション機構などをエミュレーションする専用のハードウェア装置に接続され、所定のシナリオに従って、テストが行われる。ECUからの出力は、監視用のコンピュータに入力され、さらにはディスプレイに表示されて、テスト担当者がディスプレイを眺めながら、異常動作がないかどうか、チェックする。
そこで近年、高価なエミュレーション用ハードウェア装置を使うことなく、ソフトウェアで構成する手法が提案されている。この手法は、SILS(Software In the Loop Simulation)と呼ばれ、ECUに搭載されるマイクロコンピュータ、入出力回路、制御のシナリオ、エンジンやトランスミッションなどのプラントを全て、ソフトウェア・シミュレータで構成する技法である。これによれば、ECUのハードウェアが存在しなくても、テストを実行可能である。
このようなSILSの構築を支援するシステムとして例えば、MathWorks社から入手可能なシミュレーション・モデリング・システムである、MATLAB(R)/Simulink(R)がある。MATLAB(R)/Simulink(R)を使用すると、図1に示すように、画面上にグラフィカル・インターフェースによって、矩形で示す機能ブロックを配置し、矢印のようにその処理の流れを指定することによって、シミュレーション・プログラムを作成することができる。これらのブロック線図は、シミュレーションの1タイムステップ分の処理を表しており、これが所定回繰り返されることにより、シミュレーション対象となるシステムの時系列における振る舞いを得ることができる。こうして、MATLAB(R)/Simulink(R)上で、機能ブロックなどのブロック線図が作成されると、Real-Time Workshop(R)の機能により、等価な機能のC言語など既知のコンピュータ言語のソース・コードに変換することができる。このC言語のソース・コードをコンパイルすることにより、別のコンピュータ・システムで、SILSとして、シミュレーションを実行することができる。
そこで、図2に示すように、機能ブロックを、A、B、C及びDのように、機能ブロックの複数の集合に分け、それらをCPUによって計算する技法が従来より実施されている。
このようにして、機能ブロックの個々の集合毎のコードをコンパイルして実行可能コードを生成し、プロセッサ上で実行させることができる。
そのような実行コードを、コンピュータ・システムの上で走らせて、シミュレーションの結果を得るということは、多くの場合、コンピュータ・システムに、微分方程式を解かせることに帰着される。特に、自動車やロボットなどのメトカトロニクスと呼ばれるシステムでは、解くべき微分方程式は、電気回路の応答システム、電子回路のフィードバック制御システム、機械的な力学方程式など、常微分方程式で記述され、従って、シミュレーションの結果を得るためには、コンピュータ・システムによって、連立常微分方程式を解く必要がある。そのような連立常微分方程式は、次のように定式化される。
y'(t) = f(t,y(t))
但しここで、tは時間、y'(t)は時間tに関する一階微分であり、
yとfは一般的にはn次元ベクトルであり、
y(t) ≡ (y[1](t), y[2](t), ..., y[N](t))T
f(t,y(t)) ≡ (f[1](t,y(t)), f[2](t,y(t)), ...,f[N](t,y(t)))T
これは、y, f ∈ RNとも書かれる。
すなわち、並べて書くと、
y'[1](t) = f[1](t,y(t))
y'[2](t) = f[2](t,y(t))
y'[3](t) = f[3](t,y(t))
...
y'[N](t) = f[N](t,y(t))
という連立常微分方程式になる。
典型的には、上記の1つの機能ブロックの集合に対するコードがそれぞれ、y'[i](t) = f[i](t,y(t)) (但し、i = 1,...,N)という1つの式の右辺に対応する。この明細書では、その計算処理の単位をストランドと呼ぶことにする。
より高速なシミュレーションを達成するために、使用するコンピュータとして高性能のものを用いるだけではなく、より合理的な計算量の計算アルゴリズムを使用するという要望が強い。
これに関して、コンピュータ上の数値計算により近似的に常微分方程式を解くためのアルゴリズムとして、ルンゲ・クッタ(Runge-Kutta)法が知られている。これは、1900年に考案されたものであり、計算のステップは固定であり、応用例によっては、計算精度の点で、十分でない場合があった。
その後、計算精度と計算速度の両立のため、1960年代に、適応的に可変ステップを用いるルンゲ・クッタ・フェールベルク(Runge-Kutta-Fehlberg)法が考案された。ここでは、説明の便宜上、y'(t) = f(t,y(t))を1変数の場合に見立てて、ルンゲ・クッタ・フェールベルク法を説明する。すなわち、ここでは、y(t)も、f(t,y(t))もスカラーである。
ルンゲ・クッタ・フェールベルク法のうち、特に、例として、ODE45として知られているスキームについて説明する。ここで、ODEとは、ordinary differential equation = 常微分方程式の略である。
xnを時間、
ki(但し、i = 1,...,6)を中間変数、
hをステップ・サイズ(但し、これは定数でなく変数)、
ai, bij, ci,c* i (ここで、i,jは添字)を所定の定数とすると、
k1 = hf(xn,yn)
k2 = hf(xn+a2h,yn+b21k1)
k3 = hf(xn+a3h,yn+b31k1+b32k2)
k4 = hf(xn+a4h,yn+b41k1+b42k2+b43k3)
k5 = hf(xn+a5h,yn+b51k1+b52k2+b53k3+b54k4)
k6 = hf(xn+a6h,yn+b61k1+b62k2+b63k3+b64k4+b65k5)
Figure 0005692739
ルンゲ・クッタ・フェールベルク法においては、計算精度を所望以内に保つために、上記のようにして計算された誤差Δが、所定の閾値Δ0の範囲内かどうかが判断され、もしそうなら、上記の式により、ステップh0が計算され、それが次のループのステップとなる。
もし、上記のようにして計算された誤差Δが、所定の閾値Δ0の範囲を超えると、ルンゲ・クッタ・フェールベルク法においては、エラーと見なして、もともと使用されたステップhよりも小さいステップに変えて、計算がやり直される。
ところが、y'(t) = f(t,y(t))、y, f ∈ Rnという連立常微分方程式においては、y(t)は実は、y[1](t), y[2](t), ..., y[n](t)を含むため、例えば、y'[i](t) = f[i](t,y(t)) (iは、1からnまでの間のある数)でのみ上記のエラーが生じたとしても、y'(t) = f(t,y(t))、y, f ∈ RN全体の計算のやり直しが必要となる。このようなy'(t) = f(t,y(t))全体の計算のやり直しは、やり直しが多く発生する場合や、全体の計算量が大きい場合には、とても大きいオーバーヘッドとなる。
特開平5−334337号公報は、常微分方程式の並列処理方式において、マルチプロセッサ環境下で、異なる初期刻み幅を複数プロセッサの各々に割付け、数値積分部で近似値を求め、局所的誤差計算部で局所的誤差を、許容誤差計算部で許容誤差を求め、この二つの誤差の関係から、刻み幅調節部で各プロセッサの刻み幅を調節すると共に、評価装置では複数プロセッサで処理された刻み幅の最大値を選択して各プロセッサに再設定することを開示する。
W. H. Enright, K. R. Jackson, S. P. Norsett, P. G. Thomsen, "Interpolants for Runge-Kutta formulas" ACM Transactions on Mathematical Software, Volume 12, Issue 3 (September 1986) は、ルンゲ・クッタ法及び、ルンゲ・クッタ・フェールベルク法における補間式を構成する方法について記述する。
特開平5−334337号公報
W. H. Enright, K. R. Jackson, S. P. Norsett, P. G. Thomsen, "Interpolants for Runge-Kutta formulas" ACM Transactions on Mathematical Software, Volume 12, Issue 3 (September 1986)
上記従来技術は、コンピュータによる常微分方程式の計算における、刻み量あるいは補間量の計算技法については記述するものの、ルンゲ・クッタ法または、ルンゲ・クッタ・フェールベルク法等に従い、連立常微分方程式を解く際の計算量の低減技法については、示唆するものではない。
従って、本発明の目的は、シミュレーション・システムなどで使用される連立常微分方程式をコンピュータで解く計算処理において、計算量を低減する技法を提供することにある。
本発明は、上記課題を解決するためになされたものであり、以下に記述する処理によって、コンピュータによる連立常微分方程式の計算量を低減させる。
本発明は、上記背景技術で述べた、ルンゲ・クッタ・フェールベルク法などの埋め込み型ルンゲ・クッタ法を用いた、コンピュータによる常微分方程式の数値解法を前提とする。すなわち、連立常微分方程式の個々の常微分方程式を解く際に、次数N(Nは所定の整数)の計算項と、次数N+1の計算項の差Δを計算して、その差が所定の閾値Δ0よりも小さいかどうか判断し、もしΔ =< Δ0であるなら、Δ0/Δで決まる所定の計算式に従い、ステップ・サイズを決定して、次の計算に進む。ここまでは、従来のルンゲ・クッタ・フェールベルク法による連立常微分方程式の計算方法と同じである。
ところが、次数Nの計算項と、次数N+1の計算項の差Δが閾値Δ0よりも大きい場合に、本発明の計算処理は異なる。すなわち、従来技術では、連立常微分方程式を構成する常微分方程式のうちの1つでもエラーになると、ステップを戻って、ステップ・サイズを減らし、連立常微分方程式全体の計算をやり直す必要があった。
しかし、本発明においては、連立常微分方程式を構成する常微分方程式のうち、Δ > Δ0となったエラーを生じた常微分方程式を計算するストランドに再計算が命じられる。再計算のため、エラーを生じたストランドには、Δ0/Δで決まるステップサイズがセットされ、その分だけ時間ステップが先に進む。そこから更に、再計算を行っていない他のストランドのステップに追いつくまで時間ステップを進めるためには、再計算を行っているストランドに関連する他のストランドの計算結果の、当該ステップ開始時点での値が必要となる。この値は、再計算を行っていない他のストランドの計算を再実行するのではなく、他のストランドの前回ステップにおける値と、最終ステップにおける値との補間値として計算される。
そのような常微分方程式の補間値の好適な計算アルゴリズムは、上述のW. H. Enright, K. R. Jackson, S. P. Norsett, P. G. Thomsen, "Interpolants for Runge-Kutta formulas" ACM Transactions on Mathematical Software, Volume 12, Issue 3 (September 1986)に記述されている。しかし、本発明で利用可能な補間値の計算アルゴリズムは、これには限定されず、所望の精度を満たす任意の補間値の計算アルゴリズムを使用することができる。
補間値で以って再計算することにより、エラーを生じた常微分方程式を計算するストランドにおいて、エラーを所定の閾値Δ0よりも小さく保ちながら、エラーが十分少なかった他のストランドと足並みが揃うように、時間ステップを進める。その後、連立常微分方程式全体の計算が進められる。
この発明によれば、コンピュータによる、ルンゲ・クッタ・フェールベルク法などの埋め込み型ルンゲ・クッタ法に従う連立常微分方程式を計算する際に、閾値よりも大きい誤差を生じたストランドのみ再計算すればよくなるので、計算量が減り、処理を高速化することが可能となる。
機能ブロックの例を示す図である。 機能ブロックのストランド作成の例を示す図である。 ハードウェア構成を示すブロック図である。 論理構成の機能ブロック図である。 連立常微分方程式を並列処理で計算するステップを示す概要フローチャートである。 ODE45のスキームに本発明を適用した処理で常微分方程式を解く処理を示すフローチャートである。 連立常微分方程式を並列処理で計算する際の、補間値のタイミングを示す図である。
以下、図面を参照して、本発明の一実施例の構成及び処理を説明する。以下の記述では、特に断わらない限り、図面に亘って、同一の要素は同一の符号で参照されるものとする。なお、ここで説明する構成と処理は、一実施例として説明するものであり、本発明の技術的範囲をこの実施例に限定して解釈する意図はないことを理解されたい。
図3を参照すると、本発明の一実施例に係るシステム構成及び処理を実現するためのコンピュータ・ハードウェアのブロック図が示されている。図1において、システム・バス302には、CPU304と、主記憶(RAM)306と、ハードディスク・ドライブ(HDD)308と、キーボード310と、マウス312と、ディスプレイ314が接続されている。CPU304は、好適には、32ビットまたは64ビットのアーキテクチャに基づくものであり、例えば、インテル社のPentium(商標)4、インテル社のCore(商標) 2 DUO、AMD社のAthlon(商標)などを使用することができる。主記憶306は、好適には、1GB以上の容量、より好ましくは、2GB以上の容量をもつものである。
ハードディスク・ドライブ308には、オペレーティング・システムが、格納されている。オペレーティング・システムは、Linux(商標)、マイクロソフト社のWindows 7、Windows XP(商標)、Windows(商標)2000、アップルコンピュータのMac OS(商標)などの、CPU304に適合する任意のものでよい。
ハードティスク・ドライブ308にはさらに、MATLAB(R)/Simulink(R)、Cコンパイラまたは、C++コンパイラ、後述する本発明に係る解析、ストランド作成のためのモジュール、CPU割り当て用コード生成モジュールなどが格納されており、オペレータのキーボードやマウス操作に応答して、メイン・メモリ306にロードされて実行される。
尚、使用可能なシミュレーション・モデリング・ツールは、MATLAB(R)/Simulink(R)に限定されず、オープンソースのScilab/Scicosなど任意のシミュレーション・モデリング・ツールを使用することが可能である。
あるいは、場合によっては、シミュレーション・モデリング・ツールを使わず、直接、C、C++などでシミュレーション・システムのソース・コードを書くことも可能であり、その場合にも、個々の機能の少なくとも一部が、常微分方程式の計算として記述できるなら、本発明は適用可能である。
キーボード110及びマウス112は、オペレーティング・システムが提供するグラフィック・ユーザ・インターフェースに従い、シミュレーションを開始したり、所定の式のパラメータを提供するために使用される。
ディスプレイ314は、連立常微分方程式の解としてのシミュレーションの挙動を、適宜表示するために使用される。
図4は、本発明の実施例に係る一実施例の機能ブロック図である。各々のブロックは、基本的に、ハードティスク・ドライブ308に格納されている。
図4において、シミュレーション・モデリング・ツール402は、MATLAB(R)/Simulink(R)、Scilab/Scicosなどの既存の任意のモデリング・ツールを使用することができる。シミュレーション・モデリング・ツール402は、基本的には、オペレータが、ディスプレイ314上でGUI的に機能ブロックを配置し、数式など必要な属性を記述し、必要に応じて、機能ブロック間を関連付けてブロック線図を記述することを可能ならしめるような機能をもつ。シミュレーション・モデリング・ツール402はさらに、記述されたブロック線図に等価な機能を記述するCのソースコードを出力する機能をもつ。C以外にも、C++、FORTRANなどを使用することができる。特に、MDLファイルは、Simulink(R)独自のフォーマットであり、機能ブロック間の依存関係を記述するために、MDLファイルを生成することができる。
なお、シミュレーション・モデリング・ツールは、別のパーソナル・コンピュータに導入して、そこで生成されたソース・コードを、ネットワークなどを経由して、ハードティスク・ドライブ316にダウンロードするようにすることもできる。
こうして出力されたソース・コード404は、ハードティスク・ドライブ308に保存される。なお、ソース・コード404以外に、機能ブロック間の依存関係を記述するためのMDLファイルを保存してもよい。
解析モジュール406は、ソースコード404を入力して構文解析し、ブロックのつながりを、グラフ表現に変換する。グラフ表現のデータは、好適には、ハードディスク・ドライブ316に格納される。なお、コンピュータ上のグラフ表現のデータ構造は周知であるので、ここでは説明を省略する。
ストランド作成モジュール408は、解析モジュール406によって作成されたグラフ表現を読み取って、これには限定しないが、次のような方法で、各積分ブロックごとにストランドを構成する。すなわち、ブロック線図中の各積分ブロックごとに、その積分ブロックからフローの順方向に辿って、再び(自身および他の)積分ブロックが辿られるまでの全てのブロックの集合を見つけ、そのブロックの集合を一つのストランドとする。この操作は、ブロック線図から各常微分方程式を取り出すことに相当する。
コード生成モジュール410は、ストランド作成モジュール408が生成したストランドの情報に基づき、コンパイラ412がコンパイルするためのソースコードを生成する。コンパイラ412が想定するプログラミング言語としては、好適にはC、C++、C#、Java(商標)などの任意のプログラミング言語を使用することができ、コード生成モジュール410はそれに対応して、ストランド毎に、ソースコードを生成することになる。
コンパイラ412が生成した実行可能バイナリ・コード(図示しない)は、ストランド毎に、オペレーティング・システムの作用により、実行環境414で実行される。
本発明においては、シミュレーションの処理全体は、下記のような、N個の常微分方程式からなる、連立常微分方程式として記述される。
y'(t) = f(t,y(t)) y, f ∈ RN
但しここで、tは時間、y'(t)は時間tに関する一階微分であり、
yとfは一般的にはn次元ベクトルであり、
y(t) ≡ (y[1](t), y[2](t), ..., y[N](t))T
f(t,y(t)) ≡ (f[1](t,y(t)), f[2](t,y(t)), ...,f[N](t,y(t)))T
並べて書くと、
y'[1](t) = f[1](t,y(t))
y'[2](t) = f[2](t,y(t))
y'[3](t) = f[3](t,y(t))
...
y'[N](t) = f[N](t,y(t))
という連立常微分方程式になる。
典型的には、上記の1つのストランドが、y'[i](t) = f[i](t,y(t)) (但し、i = 1,...,N)という1つの式の右辺に対応する。
すなわち、個々のストランドが、連立常微分方程式のうちの1つの常微分方程式である、y'[i](t) = f[i](t,y(t))に関する右辺の数値計算を実行する処理を行う。
なお、シミュレーションの基礎となる制御理論によれば、制御系の特性方程式や応答関数は、ラプラス変換のパラメータsで記述され、これらは多くの場合常微分方程式に帰着されるので、シミュレーション・モデルを連立常微分方程式で記述するというこの実施例の前提は、十分に一般性を有すると言える。
図5は、実行環境414で、コンパイラ412によって生成された実行可能モジュール(図示しない)が、連立常微分方程式を解くための数値計算を実行する処理を示す概要フローチャートである。
図5の処理を実行するために、この実施例によれば、ストランドに対応する個々の常微分方程式を解くための個別のコード以外に、全体の処理を統合する実行コード(図示しない)が生成される。
図5のステップ502において、管理用の実行コードは、y'(t) = f(t,y(t)) y, f ∈ RNという連立常微分方程式における、t=t0での初期値y(t0)を与える。これは実際は、実行させるシミュレーションに応じて、オペレータが事前にセットしておくものである。
ステップ504では、管理用の実行コードは、個々のストランドの常微分方程式を解くストランド506_1、506_2、506_3、・・・、506_Nを一斉にスタートさせ、並列に動作させる。
起動されると、ストランド506_1、506_2、506_3、・・・、506_Nは各々、本発明の特徴を含むODE45のスキームにより、常微分方程式を解く計算を行う。各々のストランド506_1、506_2、506_3、・・・、506_Nの処理の詳細は、図6のフローチャートで詳しく説明する。
管理用の実行コードは、ステップ508で、ストランド506_1、506_2、506_3、・・・、506_Nが全て終了するのを待つ。というのは、ストランド506_1、506_2、506_3、・・・、506_Nは、計算量が同等とは限らず、また、本発明の特徴によれば、ストランド506_1、506_2、506_3、・・・、506_Nのどのストランドも、エラーが検出されたことに応答して再計算を行うことがあるので、その分、遅延する可能性があるからである。
管理用の実行コードは、ステップ508で、ストランド506_1、506_2、506_3、・・・、506_Nの1ステップ分の計算ステップが終了したのを確認すると、ステップ510で、シミュレーションの終了かどうかの判断を行う。
シミュレーションの終了は、オペレータの操作、予定したシナリオの終了、または予定時間経過などによって決定される。管理用の実行コードは、シミュレーションの終了でないと判断すると、ステップ504に戻り、次のステップの計算に進む。もしシミュレーションの終了であるなら、管理用の実行コードは、シミュレーションを終了させる。
次に、図6のフローチャートを参照して、ストランド506_1、506_2、506_3、・・・、506_Nで個々に実行される計算処理について説明する。
背景技術でも説明したが、この実施例では、ルンゲ・クッタ・フェールベルク法において、ODE45のスキームで、連立常微分方程式をコンピュータによる数値計算により解くものとする。なお、本発明は、ルンゲ・クッタ・フェールベルク法の特定の次数に限定されず、ODE34、ODE56などのその他のスキームも使用可能である。なお、ルンゲ・クッタ・フェールベルク法のより詳しい説明は、Ward Cheney, David Kincaid, "Numerical Mathematics and Computing", Brooks/Cole Pub Co; 6版 (2007/8/3) などを参照されたい。
ステップ602では、図5のステップ502で設定された初期値が、この特定のストランドに対応する常微分方程式の処理条件としてセットされる。
ステップ604では、シミュレーションの終了かどうかが判断され、もしそうなら、シミュレーションは終了される。ステップ604は実質的に、図5のステップ510と同一であるかまたは、連動する。
シミュレーションの終了でないと判断されると、ステップ606に進み、ODE45のスキームに従い、計算が行われる。その具体的計算は次のとおりである。但し、ここでは、j番目のストランドに関連する、常微分方程式y'[j](t) = f[j](t,y(t))に着目するものとする。
ここでは、x0 = xnとして、処理を開始する。
xnを時間、
ki(但し、i = 1,...,6)を中間変数、
hをステップ・サイズ(但し、これは定数でなく変数)、
ai, bij, ci,c* i (ここで、i,jは添字)を所定の定数とすると、
k1 = hf[j](xn,yn)
k2 = hf[j](xn+a2h,yn+b21k1)
k3 = hf[j](xn+a3h,yn+b31k1+b32k2)
k4 = hf[j](xn+a4h,yn+b41k1+b42k2+b43k3)
k5 = hf[j](xn+a5h,yn+b51k1+b52k2+b53k3+b54k4)
k6 = hf[j](xn+a6h,yn+b61k1+b62k2+b63k3+b64k4+b65k5)
Figure 0005692739
ステップ608では、次の式により誤差Δが計算される。
Figure 0005692739
ステップ610では、計算した誤差Δが、予め定めた閾値Δ0より大きいかどうか、判断される。
ステップ610で、Δ > Δ0なら、ステップ612で、次の式により、hpを計算する。ただし、計算されたhpとx0を加えた値がxn+1を超える場合には、x0 + hp = xn+1とする。
Figure 0005692739
次に、ステップ614では、次の式に従い、i = 1, .., Nの5次エルミート補間値U[i]が計算される。
Figure 0005692739

但し、
Figure 0005692739
ここで、f[i] lは、次の式であらわされる。
Figure 0005692739
さらに、
Figure 0005692739
ところで、k1〜k6の右辺にあらわれるynは実際は、
yn ≡ yn(y[1],y[2],...,y[N])のように、
y[1],y[2],...,y[N]の関数である。
そこで、数5で決定される補間式U[i](xn+hp)を、y[i]に置き換えて(但し、i = 1, ,,,, Nの各々に亘る)、ステップ616では、x0+hpから出発して、ステップ606と同様のODE45の計算が行われる。なお、補間式U[i](xn+hp)のより詳しい説明については、前述のW. H. Enright, K. R. Jackson, S. P. Norsett, P. G. Thomsen, "Interpolants for Runge-Kutta formulas" ACM Transactions on Mathematical Software, Volume 12, Issue 3 (September 1986)などを参照されたい。
エラーを生じたストランドjは、対応するストランドi(但し、i = 1, ,,,, Nで、jは除く)にxn+hpを渡し、ストランドiが補間式U[i](xn+hp)を計算して、その値を、ストランドjに送り返してくるという処理により、ストランドjは、U[i](xn+hp)(但し、i = 1, ,,,, N)の値を集める。この処理は、図7に関連して、後で説明する。
ステップ618では、ステップ608と同様の処理で誤差が計算され、ステップ620では、ステップ610と同様の処理で、誤差と閾値が比較され、誤差が閾値より大きいと判断されると、ステップ612に戻る。
ステップ620で、誤差が閾値より小さいか閾値と等しいと判断されると、ステップ622に進む。
ステップ622では、x0+hp < xn+1かどうかが判断され、そうであれれば、ステップ612に戻って、hpが再計算され、その再計算されたhpに基づき、ステップ614で補間値Uが計算され、ステップ616でODE45の計算が行われる。
ルンゲ・クッタ・フェールベルク法の誤差式の性質により、ステップ610からステップ612に分岐した直後は必ず、ステップ622での判断はx0+hp < xn+1であり、その後、ステップ612、ステップ614、ステップ616、ステップ618、ステップ620、ステップ622のループが廻る毎にhpの値は次第に増加する。
そうして、x0+hpがxn+1に等しくなると、ステップ624に進み、下記の式で次ステップhの計算をする。ここで、式右辺のhは、hpで読み替えるものとする。
Figure 0005692739
ステップ626では、x0 = xn+1によって時間が進められ、ステップ628では、
状態y0が、yn+1で更新される。そして処理は、判断ステップ604に戻る。
判断ステップ610に戻って、誤差Δが閾値Δ0に等しいか、閾値Δ0より小さい場合は、既に説明したステップ624、626、及び628を経て、判断ステップ604に戻る。
図7は、ストランド1〜Nの動作を示す概要タイミング図である。ストランド1〜Nに対応する実行コードによる計算の結果、ストランドjだけが、エラー、すなわち、ステップ610で誤差Δ > 閾値Δ0となったとする。すると、ストランド1〜j−1と、ストランドj+1〜Nが、ステップ624、ステップ処理626、及びステップ628を経てxn+1に到達している一方で、ストランドjは、ステップ612から再計算の処理に入る。ストランドjは、ステップ614で補間値を計算するが、その際、自己充足的に計算できるのは自ストランドの補間値だけなので、その常微分方程式の右辺に現れるy[i]に対応するそれぞれのストランドに、x0+hpの値を渡して、それらのストランドから、計算された補間値を受け取る。それぞれのストランドでは、ステップ614で説明した補間の計算式が用いられる。
図7では、そのようにして、対応するそれぞれのストランドで計算された補間値は、それぞれ、y*[1] n,y*[2] n,...,y*[N] nとして示されている。
再計算のため、対応するそれぞれのストランドは、ストランドjに補間値を通信するが、それ以外は、ストランドjだけが再計算のループを廻すので、それぞれのストランドにはほとんど計算の負荷がかからない。
こうして、ストランドjだけが再計算を終了すると、図5のステップ508で、ストランドjが他のストランドとステップを合わせることになり、次のステップを計算する準備ができたことになる。尚、ストランドjのステップを揃えるための計算は、実質的に、ステップ612で実行される。
以上、特定の実施例に基づき本発明を説明してきたが、これには限定されず、例えば、ルンゲ・クッタ・フェールベルク法は、ODE45以外に、ODE34、ODE56など、任意の次数のスキームを使用することができる。その際の補間の計算式は、例えば、前述のW. H. Enright, K. R. Jackson, S. P. Norsett, P. G. Thomsen, "Interpolants for Runge-Kutta formulas" ACM Transactions on Mathematical Software, Volume 12, Issue 3 (September 1986)に記載されている式から計算することができる。
また、本発明は、ルンゲ・クッタ・フェールベルク法に限定されず、それを一般化した埋め込み型ルンゲ・クッタ法、例えば、Dormand prince法にも適用可能である。
さらに、補間の計算式は、実施例に示されている5次のエルミート補間式に限定されず、必要な精度を満たすものであるなら、線形補間など、ニュートンの補間式など、任意の補間式を用いることができる。
また、上記実施例は、シングル・プロセッサを例として説明されたが、これには限定されず、本発明の技法は、マルチプロセッサ、マルチコアなどの複数のCPUをもつシステムにでも同様に適用することができる。
316 ハードディスク・ドライブ
402 シミュレーション・モデリング・ツール
404 ソース・コード
406 解析モジュール
404 ソースコード
408 ストランド作成モジュール
410 コード生成モジュール
412 コンパイラ
414 実行環境

Claims (11)

  1. 複数の常微分方程式からなる連立常微分方程式を埋め込み型ルンゲ・クッタ法を用いて解いて、シミュレーションの結果を得るための方法であって、コンピュータが、
    前記連立常微分方程式の個々の常微分方程式を解く際に
    該個々の常微分方程式それぞれについて、次数N(ここで、前記次数Nは前記埋め込み型ルンゲ・クッタ法の次数によって定まる整数の定数である)の状態値と次数N+1の状態値との差を計算するステップと、
    記差が所定の閾値を超えたことに応答して、前記閾値を前記差で除して決まるステップ・サイズを計算するステップと、
    前記差が所定の閾値を超えた常微分方程式それぞれについて、
    前記差が所定の閾値を超えた当該常微分方程式において計算されたステップ・サイズに対応し且つ当該ステップ・サイズが計算された常微分方程式の補間値を計算するステップと、
    前記差が所定の閾値を超えた当該常微分方程式において計算されたステップ・サイズと前記計算された補間値を用いて、前記差が所定の閾値を超えた前記常微分方程式を解くことを実行するステップ
    前記差が所定の閾値を超えた常微分方程式の再実行された値を含む前記連立常微分方程式の解としてのシミュレーションの挙動をディスプレイ上に表示するステップと
    を実行することを含む、前記方法。
  2. 前記コンピュータが、前記補間値を計算するステップと前記再実行するステップとの間において、
    前記差が所定の閾値を超えたことに応答して、前記計算された補間値を前記連立常微分方程式のうちの前記差が所定の閾値を超えている連立常微分方程式を構成する他の計算式において受け取るステップ
    を実行することをさらに含む、請求項1に記載の方法。
  3. 前記埋め込み型ルンゲ・クッタ法において、常微分方程式(ODE;ordinary differential equation)45、ODE34、又は、ODE56が使用される、請求項1又は2に記載の方法。
  4. 前記埋め込み型ルンゲ・クッタ法が、ルンゲ・クッタ・フェールベルク法である、請求項1又は2に記載の方法。
  5. 前記補間値が、5次エルミート補間値である、請求項1〜4のいずれか一項に記載の方法。
  6. 複数の常微分方程式からなる連立常微分方程式を埋め込み型ルンゲ・クッタ法を用いて解いて、シミュレーションの結果を得るためのシステムあって、
    前記連立常微分方程式の個々の常微分方程式を解く際に
    該個々の常微分方程式それぞれについて、次数N(ここで、前記次数Nは前記埋め込み型ルンゲ・クッタ法の次数によって定まる整数の定数である)の状態値と次数N+1の状態値との差を計算する手段と、
    記差が所定の閾値を超えたことに応答して、前記閾値を前記差で除して決まるステップ・サイズを計算する手段と、
    前記差が所定の閾値を超えた常微分方程式それぞれについて、
    前記差が所定の閾値を超えた当該常微分方程式において計算されたステップ・サイズに対応し且つ当該ステップ・サイズが計算された常微分方程式の補間値を計算する手段と、
    前記差が所定の閾値を超えた当該常微分方程式において計算されたステップ・サイズと前記計算された補間値を用いて、前記差が所定の閾値を超えた前記常微分方程式を再計算するステップを実行させる手段と、
    前記差が所定の閾値を超えた常微分方程式の再計算された値を含む前記連立常微分方程式の解としてのシミュレーションの挙動をディスプレイ上に表示する手段と
    を備えている、前記システム。
  7. 記差が所定の閾値を超えたことに応答して、前記計算された補間値を前記連立常微分方程式のうちの前記差が所定の閾値を超えている連立常微分方程式を構成する他の計算式において受け取る手段
    をさらに備えており、当該受け取りが前記補間値を計算することと前記常微分方程式を解くことを再実行することとの処理の間において行われる、請求項6に記載のシステム。
  8. 前記埋め込み型ルンゲ・クッタ法において、常微分方程式(ODE;ordinary differential equation)45、ODE34、又は、ODE56が使用される、請求項6又は7に記載のシステム。
  9. 前記埋め込み型ルンゲ・クッタ法が、ルンゲ・クッタ・フェールベルク法である、請求項6又は7に記載のシステム。
  10. 前記補間値が、5次エルミート補間値である、請求項6〜9のいずれか一項に記載のシステム。
  11. 複数の常微分方程式からなる連立常微分方程式を埋め込み型ルンゲ・クッタ法を用いて解いて、シミュレーションの結果を得るためのコンピュータ・プログラムあって、コンピュータに、請求項1〜5のいずれか一項に記載の方法の各ステップを実行させる、前記コンピュータ・プログラム。
JP2010054251A 2010-03-11 2010-03-11 常微分方程式を解くための方法、プログラム及びシステム Expired - Fee Related JP5692739B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010054251A JP5692739B2 (ja) 2010-03-11 2010-03-11 常微分方程式を解くための方法、プログラム及びシステム
US13/045,866 US20110225225A1 (en) 2010-03-11 2011-03-11 Method, program, and system for solving ordinary differential equation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010054251A JP5692739B2 (ja) 2010-03-11 2010-03-11 常微分方程式を解くための方法、プログラム及びシステム

Publications (2)

Publication Number Publication Date
JP2011186991A JP2011186991A (ja) 2011-09-22
JP5692739B2 true JP5692739B2 (ja) 2015-04-01

Family

ID=44560951

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010054251A Expired - Fee Related JP5692739B2 (ja) 2010-03-11 2010-03-11 常微分方程式を解くための方法、プログラム及びシステム

Country Status (2)

Country Link
US (1) US20110225225A1 (ja)
JP (1) JP5692739B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022220077A1 (ja) 2021-04-13 2022-10-20 WhiteRook合同会社 常微分方程式の数値計算装置、計算装置において常微分方程式を解く演算の実行方法、及びプログラムを記憶した記憶媒体

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6004818B2 (ja) 2012-08-07 2016-10-12 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 並列化方法、システム、及びプログラム
CN103092082B (zh) * 2013-01-07 2015-08-12 河南科技大学 一种驾驶员在环车辆性能优化仿真试验系统
US20140293030A1 (en) * 2013-03-26 2014-10-02 Texas Instruments Incorporated Real Time Math Using a Camera
WO2024003276A1 (en) 2022-06-29 2024-01-04 Robert Bosch Gmbh An electronic control unit (ecu) for solving ordinary differential equations and a method thereof

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05334337A (ja) * 1992-06-04 1993-12-17 Hitachi Ltd 常微分方程式の並列処理方式及びその装置
JP2002083252A (ja) * 2000-09-07 2002-03-22 Komatsu Ltd 高速計算コード作成システム及び該コードを記憶した記憶媒体
US7328195B2 (en) * 2001-11-21 2008-02-05 Ftl Systems, Inc. Semi-automatic generation of behavior models continuous value using iterative probing of a device or existing component model
JP4051937B2 (ja) * 2002-01-25 2008-02-27 富士通株式会社 非線型素子の特性値計算方法及び装置
US7225173B2 (en) * 2002-09-09 2007-05-29 Carmel - Haifa University Economic Corporation Ltd. Apparatus and method for efficient adaptation of finite element meshes for numerical solutions of partial differential equations
WO2004114199A1 (en) * 2003-06-17 2004-12-29 Board Of Regents, The University Of Texas System Hypbrid computation apparatus, systems, and methods

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022220077A1 (ja) 2021-04-13 2022-10-20 WhiteRook合同会社 常微分方程式の数値計算装置、計算装置において常微分方程式を解く演算の実行方法、及びプログラムを記憶した記憶媒体

Also Published As

Publication number Publication date
US20110225225A1 (en) 2011-09-15
JP2011186991A (ja) 2011-09-22

Similar Documents

Publication Publication Date Title
US11520956B2 (en) Systems and methods for automatically realizing models for co-simulation
US8438553B2 (en) Paralleling processing method, system and program
US9377998B2 (en) Code generation for control design
US8677334B2 (en) Parallelization method, system and program
US10423732B2 (en) Bidomain simulator
US20110083125A1 (en) Parallelization processing method, system and program
US9354846B2 (en) Bidomain simulator
JP4988789B2 (ja) シミュレーション・システム、方法及びプログラム
US10235477B2 (en) Prototyping an image processing algorithm and emulating or simulating execution on a hardware accelerator to estimate resource usage or performance
US20160196376A1 (en) Bidomain simulator
JP5692739B2 (ja) 常微分方程式を解くための方法、プログラム及びシステム
JP6021342B2 (ja) 並列化方法、システム、及びプログラム
US11386345B2 (en) Strong simulation methods for unit testing quantum software
JP4988811B2 (ja) モデリング・システムの処理システム、方法及びプログラム
JP5479942B2 (ja) 並列化方法、システム、及びプログラム
US20090007064A1 (en) Size vector sharing in code generated for variable-sized signals
JP6004818B2 (ja) 並列化方法、システム、及びプログラム
Kenter et al. Algorithm-hardware co-design of a discontinuous Galerkin shallow-water model for a dataflow architecture on FPGA
Woźniak Fast GPU integration algorithm for isogeometric finite element method solvers using task dependency graphs
US8041551B1 (en) Algorithm and architecture for multi-argument associative operations that minimizes the number of components using a latency of the components
US20090299498A1 (en) Method and simulator for real-time calculation of state variables of a process model
US8661424B2 (en) Auto-generation of concurrent code for multi-core applications
WO2019142266A1 (ja) テストケース生成装置、テストケース生成方法およびテストケース生成プログラム
US9256405B1 (en) Code generation based on regional upsampling-based delay insertion
US20180349321A1 (en) Parallel processing apparatus, parallel operation method, and parallel operation program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120906

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140107

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140225

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140225

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20140225

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140225

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140807

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141202

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20141202

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20141209

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150109

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150113

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20150113

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150128

R150 Certificate of patent or registration of utility model

Ref document number: 5692739

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees