;;;compare approximation errors of the following 5 methods ;;;1 Von Cusa- Snellius ;;;2 Durer ;;;3 Karajordanoff ;;;4 Kopf-Perron ;;;5 D'Ocagne ;;; ;;;May 19,2006 by Takaya Iwamoto ;;; ;;;Compare_error.lsp ;;; ;;; (defun C:Compare_errors() (setup_sysvar) (setvar "PDMODE" 32) (setvar "PDSIZE" -3) (setq pnt_org '(0 0) pnt_right '(1.0 0) pnt_yup '(0 1) pnt_rup '(1 1) log10 (log 10.) invlog10 (/ 1. log10) one_min (* 0.2 (+ (* (log 60.) invlog10) 1)) one_deg (* 0.2 (+ (* (log 3600.) invlog10) 1)) two_min (* 0.2 (+ (* (log 120.) invlog10) 1)) pnt_1min_left (list 0 one_min) pnt_1min_right (list 1 one_min) pnt_2min_left (list 0 two_min) pnt_2min_right (list 1 two_min) pnt_1deg_left (list 0 one_deg) pnt_1deg_right (list 1 one_deg) pnt_1_left '(0 0.2) pnt_1_right '(1 0.2 ) pnt_10_left '(0 0.4) pnt_10_right '(1 0.4) pnt_100_left '(0 0.6) pnt_100_right '(1 0.6) pnt_1000_left '(0 0.8) pnt_1000_right '(1 0.8) chr_size 0.04 chr_size2 0.06 pnt_30_down '(0.3 0) pnt_30_up '(0.3 1.0) pnt_60_down '(0.6 0) pnt_60_up '(0.6 1) pnt_90_down '(0.9 0) pnt_90_up '(0.9 1) ) (make_line_1 "0" 0 pnt_org pnt_right) (make_line_1 "0" 0 pnt_right pnt_rup) (make_line_1 "0" 0 pnt_rup pnt_yup) (make_line_1 "0" 0 pnt_yup pnt_org) (textdisplay "Seconds" '(-0.05 0.4) chr_size2 90.) (make_line_1 "0" 8 '(0 0) '(1 0)) (textdisplay "0.1" '(0 0) chr_size 0.) (make_line_1 "0" 8 pnt_1_left pnt_1_right) (textdisplay "1" pnt_1_left chr_size 0.) (make_line_1 "0" 8 pnt_10_left pnt_10_right) (textdisplay "10" pnt_10_left chr_size 0.) (make_line_1 "0" 8 pnt_100_left pnt_100_right) (textdisplay "100" pnt_100_left chr_size 0.) (make_line_1 "0" 8 pnt_1000_left pnt_1000_right) (textdisplay "1000" pnt_1000_left chr_size 0.) (make_line_1 "0" 8 pnt_1min_left pnt_1min_right) (textdisplay "1-min" pnt_1min_right chr_size 0.) (make_line_1 "0" 8 pnt_2min_left pnt_2min_right) (textdisplay "2-min" pnt_2min_right chr_size 0.) (make_line_1 "0" 8 pnt_1deg_left pnt_1deg_right) (textdisplay "1-deg" pnt_1deg_right chr_size 0.) (make_line_1 "0" 8 pnt_30_down pnt_30_up) (textdisplay "30" pnt_30_down chr_size 0.) (make_line_1 "0" 8 pnt_60_down pnt_60_up) (textdisplay "60" pnt_60_down chr_size 0.) (make_line_1 "0" 8 pnt_90_down pnt_90_up) (textdisplay "90" pnt_90_down chr_size 0.) (command "_.zoom" "_Extent") (command "_.regen") (setq list_vonc (list 0.0 0.0613219 1.98401 15.3449 66.3436 209.244 541.974 1227.87 2525.83 4830.64) list_dur (list 0.0 3.23135e-006 0.000413736 0.00707204 0.0530083 0.252906 0.906682 2.6684 6.79599 15.4958) list_kara (list 0.0 0.83808 6.50839 20.8349 45.4946 78.5953 112.767 132.476 110.096 0.1) list_Kopf (list 0.0 0.105875 0.816406 2.5826 5.54511 9.37121 13.0821 14.8665 11.8766 0.1) list_Doca (list 0.0 1.69339 13.573 45.955 109.419 214.946 374.074 599.054 903.04 1300.3) list_all (list list_vonc list_dur list_kara list_kopf list_doca) ncount 0 del_x 0.1 pnt_old '(0 0) );;;;log x with base 10 = (natural log x) / (natural log 10) (repeat 5 (setq tmp_list (nth ncount list_all) nitem 1 ncolor (1+ ncount)) (repeat 9 (setq x_pos (* nitem del_x) y_val (nth nitem tmp_list) ) (if (< y_val 0.1) (setq y_val 0.1)) (setq y_pos (* 0.2 (+ (* (log y_val) invlog10) 1)) pnt_new (list x_pos y_pos) ) (princ "x-y = ")(princ y_val)(princ "::")(princ pnt_new)(terpri) (if (> y_val 0.11) (make_pt "0" ncolor pnt_new)) (if (/= nitem 1) (make_line_1 "0" ncolor pnt_old pnt_new)) (setq pnt_old pnt_new) (setq nitem (1+ nitem)) );;;end of inner loop (setq ncount (1+ ncount)) );;;end of outer loop (command "_.zoom" "_Extent") (command "_.regen") (reset_sysvar) );;;Compare_errors ;;;