例如,二次方程x^2 + 2x + 1 = 0
是关于某个未知数的声明x
。
因此,如果您替换x = -1
,则该声明成立,因为它等于0
。但是,如果您替换x = 1
,则该声明将不正确,因为您会得到4
。
现在我被告知要开发一个函数来测试一些问题是否实际上是一个解决方案。
下面我将从哪里开始?
10x – 6 = 7x + 9
这完全取决于所选的函数表示。如果您将它们作为 lambdas 传递,则测试“声明”是真还是假是微不足道的:
(define (test-claim f1 f2 x)
(= (f1 x) (f2 x)))
For example:
; x^2 + 2x + 1 = 0, x = -1
(test-claim (lambda (x) (+ (* x x) (* 2 x) 1))
(lambda (x) 0)
-1)
=> #t
; x^2 + 2x + 1 = 0, x = 1
(test-claim (lambda (x) (+ (* x x) (* 2 x) 1))
(lambda (x) 0)
1)
=> #f
; 10x – 6 = 7x + 9, x = 5
(test-claim (lambda (x) (- (* 10 x) 6))
(lambda (x) (+ (* 7 x) 9))
5)
=> #t
; 10x – 6 = 7x + 9, x = 10
(test-claim (lambda (x) (- (* 10 x) 6))
(lambda (x) (+ (* 7 x) 9))
10)
=> #f