JPH0644293A - プログラム生成方法及びその装置 - Google Patents

プログラム生成方法及びその装置

Info

Publication number
JPH0644293A
JPH0644293A JP3223996A JP22399691A JPH0644293A JP H0644293 A JPH0644293 A JP H0644293A JP 3223996 A JP3223996 A JP 3223996A JP 22399691 A JP22399691 A JP 22399691A JP H0644293 A JPH0644293 A JP H0644293A
Authority
JP
Japan
Prior art keywords
procedure
calculation
variable
calculating
value
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.)
Pending
Application number
JP3223996A
Other languages
English (en)
Inventor
Masayoshi Tamura
正義 田村
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP3223996A priority Critical patent/JPH0644293A/ja
Publication of JPH0644293A publication Critical patent/JPH0644293A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【目的】総和計算、総積計算を含む計算手続きの微分を
計算する手続きを生成する。このとき、総和計算、総積
計算が元々もつ繰り返し計算の特性を活かして、微分も
繰り返しによって計算するような手続きを生成する。 【構成】総和計算、総積計算の中の式から、変量xと、
変量xの値が変化すると値の変化する変量をステップ1
01で抽出し、それらの変量による中の式の微分をステ
ップ102で生成し、生成した微分を予め固定の計算手
続きにステップ103で埋め込む。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、産業上の変量に従って
値の変化する計算手続の微分を計算する手続きを生成す
る方法及び装置に係り、特に、計算手続きに総和計算ま
たは総積計算を含む場合に好適な方式及びその装置に関
する。
【0002】
【従来の技術】従来、REDUCE入門、サイエンス社
(1989年)の第12頁から第17頁に記載のよう
に、計算手続きの微分を計算する手続きを生成する機能
を実現したREDUCEなどのコンピュータプログラム
が知られていた。例えば、DF(ATAN(X),X)
と記述すると、関数arctan x のxによる微分である1/
(X2+1)を得ることができる。
【0003】また、REDUCEでは、総和計算や総積
計算に対応する計算手続きを生成することもできる。例
えば、A:=FOR I:=1:10 SUM X
(I)**2;と記述し、これに対応するFORTRA
Nプログラムを生成するように指 SUMの部分をPRODUCTにすれば対応する総積計
算の計算手続きも同様に生成することができる。
【0004】
【発明が解決しようとする課題】非線形な関数群によっ
て表される方程式の解となるような変量群xや、非線形
な関数を最小又は最大にするような変量群xを求める場
合、各変量に関するそれらの関数の微分を計算する手続
きが必要である。つまり、各変量をxi(i=1,…,N)
で表し、変量群をx=(x1,…,xn)で表し、微分すべ
き関数をf(x)で表したとき、∂f(x)/xi(i=1,
…,N)を計算する手続きが必要である。
【0005】上記従来技術では、∂f(x)/xi(i=1,
…,N)を計算する手続きを求めるためにはN回微分を繰
り返さなければならないという問題点があった。
【0006】さらに、総和計算、総積計算を含んだf
(x)の微分を計算する場合、これらの計算の特性を活か
して繰り返し表現を用いた計算手続きを利用することが
望ましい。例えば、FORTRANならば繰り返しはD
Oループと呼ばれており、DOループによる表現は記述
量を少なくするだけではなくベクトルプロセッサを利用
する場合に有利である。
【0007】上記従来技術を用いた場合、各微分を独立
して求めなければならないので、総和計算、総積計算を
含んだf(x)の微分を計算する手続きに繰り返しを用い
ることができないという問題点があった。
【0008】また、変量群xの値の変化に従って値の変
化する変量がある場合にも対応する るときにも、f(x)のxi(i=1,…,N)に関する微分を
計算する手続きを生成できなけらばならない。
【0009】本発明の目的は、総和計算、総積計算を含
む計算手順の微分を計算する手順として、繰り返し表現
を用いる手順を生成することにある。
【0010】
【課題を解決するための手段】上記目的は、総和計算、
総積計算の中の繰り返し行う計算手続きの変量xの要素
である各変量による微分と、必要ならば変量xの値が変
化すると値の変化する変量による微分とを計算する手続
きを生成し、生成した計算手続きを予め固定の計算手順
の中に埋め込んで生成することによって達成できる。
【0011】
【作用】予め生成する計算手順を繰り返し表現に固定し
ておくことによって、必ず繰り返し表現を生成できる。
さらに、総和計算、総積計算の中で繰り返し計算される
部分の変量群xの要素による微分と、必要ならば変量x
の値が変化すると値の変化する変量による微分とを生成
し、生成した計算手続きを予め固定の計算手順に埋め込
むことによって、総和計算、総積計算の微分を計算する
手順を生成できる。
【0012】
【実施例】以下、本発明の一実施例について図面を用い
て説明する。
【0013】図1は、本発明の一実施例である処理手順
を示している。ステップ101は、総和計算、総積計算
の中で繰り返し計算する部分から変量xの要素と、変量
xの値が変化すると値が変化する変量を抽出する。例え
ば、総和計算または総積計算の中で繰り返し計算する部
分の中にxiとAとZがあり、Zはx3を含む計算を表し
ており、Aは定数を表しているとき、xiとZを抽出す
る。ステップ102は、総和計算または総積計算の中で
繰り返し計算する部分のステップ101で抽出した変量
xの要素と他の変量による微分を生成する。ステップ1
03は、ステップ102で生成した微分と、その他の総
和計算、総積計算に関する情報を予め固定の計算手続き
に埋め込んだ計算手続きを生成する。
【0014】図2は、本発明が対象とする総和関数、総
積計算の一表現例を示している。
【0015】 Iminであるときの式から、IがImin+1の時の式、I
がImin+2の時の式、というように次々に加算してい
き、IがImaxの時の式までを加算することを示す式で
ある。202は、式201に示した総和計算の一表現例
であるSUM(I=Imin,Imax:式)を示す式であ
る。SUMが総和計算であることを示し、I=Imin,
Imaxが、IがIminからImaxまで変化することを示し
ている。各Iの値に対応する式の総和を計算する。ここ
で、Iは仮りにつけた変量の名称であり、JでもAでも
良い。また、IminやImaxは、通常、定数または定数の
定義されている変量である。IminやImaxは、変量xの
値が変化しても値が変化しないものとする。式は、通
常、変量Iを含む式であるが、式がx3である場合のよ
うにIを含まなくても問題ない。ただし、式の中に変量
xの要素も、変量xの値が変化すると値の変化する変量
も存在しないならば微分は0であり、微分を計算する手
続きを生成する必要がないので、以下ではそのような場
合は考慮しない。微分時にはその総和計算全体を定数と
して扱えば良い。203は、一般に良く用いら がImin+1の時の式、IがImin+2の時の式、という
ように次々に乗算していき、IがImaxの時の式までを
加算することを示す式である。204は、式203に示
した総積計算の一表現例であるPRODUCT(I=I
min,Imax:式)を示す式である。PRODUCTが総
和計算であることを示し、I=Imin,Imaxが、IがI
minからImaxまで変化することを示している。各Iの値
に対応する式の総積を計算する。ここで、Iは仮りにつ
けた変量の名称であり、JでもAでも良い。また、Imi
nやImaxは、通常、定数または定数の定義されている変
量である。IminやImaxは、変量xの値が変化しても値
が変化しないものとする。式は、通常、変量Iを含む式
であるが、式がx3である場合のようにIを含まなくて
も問題ない。ただし、式の中に変量xの要素も、変量x
の値が変化すると値の変化する変量も存在しないならば
微分は0であり、微分を計算する手続きを生成する必要
がないので、以下ではそのような場合は考慮しない。微
分時にはその総積計算全体を定数として扱えば良い。
【0016】図3は、総和計算を含む関数の一例を示し
ている。式301は、微分すべき関 している。式302は、式301のNに10を設定して
いることを示している。式303は、式301のzにx
1+x2を設定していることを示している。文304〜3
09は、式301〜303で表された微分すべき関数を
表す表現の一例である。304は、何で微分すべきかを
宣言するためのタイトル語VARIABLE;を示す文
である。305は、変量X(1)〜X(10)で微分すべき
であることを示す文である。306は、微分すべき関数
を定義するためのタイトル語FUNCTION;を示す
文である。307はNに10を設定することを示す文で
ある。308は、ZにX(1)+X(2)を設定することを
示す文である。309は、微分すべき関数Fとして、式
301に対応する式を設定していることを示す文であ
る。
【0017】図4および図5は、本発明の一実施例であ
る総和計算、総積計算を含む計算手続きの微分を生成す
る処理手順を示している。例として図3に示した形式で
表された関数を微分する処理手順である。ステップ40
1は、タイトル語VARIABLE;以下のX(n)の部
分を抽出し、変量xの要素が1からnまであることを示
すnを調べ、格納する。図3に示した例の場合にはnは
10である。ステップ402は、タイトル語FUNCT
ION;以下の処理として、文の数分繰り返すことを示
している。ここで、文とは、;(セミコロン)で区切ら
れた記述の単位を示している。ステップ403は、=
(イコール)の右辺の式を処理して、SUM,PROD
UCTを抽出することを示している。この部分の処理は
図6で詳細を説明する。ステップ404は、変量名と、
その変量に設定されている内容を格納することを示して
いる。ここでの変量名とは、=の左辺にある変量名に加
えて、SUM,PRODUCTに対して割当てた変量名
がある。図3に示した例では、変量名として、N,Z,
Fに加えてSUMに対して割当てられるAAAS00
と、それらの内容を格納する。ここで、変量Fの内容は
SUMの部分がAAAS00に置き換わっているので、
AAAS00**2である。ステップ405は、ステッ
プ404で格納した変量の数分処理を繰り返すことを示
している。ステップ405以下で、各変量の微分を生成
し格納する。ステップ406は、変量に設定されている
内容に変量xの要素または微分が必要な変量が存在する
かどうかを判断することを示している。存在するなら
ば、ステップ407,408,409の処理を行う。図
3の場合には、Nに設定されている内容には変量xの要
素も微分が必要な変量も存在しないが、Z,F,AAA
S00には存在する。ステップ407は、現在処理して
いる変量には微分が必要であることを登録することを示
している。ステップ408は、微分の入る配列の名前を
登録することを示している。一例として、変量Z,F,
AAAS00の各微分の入る配列の名前を各々DDD
Z,DDDF,AAAT00とする。ここで、DDDで
始まる変量名は微分すべき関数には現れないものとす
る。これらの配列の要素数はnである。ステップ409
は、変量の内容のxの要素と微分が必要な変量による微
分を登録することを示している。図3の例の場合、Zに
設定された内容に変量xの要素としてX(1)とX(2)が
あるので、これらによる微分を生成する必要がある。変
量ZのX(1)による微分DDDZ.1は1であり、X
(2)による微分DDDZ.2も1である。Fに設定され
た内容の中に微分の必要な変量AAAS00があるの
で、これによる微分が必要である。FのAAAS00に
よる微分F.AAAS00は2*AAAS00である。
AAAS00に設定された内容、つまり、SUMの中の
式に変量xの要素X(I)と、微分の必要な変量Zがある
ので、これらによる微分が必要である。AAAS00の
X(I)による微分AAAT00.Iは2*Z*X(I)で
あり、Zによる微分AAAT00.ZはX(I)**2で
ある。ステップ410以降は、プログラムを生成するこ
とを示している。FORTRAN言語でプログラムを生
成することを考える。ステップ410は、微分を計算す
るプログラムを副プログラムとして生成するために、S
UBROUTINE文と使用する変量名や配列名を宣言
することを示している。通常は、変量xの値の入る配列
やその要素の数nや関数f(x)を表す変量Fの微分の入
る配列を引数としておく。それにより、変量xの値を変
更したときの関数の微分値を容易に得られるようにして
おく。実際、非線形代数方程式や非線形計画問題を解く
ためには、問題を表す関数の微分値が、変量xの複数の
値に対して必要である。ステップ404で登録した変量
名と、ステップ408で登録した配列名、SUM,PR
ODUCTで使用されているIなどを宣言する必要があ
る。ステップ411は、使用する配列に0を代入する処
理を示している。これにより、恒等的に0ではない式の
設定のみを生成すれば良い。例えば、図3の例では、Z
の微分の入る配列DDDZの大きさはn(=10)であ
るが、恒等的に0ではないのはDDDZ(1)とDDDZ
(2)だけである。DDDZの他の要素には最初に0を代
入してしまうので、後で各要素に0を代入する必要がな
い。これは、特にnの値が大きく、恒等的に0ではない
要素が少ない場合、生成するプログラムの行数を少なく
できるという効果がある。さらに、DOループのような
繰り返し計算を効率良く処理できるベクトル計算機では
有利である。ステップ412は、各変量とその微分を計
算する手続きを出力することを示している。ここで、S
UM,PRODUCTの微分を計算する手続きは、各々
図7、図8の形式にこれまでの処理で得た情報を埋め込
むことにより生成する。ステップ413は、副プログラ
ムの終了を示すRETURN分やEND分を出力するこ
とを示している。
【0018】
【表1】
【0019】図6は、図4の処理手順の一部である総和
計算、総積計算の抽出の処理手順を示している。ステッ
プ501は、処理の対象を左からサーチし、“ SUM
( ”,または“ PRODUCT( ”を発見した回数繰り
返すことを示す。ただし、SUMの中のSUMは後述す
るステップ504で処理するので、ここでの繰り返しは
同じレベルでのSUMやPRODUCTの数分繰り返す
ことを意味している。ステップ502は、表1のとおり
に変量名を割当てることを示している。ここに現れる変
量名は微分すべき計算手順の中には現れないものとす
る。また、表1の変量名の##の部分は順に採番するな
どの処理により決定する必要がある。上記の図4の説明
では最初に現れたSUMに対して##の部分に00を採
番した。ステップ503は、SUMまたはPRODUC
TとIを現在処理中として追加登録することを示してい
る。例えば、SUM(I=1,5:SUM(J=3,
6:式))という式の内側のSUMを処理しているとき
には、例えば、((1 SUMI),(2 SUM
J))などのように登録しておく。これにより、内側の
SUMと外側のSUMでIとして同じ変量名を用いてい
ないことのチェックや、SUMの中のPRODUCT、
PRODUCTの中のSUMやPRODUCTを使用不
可にするためのチェックをできる。ステップ504は、
SUMやPRODUCTの中の式を処理して、SUM,
PRODUCTを抽出することを示している。図6に示
した処理を再帰的に呼び出す。これにより、SUMの中
の式にSUMを記述された場合に対応する。ステップ5
05は、SUM,PRODUCTの内容をステップ50
2で決めた変量名に登録し、SUM,PRODUCTの
あった部分をその変量名で置き換えることを示してい
る。SUM,PRODUCTの内容とは、中の式とI=
Imax,Iminに関する情報である。記述されたままの形
式で記憶しても良いが分けて記憶するのが望ましい。こ
れまでの処理でわけるための情報は得られており、後で
別々に使用するからである。ステップ506は、ステッ
プ503で追加登録した分を削除することを示してい
る。
【0020】図7は、総和計算の微分を計算する予め固
定の計算手順を示している。文601は総和計算の微分
を入れる配列AAAT##に0を設定するためのループ
の開始を示している。変量AAAI00はこのループを
制御する変量であり、微分すべき関数には現れないもの
としている。また、nは変量xの要素の数である。さら
に、この図では文番号が1となっているが、この文を出
力する時点での文番号を採番して利用しなければならな
い。例えば、それまでに文番号を3まで使用していたな
らば、ここでの文番号は4とすれば良い。以下、文番号
に関しては同様である。文602は、微分の入る配列A
AAT##に0を入れることを示している。文603
は、文601で始まったループの終了を示している。文
604は、総和計算の微分を計算するためのループの開
始を示している。I=Imin,Imaxの部分はSUMの中
の処理で抽出した情報である。図3に示した例ではI=
2,Nである。文605は、必要ならば内側のSUMの
微分の計算手続きをここに生成することを示している。
つまり、内側のSUMに関する図7の内容を必要ならば
ここに出力する。文606は、SUMの中の式に微分の
必要な変量が含まれていた場合の微分を計算するための
ループの開始を示している。ループを制御する変数はA
AAI00であり、1からnまで変化する。文607
は、SUMの中の式に微分の必要な変量が含まれていた
場合の微分を計算する手続きの形式を示している。SU
Mの微分の入る配列の要素AAAT##(AAAI00)
に、微分の必要な各変量に対応する{変量の微分の入る
配列(AAAI00)}と{SUMの中の式の変量による
微分}の積を全て加える。図3に示した例では、AAA
T00(AAAI00)=AAAT00(AAAI00)+
DDDZ(AAAI00)*X(I)**2である。文60
8は、文606で始まったループの終了を示している。
文609は、SUMの中の式に変量xの要素がある場合
の微分の計算の手続きの形式を示している。変量xの各
要素に対応して、配列AAAT##の要素を更新する。
更新する配列の要素を表す添字は、現れた変量xの要素
を表す添字である。その配列要素に{SUMの中の式の
変量xの要素による微分}を加える。図3に示した例の
場合、AAAT00(I)=AAAT00(I)+2*Z*
X(I)である。文610は、文609の更新処理を、S
UMの中の式に現れた変量xの要素の種類の数文出力す
ることを示している。
【0021】図8および図9は、総和計算の微分を計算
する予め固定の計算手順を示している。文701は総積
計算の微分を入れる配列AAAQ##に0を設定するた
めのループの開始を示している。変量AAAI00はこ
のループを制御する変量であり、微分すべき関数には現
れないものとしている。また、nは変量xの要素の数で
ある。さらに、この図では文番号が1となっているが、
この文を出力する時点での文番号を採番して利用しなけ
ればならない。例えば、それまでに文番号を3まで使用
していたならば、ここでの文番号は4とすれば良い。以
下、文番号に関しては同様である。文702は、微分の
入る配列AAAQ##に0を入れることを示している。
文703は、文701で始まったループの終了を示して
いる。文704は、総積計算の微分の計算のために必要
な作業領域である配列AAAR##に1を設定するため
のループの開始を示している。ループ時、IをIminか
らImaxまで変化させる。文705は、AAAR##(I
−Imin+1)に1を設定することを示している。配列A
AAR##の大きさは、総積計算のための繰り返し回数
であり、要素が1から繰り返し回数まである。Iminが
1であるとは限らないので配列AAAR##参照時の添
字をI−Imin+1にしている。例えば、Iminが3、I
maxが6のとき、配列AAAR##の大きさは4であ
り、I=3から6までで配列要素AAAR##(I−2)
を更新することによって、配列要素AAAR##(1)か
ら配列要素AAAR##(4)までに1を設定している。
文706は、文704で始まったループの終了を示して
いる。文707と文708は、配列AAAR##の内容
を設定するためのループの開始を示している。文707
は、変量IをIminからImaxまで変化させるループ、文
708は、変量AAAI00をIminからImaxまで変化
させるループの開始を示している。文707と文708
は入替えることも可能であるが、通常、ループをベクト
ルプロセッサで処理するならば、このままの順番の方が
有利である。文709は、IとAAAI00の値が等し
くないかどうかを判定している。等しくない場合のみ、
文710を実行する。文710は、配列要素AAAR#
#(AAAI00−Imin+1)の元々の値に、PROD
UCTの中の式の値を乗じている。文711は、文70
9の判定が成り立ったときに行う処理の終了を示してい
る。文712は、文708で始まったループの終了、文
713は文707で始まったループの終了を示してい
る。結局、文707から文713で、配列要素AAAR
##(k)に、総積計算の繰り返しのk番目だけを除いた
総積計算の結果を設定している。文714は、総積計算
の微分を計算するためのループの開始を示している。I
=Imin,Imaxの部分はPRODUCTの中の処理で抽
出した情報である。文715は、PRODUCTの中の
式に微分の必要な変量が含まれていた場合の微分を計算
するためのループの開始を示している。ループを制御す
る変数はAAAI00であり、1からnまで変化する。
文716は、PRODUCTの中の式に微分の必要な変
量が含まれていた場合の微分を計算する手続きの形式を
示している。PRODUCTの微分の入る配列の要素A
AAQ##(AAAI00)に、微分の必要な各変量に対
応するAAAR##(I−Imin+1)と{変量の微分の
入る配列(AAAI00)}と{PRODUCTの中の式
の変量による微分}の積を全て加える。文717は、文
715で始まったループの終了を示している。文718
は、PRODUCTの中の式に変量xの要素がある場合
の微分の計算の手続きの形式を示している。変量xの各
要素に対応して、配列AAAQ##の要素を更新する。
更新する配列の要素を表す添字は、現れた変量xの要素
を表す添字である。その配列要素にAAAR##(I−
Imin+1)と{PRODUCTの中の式の変量xの要素
による微分}の積を加える。文719は、文718に示
した更新処理をPRODUCTの中の式に現れた変量x
の要素の種類の数文出力することを示している。文72
0は、文714で始まったループの終了を示している。
【0022】図10は、図3に示した例を計算するため
に、本発明によって生成する計算手続きの一例を示して
いる。文801は、生成する計算手続きがFORTRA
N副プログラムであることを宣言するためのSUBRO
UTINE文を示している。ここでは、副プログラムの
名称をFUNにしており、変量Xと計算結果を格納する
変量Fを引数にしている。変量の要素の数nを引数に加
えても良い。文802は、使用する倍精度型の実数であ
る変量や配列を宣言することを示している。文803
は、使用する整数型の変量を宣言することを示してい
る。文804は、Nに10を設定することを示してい
る。文805はZにX(1)+X(2)を設定することを示
している。文806〜809は総和計算を示している。
総和計算の結果は、割当てた変量AAAS00に格納し
ている。文810は、計算結果を変量Fに格納すること
を示している。ここで、総和計算の結果として変量AA
AS00を用いている。文811は、この副プログラム
から抜けることを示しており、文812は、副プログラ
ムの終了を示している。
【0023】図11は、図3に示した例の微分を計算す
るために、本発明によって生成する計算手続きの一例を
示している。文901は、生成する微分の計算手続きが
FORTRAN副プログラムであることを宣言するため
のSUBROUTINE文を示している。ここでは、副
プログラムの名称をDIFUNにしており、変量Xと微
分の計算結果を格納する配列DDDFを引数にしてい
る。変量の要素の数nを引数に加えても良い。文902
は、使用する倍精度型の実数である変量や配列を宣言す
ることを示している。文903は、使用する整数型の変
量を宣言することを示している。文904〜908は、
使用する配列のゼロクリアを示している。文909は、
Nに10を設定することを示している。文910はZに
X(1)+X(2)を設定することを示している。文911
〜914は総和計算を示している。総和計算の結果は、
割当てた変量AAAS00に格納している。文915,
916は変量Zの微分のうち、恒等的に0にはならない
要素だけを設定している。文905で配列をゼロクリア
しているので、恒等的に0になる要素への設定は不要で
ある。ここで、ループを効率良く計算できない装置上で
この副プログラムを利用する場合には、DDDZ(1),
DDDZ(2)への設定を2度行うのは無駄であり、文9
05のゼロクリアを取り、文916の後で各要素に0を
設定した方が計算効率は良い。ただし、特に要素数が多
いときには記述量が多くなることに注意しなければなら
ない。文917は、総和計算の微分の計算手続きの開始
を示している。文918〜920は、総和計算の式の中
に微分の必要な変量Zがあるために必要な微分の計算手
続きを示している。文921は、総和計算の式の中に変
量xの要素があるために必要な微分の計算手続きを示し
ている。文922は、総和計算の微分の計算手続きの終
了を示している。文923〜925は、微分の結果を配
列DDDFに格納することを示している。ここで、総和
計算の結果として変量AAAS00、総和計算の微分の
結果として配列AAAT00を用いている。文926
は、この副プログラムから抜けることを示しており、文
927は、副プログラムの終了を示している。
【0024】図12は、本発明を実施するのに適した装
置の構成を示している。1001は、入力装置を示して
いる。微分すべき関数の入力や、微分処理の実行開始の
指示などを入力する。1002は、記憶装置を示してい
る。入力装置1001から入力された関数や処理手順、
微分結果などを記憶する。1003は、出力装置を示し
ている。微分結果などを出力する。1004は、処理装
置を示している。記憶装置1002に記憶してある処理
手順を用いて、入力装置1001から入力された関数を
微分する。処理途中で適宜記憶装置1002を利用しな
がら微分結果を出力装置1003に出力する。
【0025】表1は総和計算、総積計算とその微分、さ
らに総積計算のための作業領域の名前のつけ方の一例を
示している。SUMの計算結果を格納する変量名をAA
AS##,SUMの微分の計算結果を格納する配列をA
AAT##(n),PRODUCTの計算結果を格納する
変量名をAAAP##,PRODUCTの微分の計算結
果を格納する配列をAAAQ##(n),PRODUCT
の微分を計算するために用いる作業領域の配列をAAA
R##(k)とする。ここで、nは変量xの要素の個数、
kはPRODUCTの繰り返し回数を意味している。
【0026】以上の実施例では、FORTRAN言語の
プログラムを生成したが、FORTRAN以外のプログ
ラムを生成することも可能である。微分した結果を利用
する形態を考慮し最適な言語や表現形式を用いれば良
い。例えば、生成した微分結果をC言語のプログラムか
ら呼び出すならば、C言語による微分計算プログラムを
生成するのが最適である。
【0027】
【発明の効果】本発明によれば、総和計算、総積計算を
含む計算手続きから、その微分を計算する手続きを生成
できる。生成した計算手続きは、ループにすべき部分を
全てループで表現しており、かつ、そのループは、各繰
り返しの計算を独立に行えるように工夫してある。これ
により、関数の中の総和計算、総積計算の中の繰り返し
が多くなっても記述量が増えず、逆に、繰り返しを並列
に計算できるので効率が良い。
【図面の簡単な説明】
【図1】本発明の一実施例である処理手順を示す図であ
る。
【図2】本発明が対象とする総和関数、総積計算の一表
現例を示す図である。
【図3】総和計算を含む関数の一例を示す図である。
【図4】本発明の一実施例である総和計算、総積計算を
含む計算手続きの微分を生成する処理手順を示す図であ
る。
【図5】図4に続く処理手順を示す図である。
【図6】図4および図5の処理手順の一部である総和計
算、総積計算の抽出の処理手順を示す図である。
【図7】総和計算の微分を計算する予め固定の計算手順
を示す図である。
【図8】総和計算の微分を計算する予め固定の計算手順
を示す図である。
【図9】図8に続く計算手順を示す図である。
【図10】図3に示した例を計算するために、本発明に
よって生成する計算手続きの一例を示す図である。
【図11】図3に示した例の微分を計算するために、本
発明によって生成する計算手続きの一例を示す図であ
る。
【図12】本発明を実施するのに適した装置の構成図で
ある。

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】変量群xの値の変化に従って値の変化する
    計算手続きの微分値を計算する手続きを求めるプログラ
    ムを生成する方法において、変量群xの値の変化に従っ
    て値の変化する計算手続きの中に総和計算を行う手続き
    が現われたとき、総和計算を行う手続きの中で繰返し行
    う計算手続きの変量群xの要素による微分を計算する手
    続きを生成し、生成した計算手続きを総和計算の微分を
    計算する予め固定の手続きの中に埋め込んだ計算手続き
    を生成することを特徴とするプログラム生成方法。
  2. 【請求項2】変量群xの値の変化に従って値の変化する
    計算手続きの微分値を計算する手続きを求めるプログラ
    ムを生成する方法において、変量群xの値の変化に従っ
    て値の変化する計算手続きの中に総和計算を行う手続き
    が現われたとき、総和計算を行う手続きの中で繰返し行
    う計算手続きの各変量による微分と変量群xの値が変化
    すると値の変化する変量による微分を計算する手続きを
    生成し、生成した計算手続きを総和計算の微分を計算す
    る予め固定の手続きの中に埋め込んだ計算手続きを生成
    することを特徴とするプログラム生成方法。
  3. 【請求項3】変量群xの値の変化に従って値の変化する
    計算手続きの微分値を計算する手続きを求めるプログラ
    ムを生成する方法において、変量群xの値の変化に従っ
    て値の変化する計算手続きの中に総積計算を行う手続き
    が現われたとき、総積計算を行う手続きの中で繰返し行
    う計算手続きの変量群xの要素による微分を計算する手
    続きを生成し、生成した計算手続きを総積計算の微分を
    計算する予め固定の手続きの中に埋め込んだ計算手続き
    を生成することを特徴とするプログラム生成方法。
  4. 【請求項4】変量群xの値の変化に従って値の変化する
    計算手続きの微分値を計算する手続きを求めるプログラ
    ムを生成する方法において、変量群xの値の変化に従っ
    て値の変化する計算手続きの中に総積計算を行う手続き
    が現われたとき、総積計算を行う手続きの中で繰返し行
    う計算手続きの各変量による微分と変量群xの値が変化
    すると値の変化する変量による微分を計算する手続きを
    生成し、生成した計算手続きを総積計算の微分を計算す
    る予め固定の手続きの中に埋め込んだ計算手続きを生成
    することを特徴とするプログラム生成方法。
  5. 【請求項5】変量群xの値の変化に従って値の変化する
    計算手続きの微分値を計算する手続きを求めるプログラ
    ム生成装置において、変量群xの値の変化に従って値の
    変化する計算手続きの中に総和計算を行う手続きが現わ
    れたとき、総和計算を行う手続きの中で繰返し行う計算
    手続きの変量群xの要素による微分を計算する手続きを
    生成する手段と、生成した計算手続きを総和計算の微分
    を計算する予め固定の手続きの中に埋め込んだ計算手続
    きを生成する手段を具備することを特徴とするプログラ
    ム生成装置。
  6. 【請求項6】変量群xの値の変化に従って値の変化する
    計算手続きの微分値を計算する手続きを求めるプログラ
    ム生成装置において、変量群xの値の変化に従って値の
    変化する計算手続きの中に総和計算を行う手続きが現わ
    れたとき、総和計算を行う手続きの中で繰返し行う計算
    手続きの各変量による微分と変量群xの値が変化すると
    値の変化する変量による微分を計算する手続きを生成す
    る手段と、生成した計算手続きを総和計算の微分を計算
    する予め固定の手続きの中に埋め込んだ計算手続きを生
    成する手段とを具備することを特徴とするプログラム生
    成装置。
  7. 【請求項7】変量群xの値の変化に従って値の変化する
    計算手続きの微分値を計算する手続きを求めるプログラ
    ム生成装置において、変量群xの値の変化に従って値の
    変化する計算手続きの中に総積計算を行う手続きが現わ
    れたとき、総積計算を行う手続きの中で繰返し行う計算
    手続きの変量群xの要素による微分を計算する手続きを
    生成する手段と、生成した計算手続きを総積計算の微分
    を計算する予め固定の手続きの中に埋め込んだ計算手続
    きを生成する手段とを具備することを特徴とするプログ
    ラム生成装置。
  8. 【請求項8】変量群xの値の変化に従って値の変化する
    計算手続きの微分値を計算する手続きを求めるプログラ
    ム生成装置において、変量群xの値の変化に従って値の
    変化する計算手続きの中に総積計算を行う手続きが現わ
    れたとき、総積計算を行う手続きの中で繰返し行う計算
    手続きの各変量による微分と変量群xの値が変化すると
    値の変化する変量による微分を計算する手続きを生成す
    る手段と、生成した計算手続きを総積計算の微分を計算
    する予め固定の手続きの中に埋め込んだ計算手続きを生
    成する装置を具備することを特徴とするプログラム生成
    装置。
