gpt4 book ai didi

plot - 如何使用 Racket 绘制 3 维图形

转载 作者:太空宇宙 更新时间:2023-11-03 18:53:35 25 4
gpt4 key购买 nike

我正在使用 Racket 和 Dr. Racket。有一个名为 plot 的很棒的库,它允许您绘制 2D 或 3D 图形。

导入包后:

(require plot)

我可以绘制类似 f(x,y) = 3 * x 的图表:

(plot3d (surface3d (lambda (x y) (* x 3)) (- 10) 10 (- 10) 10))

enter image description here

但是,当我尝试绘制这个等式时:

f (x,y,z) = 2(x-2)^2 + (y-1)^2+(z-3)^2 - 10

(plot3d (surface3d (lambda (x y z) (+ (* 2 (expt (- x 2) 2))
(expt (- y 1) 2)
(expt (- z 3) 2)
-10))
(- 10) 10 (- 10) 10))

我收到一条我无法理解的错误消息:

surface3d: contract violation
expected: a procedure that accepts 2 non-keyword argument
given: #<procedure:...top/graficos.rkt:14:19>
in: the 1st argument of
(->*
((-> any/c any/c Real))
((or/c Real #f)
(or/c Real #f)
(or/c Real #f)
(or/c Real #f)
#:alpha
Nonnegative-Real
#:color
(or/c
Integer
Symbol
String
(recursive-contract g147 #:impersonator)
(cons/c
Real
(cons/c Real (cons/c Real '()))))
#:label
(or/c #f String)
#:line-color
(or/c
Integer
Symbol
String
(recursive-contract g147 #:impersonator)
(cons/c
Real
(cons/c Real (cons/c Real '()))))
#:line-style
(or/c
Integer
'transparent
'solid
'dot
'long-dash
'short-dash
'dot-dash)
#:line-width
Nonnegative-Real
#:samples
Positive-Integer
#:style
(or/c
Integer
'transparent
'solid
'bdiagonal-hatch
'crossdiag-hatch
'fdiagonal-hatch
'cross-hatch
'horizontal-hatch
'vertical-hatch)
#:z-max
(or/c Real #f)
#:z-min
(or/c Real #f))
any)
contract from:
<pkgs>/plot-lib/plot/private/plot3d/surface.rkt
blaming: /home/pedro/Desktop/graficos.rkt
(assuming the contract is correct)
at: <pkgs>/plot-lib/plot/private/plot3d/surface.rkt:49.9

绝对有可能将其绘制成图表。我是在 Wolfram Alpha 上做的:

enter image description here

最佳答案

无论 Racket 实现的细节如何,您尝试做的事情都是没有意义的。您正在尝试绘制一个从 R^3 映射到 R 的函数,但您不能将其作为 3 维的曲面图进行绘制:您需要 4 个。

因此,就此问题的答案而言,就是重新考虑您要尝试做的事情。一种方法是柯里化(Currying)你的函数,这样你就可以为它的一个参数的固定值绘制它:(plot3d (surface3d (curryr (lambda (x y z) ...) 3.0) ...)) 例如,将为 z=3.0 绘制它。

关于plot - 如何使用 Racket 绘制 3 维图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40208560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com