Function: calc-fit-hubbert-linear-curve
calc-fit-hubbert-linear-curve is a byte-compiled function defined in
calc-nlfit.el.gz.
Signature
(calc-fit-hubbert-linear-curve &optional SDV)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-nlfit.el.gz
(defun calc-fit-hubbert-linear-curve (&optional sdv)
(calc-slow-wrapper
(let* ((sdevv (or (eq sdv 'calcFunc-efit) (eq sdv 'calcFunc-xfit)))
(calc-display-working-message nil)
(data (calc-top 1))
(qdata (cdr (car (cdr data))))
(pdata (cdr (car (cdr (cdr data)))))
(sdata (if (math-contains-sdev-p pdata)
(mapcar (lambda (x) (math-get-sdev x t)) pdata)
nil))
(pdata (mapcar #'math-get-value pdata))
(poverqdata (math-map-binop 'math-div pdata qdata))
(parmvals (math-nlfit-least-squares qdata poverqdata sdata sdevv))
(finalparms (list (nth 0 parmvals)
(math-neg
(math-div (nth 0 parmvals)
(nth 1 parmvals)))))
(calc-curve-varnames nil)
(calc-curve-coefnames nil)
(calc-curve-nvars 1)
(_fitvars (calc-get-fit-variables 1 2))
(var (nth 1 calc-curve-varnames))
(parms (cdr calc-curve-coefnames))
(soln (list '* (nth 0 finalparms)
(list '- 1
(list '/ var (nth 1 finalparms))))))
(let ((calc-fit-to-trail t)
(traillist nil))
(setq traillist
(list 'vec
(list 'calcFunc-eq (nth 0 parms) (nth 0 finalparms))
(list 'calcFunc-eq (nth 1 parms) (nth 1 finalparms))))
(cond ((eq sdv 'calcFunc-efit)
(math-nlfit-enter-result 1 "efit" soln))
((eq sdv 'calcFunc-xfit)
(let (sln
(chisq
(math-nlfit-chi-sq
qdata poverqdata
(list (nth 1 (nth 0 finalparms))
(nth 1 (nth 1 finalparms)))
(lambda (x a b)
(math-mul a
(math-sub
1
(math-div x b))))
sdata)))
(setq sln
(list 'vec
soln
traillist
(nth 2 parmvals)
(list
'vec
'(calcFunc-fitdummy 1)
(list 'calcFunc-neg
(list '/
'(calcFunc-fitdummy 1)
'(calcFunc-fitdummy 2))))
chisq
(let ((n (length qdata)))
(if (and sdata (> n 2))
(calcFunc-utpc
chisq
(- n 2))
'(var nan var-nan)))))
(math-nlfit-enter-result 1 "xfit" sln)))
(t
(math-nlfit-enter-result 1 "fit" soln)))
(calc-record traillist "parm")))))