二重数による自動微分

 投稿者:しばっち  投稿日:2016年 5月17日(火)18時34分19秒
  二重数(Dual number)による自動微分

多項式 f(x)に二重数 x=a+bεを代入する
実部に多項式 f(a)、ε項に b*f'(a)が求められる
(a+bε)(c+dε)=ac+ε(bc+ad) (※ε^2=0)

LET A=2 !' x=a+bε
LET B=1
DIM K(0 TO 3)
FOR I=3 TO 0 STEP -1
   READ K(I)
NEXT I
DATA 8,6,4,1 !'多項式 f(x)=8*x^3+6*x^2+4*x+1
FOR I=3 TO 0 STEP -1
   CALL HORNER(YR,YI,A,B,K(I))
NEXT I
PRINT "f(";A;")=";YR,F(A)
PRINT "f'(";A;")=";YI/B,DF(A)
END

EXTERNAL  SUB HORNER(YR,YI,XR,XI,A)
LET XX=XR*YR
LET YY=YR*XI+YI*XR
LET YR=XX+A
LET YI=YY
END SUB

EXTERNAL  FUNCTION F(X)
LET F=8*X^3+6*X^2+4*X+1
END FUNCTION

EXTERNAL  FUNCTION DF(X)
LET DF=24*X^2+12*X+4
END FUNCTION
 

戻る