2010年11月20日土曜日

maximaの計算時間を計測

maximaで
showtime:true;
とすれば、以後計算するたびに計算時間が表示される。

meval

defmfun で定義されたlispの関数はmevalで評価できる。
(defmfun $test (&rest keys)
  (let ()
    (setf keys (push '$factorout keys))
    (meval keys)
    ))

2010年11月13日土曜日

自作関数のメモ(プロトタイプの時の)

式に指定した関数が使われているか調べる。式に積分、伊藤積分が含まれる場合、その要素の中も調べる。
depends_func (expr func)
> true (if expr depends func)
> false (otherwise)
ex.
(depends_func expr 'mplus)

file:


file:


file:

lisp内で記述するmaximaの数学記号

自然対数
'$%E

maximaで使用する数式の関数f(x):=x+1などをlisp内で定義する

(setf (symbol-plist $f) '(MPROPS (NIL MEXPR ((LAMBDA) ((MLIST) $x) (MPLUS $x 1)))))
maximaで
f(x):=x+1;
としたことと同義。

下記のようにすれば、maximaの表示上は定義してように見えるが、その関数を呼び出すことはできない。
(list `(mdefine simp) func2 (mul2 ini (pow '%e ($intstyle e2 y))))


メモ
(setq func1 (concat x n))
(setq func2 (list `(,func1 simp) y))
(setf result1 (mul2 ini (pow '%e ($intstyle e2 y))) )
(setf result2 `(MPROPS (NIL MEXPR ((LAMBDA) ((MLIST) ,y) ,result1))) )
(setf (symbol-plist func1) result2)

2010年11月11日木曜日

maxima <=> lisp

f(s):=s^2
((MDEFINE SIMP) (($F) $S) ((MEXPT) $S 2)) 

2010年11月10日水曜日

fubiniの定理

確率積分と時間微分の交換はできた。

今後、このページに課題を書く。