JP3223996A 1991-09-04 1991-09-04 プログラム生成方法及びその装置 Pending JPH0644293A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3223996A JPH0644293A (ja) 1991-09-04 1991-09-04 プログラム生成方法及びその装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3223996A JPH0644293A (ja) 1991-09-04 1991-09-04 プログラム生成方法及びその装置

Publications (1)

Publication Number Publication Date
JPH0644293A true JPH0644293A (ja) 1994-02-18

Family

ID=16806956

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3223996A Pending JPH0644293A (ja) 1991-09-04 1991-09-04 プログラム生成方法及びその装置

Country Status (1)

Country Link
JP (1) JPH0644293A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1989006180A1 (en) * 1988-01-09 1989-07-13 Fanuc Ltd Industrial robot capable of automatically changing operating conditions depending on its attitude of installation
WO1989010822A1 (en) * 1988-05-06 1989-11-16 Kabushiki Kaisha Yaskawa Denki Seisakusho Method of and apparatus for controlling robot having multiple rotary shafts

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1989006180A1 (en) * 1988-01-09 1989-07-13 Fanuc Ltd Industrial robot capable of automatically changing operating conditions depending on its attitude of installation
WO1989010822A1 (en) * 1988-05-06 1989-11-16 Kabushiki Kaisha Yaskawa Denki Seisakusho Method of and apparatus for controlling robot having multiple rotary shafts

