autolisp吧 关注:475贴子:1,086
  • 1回复贴,共1

AUTOLISP 数值积分程序,做到立方函数精确积分

只看楼主收藏回复

; ∫(-0.5 0.5)f(x)dx = [ 5 f(-√0.15) + 8 f(0) + 5 f(√0.15) ] / 18


1楼2023-01-03 19:18回复
    (SETQ O1 (SQRT 0.15 ) PI/2 (* 0.5 PI )
    R (/ 5.0 18.0 ) &L (LIST R (/ 8.0 18.0 ) R ) R NIL
    Z: CADDR # MAPCAR APP APPEND \ REVERSE
    )
    (DEFUN SIGMA(FX X XX DX / SA SA+ X` )
    ; (PRINT (LIST 'SIGMA FX X XX DX ))
    (IF (= 'INT (TYPE DX ))(SETQ DX (/ (- XX X )(FLOAT DX ))))
    (IF (NUMBERP (FX (+ X DX )))
    (SETQ SA 0.0 SA+ SAH )(SETQ SA+ SHL ))
    (WHILE (< (SETQ X` (+ X DX )) XX )
    (SA+ X DX )(SETQ X X` )
    (IF (> X PI )(SETQ DX (+ DX (* DX (MIN 1.0 DX )))));改变步长
    )
    (IF (< (- XX X )(* 0.01 DX )) SA (SA+ X (- XX X )))
    )
    (DEFUN SAH(X DX / FI )
    (SETQ FI (# 'FX (XIX (+ X (* 0.5 DX ))(* O1 DX ))))
    ; (PRINT (LIST 'X= X 'FX= FI ))
    (SETQ SA (+ SA (* DX (R* &L FI ))))
    )
    (DEFUN SHL(X DX )
    (SETQ SA (APP SA (LIST (FX (+ X (* 0.5 DX )))))))
    (DEFUN XIX(X I )(LIST (- X I ) X (+ X I )))


    2楼2023-01-03 19:26
    回复