コミュニティアイコン プチコン 非公式コミュニティ プレイ日記

アバター
こういち ◆.Id/aHiU36hu
2021/11/24 21:25
自動微分。今まで黒魔術だと思ってたけど、蓋を開けてみれば意外と簡単だった件。
高速化するならもう少し複雑になるんでしょうけど
参考: https://www.ajimatics.com:443/entry/2021/03/22/174633

DEF DUALOP TYPE,O[],IN1[],IN2[]
 VAR r1=IN1[0],r2=IN2[0] '実部
 VAR e1=IN1[1],e2=IN2[1] '非実部
 IF 0==TYPE THEN '加算
  IF EXTFEATURE THEN
   ARYOP TYPE,O,IN1,IN2
  ELSE
   O[0]=r1+r2
   O[1]=e1+e2
  ENDIF
 ELSE IF 1==TYPE THEN '減算
  IF EXTFEATURE THEN
   ARYOP TYPE,O,IN1,IN2
  ELSE
   O[0]=r1-r2
   O[1]=e1-e2
  ENDIF
 ELSE IF 2==TYPE THEN '乗算
  O[0]=r1*r2
  O[1]=e1*r2+r1*e2
 ELSE IF 3==TYPE THEN '除算
  O[0]=r1/r2
  O[1]=(e1*r2-r1*e2)/r2/r2
 ENDIF
END

DEF DUALCOS(IN[]) '余弦
 DIM O[2]
 var r=IN[0],e=IN[1]
 O[0]=COS(r)
 O[1]=-e*SIN(r)
 RETURN O
END

DEF DUALSIN(IN[]) '正弦
 DIM O[2]
 var r=IN[0],e=IN[1]
 O[0]=SIN(r)
 O[1]=e*COS(r)
 RETURN O
END

DEF DUALEXP(IN[]) '指数関数
 DIM O[2]
 var r=IN[0],e=IN[1]
 O[0]=EXP(r)
 O[1]=e*EXP(r)
 RETURN O
END

DEF DUALCONS(a) '定数
 DIM ans[2]
 ans[0]=a
 return ans
END

DEF DUALVAR(a) '変数
 DIM ans[2]
 ans[0]=a
 ans[1]=1
 return ans
END

コメント

アバター
こういち 2021/11/24 21:34 ◆.Id/aHiU36hu
リンク先は二重数の解説しかないので、二重数を使った微分についての解説。
プログラム的には微分の公式を書いたのと変わらないけど、複素数と同じく覚えることが少ないのでもっと早く知りたかった。
アバター
こういち 2021/11/24 21:40 ◆.Id/aHiU36hu
数学的には微分できないはずのReluもちゃんと微分できる。
使い道は不明だけど、面白い。
アバター
こういち 2021/11/26 20:48 ◆.Id/aHiU36hu
話は変わって、高速数論変換(NTT)
周波数間引きNTTを書いてたと思ったら〜、

時間間引きNTTでした〜。

チクショー!!
アバター
こういち 2021/11/30 23:13 ◆.Id/aHiU36hu
離散フーリエ変換って、1の2^n乗根が定義できればどういう環でもいいんだけど、分解型複素数でフーリエ変換したらどうなるんだろう?

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -