解方程组(形式上全为符号正的,能够半自动解答下面两组方程了)
2011-04-25 09:56
141 查看
解方程组(形式上全为符号正的,能够半自动解答下面两组方程了)
(setq material
'( (equtation (+ (* 2 a) (* 4 b) ) 20 )
(equtation (+ (* 3 a) (* 8 b) ) 40 )) )
(setq test '(equtation (+ (* 2 a) (* 4 b) ) 20 ) )
(setq testtwo '(equtation (+ (* 3 a) (* 8 b) ) 40 ) )
(B 5)(A 0)
(setq material
'( (equtation (+ (* 6 a) (* 7 b) ) 33 )
(equtation (+ (* 7 a) (* 8 b) ) 38 )) )
(setq test '(equtation (+ (* 6 a) (* 7 b) ) 33 ) )
(setq testtwo '(equtation (+ (* 7 a) (* 8 b) ) 38 ) )
(B 3) (A 2)
(defun simplehelperdivi (lst num)
(if (eq (print lst ) nil)
nil
(cond
( (or (eq (car lst) '-) (eq (car lst) '+) )
(cons (car lst)
(simplehelperdivi (cdr lst) num)))
( (eq (car lst) '*)
(list (car lst) (/ (cadr lst) num) (caddr lst)))
( (numberp (car lst) )
(cons (/ (car lst) num )
(simplehelperdivi (cdr lst) num)))
( (listp (car lst) )
(cons (simplehelperdivi (car lst) num )
(simplehelperdivi (cdr lst) num)))
(t (print 'over)))))
(defun simplehelper (lst)
(if (eq (car lst) '/)
(progn
(print lst)
( simplehelperdivi (cadr lst) (caddr lst) ))
(print 'error)))
(defun negative (lst)
(if (eq lst nil)
nil
(if (numberp (car lst) )
(cons (- 0 (car lst) ) nil)
(if (listp (car lst) )
(cons (negative (car lst) )
(negative (cdr lst)))
(if (eq (car (print lst )) '*)
(print (list (car lst) (- 0 (cadr lst) ) (caddr lst))))))))
(defun simple (lst env)
(if (eq (car lst) 'equtation)
(cond
( (eq (caadr lst) '+)
(progn
(print 'chenbing+)
( simple (list 'equtation
(cadadr lst)
(append (list '+ (caddr lst) )
(negative (cddadr lst))))
env ) ))
( (eq (caadr lst) '*)
(progn
(print 'chenbing*)
(print lst)
(cons
(append (list (caddr (cadr lst ))
(simplehelper (list '/ (caddr lst) (cadadr lst )))))
env)))
(t (print 'nothing)))
(print 'error)))
(defun look (let env)
(if (eq env nil)
let
(if (eq (caar env) let)
(cadar env)
(look let (cdr env)))))
(defun wrapprecalc (lst)
(list (car lst) (precalc (cadr lst) ) (caddr lst) ))
(if (listp (car left) )
(cons (emerge (car left) right)
(emerge (cdr left) right))
(defun emerge (left right )
(progn
(print 'start)
(print left)
(print right)
(if (eq left nil)
nil
(if (atom (car left) )
(cons (car left)
(emerge (cdr left) right))
(if (eq (caddar left) (caddr right) )
(cons (list (caar left)
(+ (cadar left) (cadr right))
(caddar left))
(emerge (cdr left) right))))))
)
(defun precalcmul (lst num)
(if (eq (print lst ) nil)
nil
(cond
( (or (eq (car lst) '-) (eq (car lst) '+) )
(cons (car lst)
(precalcmul (cdr lst) num)))
( (eq (car lst) '*)
(list (car lst) (* (cadr lst) num) (caddr lst)))
( (numberp (car lst) )
(cons (* (car lst) num )
(precalcmul (cdr lst) num)))
( (listp (car lst) )
(cons (precalcmul (car lst) num )
(precalcmul (cdr lst) num)))
(t (print 'over)))))
(defun wraporder (lst)
(list (car lst) (order (cadr lst) ) (caddr lst) ))
(defun order (lst)
(if (atom (cadr lst) )
(list (car lst) (caddr lst) (cadr lst) )
lst))
(defun precalc ( lst )
(cond
( (eq lst nil) nil)
( (and (or (eq (car lst) '+)(eq (car lst) '-) )
(not (atom (cadr lst)) )
(eq (caadr lst) '+))
(emerge (cadr lst) (caddr lst) ))
( (and (or (eq (car lst) '+)(eq (car lst) '-) )
(atom (cadr lst))
(atom (caddr lst)))
(+ (cadr lst) (caddr lst)))
( (or (eq (car lst) '+)(eq (car lst) '-) )
(cons (car lst)
(precalc (cdr lst))))
( (and (eq (car lst) '*) (listp (caddr lst) ) )
(precalcmul (caddr lst) (cadr lst) ))
( (listp (car lst) )
(progn
(print (car lst ))
(cons (precalc (car lst) )
(precalc (cdr lst )))))
(t lst)))
(defun substi ( lst env)
(if (or (eq lst nil) (eq env nil))
lst
(if (atom (car lst) )
(cons (look (car lst) env )
(substi (cdr lst) env))
(cons (substi (car lst) env )
(substi (cdr lst) env)))))
(defun eva ( lst env)
(if (eq lst nil)
(print env)
(progn
(print (car lst))
(print env)
(eva (cdr lst)
(simple (substi (car lst) env) env)))))
(defun strict (lst)
(cond
( (numberp lst) lst)
( ( eq (car lst) '+ )
(+ (strict (cadr lst))
(strict (caddr lst))))
( ( eq (car lst) '* )
(* (strict (cadr lst))
(strict (caddr lst))))))
(defun solve (env)
(if (eq env nil)
nil
(progn
(print env)
(print (caar env) )
(solve
(substi (cdr env )
(list (list (caar env)
(print (strict (cadar env))))))))))
(setq env (simple test nil))
(setq temp (substi testtwo env))
(setq temp2 (wrapprecalc temp))
(setq temp3 (wrapprecalc temp2))
(setq temp4 (wraporder temp3))
(setq env (simple temp4 env))
(setq result (solve env) )
(eva material nil)
(setq material
'( (equtation (+ (* 2 a) (* 4 b) ) 20 )
(equtation (+ (* 3 a) (* 8 b) ) 40 )) )
(setq test '(equtation (+ (* 2 a) (* 4 b) ) 20 ) )
(setq testtwo '(equtation (+ (* 3 a) (* 8 b) ) 40 ) )
(B 5)(A 0)
(setq material
'( (equtation (+ (* 6 a) (* 7 b) ) 33 )
(equtation (+ (* 7 a) (* 8 b) ) 38 )) )
(setq test '(equtation (+ (* 6 a) (* 7 b) ) 33 ) )
(setq testtwo '(equtation (+ (* 7 a) (* 8 b) ) 38 ) )
(B 3) (A 2)
(defun simplehelperdivi (lst num)
(if (eq (print lst ) nil)
nil
(cond
( (or (eq (car lst) '-) (eq (car lst) '+) )
(cons (car lst)
(simplehelperdivi (cdr lst) num)))
( (eq (car lst) '*)
(list (car lst) (/ (cadr lst) num) (caddr lst)))
( (numberp (car lst) )
(cons (/ (car lst) num )
(simplehelperdivi (cdr lst) num)))
( (listp (car lst) )
(cons (simplehelperdivi (car lst) num )
(simplehelperdivi (cdr lst) num)))
(t (print 'over)))))
(defun simplehelper (lst)
(if (eq (car lst) '/)
(progn
(print lst)
( simplehelperdivi (cadr lst) (caddr lst) ))
(print 'error)))
(defun negative (lst)
(if (eq lst nil)
nil
(if (numberp (car lst) )
(cons (- 0 (car lst) ) nil)
(if (listp (car lst) )
(cons (negative (car lst) )
(negative (cdr lst)))
(if (eq (car (print lst )) '*)
(print (list (car lst) (- 0 (cadr lst) ) (caddr lst))))))))
(defun simple (lst env)
(if (eq (car lst) 'equtation)
(cond
( (eq (caadr lst) '+)
(progn
(print 'chenbing+)
( simple (list 'equtation
(cadadr lst)
(append (list '+ (caddr lst) )
(negative (cddadr lst))))
env ) ))
( (eq (caadr lst) '*)
(progn
(print 'chenbing*)
(print lst)
(cons
(append (list (caddr (cadr lst ))
(simplehelper (list '/ (caddr lst) (cadadr lst )))))
env)))
(t (print 'nothing)))
(print 'error)))
(defun look (let env)
(if (eq env nil)
let
(if (eq (caar env) let)
(cadar env)
(look let (cdr env)))))
(defun wrapprecalc (lst)
(list (car lst) (precalc (cadr lst) ) (caddr lst) ))
(if (listp (car left) )
(cons (emerge (car left) right)
(emerge (cdr left) right))
(defun emerge (left right )
(progn
(print 'start)
(print left)
(print right)
(if (eq left nil)
nil
(if (atom (car left) )
(cons (car left)
(emerge (cdr left) right))
(if (eq (caddar left) (caddr right) )
(cons (list (caar left)
(+ (cadar left) (cadr right))
(caddar left))
(emerge (cdr left) right))))))
)
(defun precalcmul (lst num)
(if (eq (print lst ) nil)
nil
(cond
( (or (eq (car lst) '-) (eq (car lst) '+) )
(cons (car lst)
(precalcmul (cdr lst) num)))
( (eq (car lst) '*)
(list (car lst) (* (cadr lst) num) (caddr lst)))
( (numberp (car lst) )
(cons (* (car lst) num )
(precalcmul (cdr lst) num)))
( (listp (car lst) )
(cons (precalcmul (car lst) num )
(precalcmul (cdr lst) num)))
(t (print 'over)))))
(defun wraporder (lst)
(list (car lst) (order (cadr lst) ) (caddr lst) ))
(defun order (lst)
(if (atom (cadr lst) )
(list (car lst) (caddr lst) (cadr lst) )
lst))
(defun precalc ( lst )
(cond
( (eq lst nil) nil)
( (and (or (eq (car lst) '+)(eq (car lst) '-) )
(not (atom (cadr lst)) )
(eq (caadr lst) '+))
(emerge (cadr lst) (caddr lst) ))
( (and (or (eq (car lst) '+)(eq (car lst) '-) )
(atom (cadr lst))
(atom (caddr lst)))
(+ (cadr lst) (caddr lst)))
( (or (eq (car lst) '+)(eq (car lst) '-) )
(cons (car lst)
(precalc (cdr lst))))
( (and (eq (car lst) '*) (listp (caddr lst) ) )
(precalcmul (caddr lst) (cadr lst) ))
( (listp (car lst) )
(progn
(print (car lst ))
(cons (precalc (car lst) )
(precalc (cdr lst )))))
(t lst)))
(defun substi ( lst env)
(if (or (eq lst nil) (eq env nil))
lst
(if (atom (car lst) )
(cons (look (car lst) env )
(substi (cdr lst) env))
(cons (substi (car lst) env )
(substi (cdr lst) env)))))
(defun eva ( lst env)
(if (eq lst nil)
(print env)
(progn
(print (car lst))
(print env)
(eva (cdr lst)
(simple (substi (car lst) env) env)))))
(defun strict (lst)
(cond
( (numberp lst) lst)
( ( eq (car lst) '+ )
(+ (strict (cadr lst))
(strict (caddr lst))))
( ( eq (car lst) '* )
(* (strict (cadr lst))
(strict (caddr lst))))))
(defun solve (env)
(if (eq env nil)
nil
(progn
(print env)
(print (caar env) )
(solve
(substi (cdr env )
(list (list (caar env)
(print (strict (cadar env))))))))))
(setq env (simple test nil))
(setq temp (substi testtwo env))
(setq temp2 (wrapprecalc temp))
(setq temp3 (wrapprecalc temp2))
(setq temp4 (wraporder temp3))
(setq env (simple temp4 env))
(setq result (solve env) )
(eva material nil)
相关文章推荐
- 一连浪了好几天了,一直没好好的学习,希望在运动会结束后能够好好的认真学习,下面是关于栈的链表形式的有关函数的实现,与上一个实现形式有所差别
- 第九周 【项目5-方程也是类】(为何未知变量用e不行)已解答
- CSS半透明滤镜在FIREFOX和IE下面的能够通用的写法
- ios 去掉UITableView Group形式下面的白色阴影
- protel99常用元件的电气图形符号和封装形式--奥研电子整理
- angular+敏感字段用符号代替+一个输入框下面显示文字
- 在多核平台下面,你的程序能够使用到多核能力的几分之几
- 判断无符号整数的二进制形式中是否包含偶数个1
- 向高手请教一下使用jacob打印word时出现的异常,有谁能够解答,谢谢!小女子感激不尽啊!
- protel99常用元件的电气图形符号和封装形式(二)
- 习题 5.14 用牛顿迭代法求下面方程在1.5附近的根:
- 符号能够被lambda的原因
- 到底怎样才能把下面的Matlab代码变成VBA形式啊
- 【verilog】fdisplay中如何保存有符号形式
- 如果我是面试官,我希望你能够按照以下思路解答这道编程题
- [偏微分方程教程习题参考解答]3.1二阶方程的特征
- 假设寄存器为8位,用补码形式存储机器数,包括一位符号位,那么十进制数-25在寄存器表示为:
- [物理学与PDEs]第2章第5节 一维流体力学方程组的 Lagrange 形式 5.2 Lagrange 坐标
- [物理学与PDEs]第4章习题4 一维理想反应流体力学方程组的守恒律形式及其 R.H. 条件
- 用牛顿迭代法求下面方程在1.5附近的跟