User:Spekkio: Difference between revisions
Content added Content deleted
No edit summary |
No edit summary |
||
Line 34: | Line 34: | ||
<lang lisp> |
<lang lisp> |
||
(defun pie() 31415926535897932385/10000000000000000000) |
|||
(defun factorial (n) |
(defun factorial (n) |
||
(if (= n 0) |
(if (= n 0) |
||
Line 49: | Line 51: | ||
(* (binom alpha (- n 1)) (/ (+ (- alpha n) 1) n)))) |
(* (binom alpha (- n 1)) (/ (+ (- alpha n) 1) n)))) |
||
(defun |
(defun power (a b n) |
||
(if (= n 0) |
(if (= n 0) |
||
1 |
1 |
||
(+ (* (binom b n) (powint (- a 1) n)) ( |
(+ (* (binom b n) (powint (- a 1) n)) (power a b (- n 1))))) |
||
(defun powertest(a b n) |
|||
(if |
|||
(= (* (power a b (+ 10 n)) 1.0) (* (power a b n) 1.0)) |
|||
(power a b (+ 10 n)) |
|||
(powertest a b (+ 10 n)) |
|||
) |
|||
) |
|||
(defun pow (a b) (powertest a b 1)) |
|||
(defun logS(x n) (if (= n 0) (* 2 x) (+ (* 2 (/ (powint x (+ (* 2 n) 1)) (+ (* 2 n) 1))) (logS x (- n 1)) ) )) |
(defun logS(x n) (if (= n 0) (* 2 x) (+ (* 2 (/ (powint x (+ (* 2 n) 1)) (+ (* 2 n) 1))) (logS x (- n 1)) ) )) |
||
Line 60: | Line 72: | ||
(defun expon(x n) (if (= n 0) 1 (+ (/ (powint x n) (factorial n)) (expon x (- n 1))))) |
(defun expon(x n) (if (= n 0) 1 (+ (/ (powint x n) (factorial n)) (expon x (- n 1))))) |
||
(defun |
(defun squaren(x n) (expon (* 1/2 (loge x n)) n)) |
||
(defun |
(defun squarentest(a n) |
||
(if |
|||
(= (* (squaren a (+ 10 n)) 1.0) (* (squaren a n) 1.0)) |
|||
(squaren a (+ 10 n)) |
|||
(squarentest a (+ 10 n)) |
|||
) |
|||
) |
|||
(defun sqrtn (a) (squarentest a 1)) |
|||
(defun powern(x a n) (expon (* a (loge x n)) n)) |
|||
(defun powerntest(a b n) |
|||
(if |
|||
(= (* (powern a b (+ 10 n)) 1.0) (* (powern a b n) 1.0)) |
|||
(powern a b (+ 10 n)) |
|||
(powerntest a b (+ 10 n)) |
|||
) |
|||
) |
|||
(defun pown (a b) (powerntest a b 1)) |
|||
(defun sine(x n) |
(defun sine(x n) |
||
Line 71: | Line 103: | ||
(defun sinetest(x n) |
(defun sinetest(x n) |
||
(if |
(if |
||
(= (* (sine x ( |
(= (* (sine x (+ 10 n)) 1.0) (* (sine x n) 1.0)) |
||
(sine x n) |
(sine x (+ 10 n)) |
||
(sinetest x ( |
(sinetest x (+ 10 n)) |
||
) |
) |
||
) |
) |
||
Line 91: | Line 123: | ||
(defun asinetest(x n) |
(defun asinetest(x n) |
||
(if |
(if |
||
(= (* (asine x ( |
(= (* (asine x (+ 10 n)) 1.0) (* (asine x n) 1.0)) |
||
(asine x n) |
(asine x (+ 10 n)) |
||
(asinetest x ( |
(asinetest x (+ 10 n)) |
||
) |
) |
||
) |
) |
||
(defun myasin (x |
(defun myasin (x) |
||
(if (< x 1) |
|||
⚫ | |||
(if (> x -1) |
|||
(asinetest x 1) |
|||
⚫ | |||
(/ (pie) -2) |
|||
) |
|||
(/ (pie) 2) |
|||
) |
|||
) |
|||
⚫ | |||
⚫ | |||
(defun fibrec (n) |
(defun fibrec (n) |
||
Line 108: | Line 148: | ||
1 |
1 |
||
(+ (fibrec (- n 1)) (fibrec (- n 2)))))) |
(+ (fibrec (- n 1)) (fibrec (- n 2)))))) |
||
</lang> |
</lang> |
||
test: |
test: |
||
[ |
[14]> (* (myasin 9/100) 1.0) |
||
0. |
0.09012195 |
||
[ |
[14]> (sin 9/100) |
||
0. |
0.08987855 |
||
Compare with Mathematica: |
Compare with Mathematica: |
||
In: N[ArcSin[ |
In[14]:= N[ArcSin[9/100], 8] |
||
Out |
Out[14]= 0.090121945 |
||
(myasin) seems to be more accurate, though trying to compute (myasin |
(myasin) seems to be more accurate, though trying to compute (myasin 9999999/10000000) is very slow. |
||
Test 2: |
Test 2: |
||
[4]> (* (myasin (mysin 1)) 1.0) |
[4]> (* (myasin (mysin 1)) 1.0) |
||
1.0 |
|||
0.9999999 |
|||
[4]> (asin (sin 1)) |
[4]> (asin (sin 1)) |
||
1.0 |
1.0 |