例如,二次方程x^2 + 2x + 1 = 0
是关于某个未知数x
的声明。
因此,如果您替换x = -1
,则声明会保留,因为它等于0
。
但是,如果您替换x = 1
,则该声明将不正确,因为您将获得4
。
现在我被告知要开发一个功能,测试一些问题是否实际上是一个解决方案。
下面我将从哪里开始?
10x – 6 = 7x + 9
答案 0 :(得分:1)
这一切都取决于所选择的功能表示。如果你将它们作为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