|
二重数(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
|
|