Similar Documents

Publication Publication Date Title
Lindfield et al. Numerical methods: using MATLAB
US4972334A (en) Automatic generation method of a simulation program for numerically solving a partial differential equation according to a boundary-fitted method
US5067068A (en) Method for converting an iterative loop of a source program into parellelly executable object program portions
de la Llave et al. Global persistence of Lyapunov subcenter manifolds as spectral submanifolds under dissipative perturbations
US8239822B2 (en) Symbolic forward and reverse differentiation
US20020007385A1 (en) Computer algebra system and method
Servadio et al. A Koopman operator tutorial with othogonal polynomials
JPH0644293A (ja) プログラム生成方法及びその装置
CN109947419B (zh) 一种实现逻辑判断的方法及装置
Aleshin et al. Dynamic properties of the Fisher–Kolmogorov–Petrovskii–Piscounov equation with the deviation of the spatial variable
US6694512B1 (en) Data processing device, data processing method and supply medium thereof
US5764990A (en) Compact encoding for storing integer multiplication Sequences
Boyle LISP to FORTRAN—program transformation applied
Davy et al. Experiments in verification of linear model predictive control: Automatic generation and formal verification of an interior point method algorithm
Wirth Symbolic vector and dyadic analysis
Kapoor et al. Implementation of Elzaki HPM for Semi-Analytical Solution upon Two-Dimensional Fuzzy Fractional Heat Equation
JP4327533B2 (ja) 演算処理プログラム、演算処理方法、および演算処理装置
JP3149555B2 (ja) システム設計用目的変換装置
Barraud et al. Sirena+: a versatile interactive system for simulation, identification and control design
JP2555011B2 (ja) ベクトルデ−タ処理方式
AbouEisha et al. Multi-stage Optimization of Element Partition Trees
Höger et al. Internalized state-selection: Generation and integration of quasi-linear differential-algebraic equations
JP2001117952A (ja) 最適設計システム
CN118211609A (zh) Pinn网络的预训练方法、装置、电子设备及介质
JPH0895763A (ja) オリジナルプログラムへの部品プログラム取り込み方法