如何在R中比较三角函数?

3
如何证明这两个函数相等?
a<-function(x) sec^2(x)
b<-function(x) 1+tan^2(x)

我尝试使用identical,但它显示为false。

identical(a,b)
[1] FALSE

我建议您使用Ryacas软件包来实现这个功能。 - PaulS
R的默认包中没有sec函数。它来自哪里? - jdobres
3
(1) 你有一个sec函数吗?我没有,所以我必须定义它:sec <- function(x) 1/sin(x),或直接使用 1/sin(x)。 (2) 在R中,编写第一个函数的方法是sec(x)^2,而不是sec^2(x)。 (3) identical(a,b)用于测试两个函数是否相等,你需要测试函数的结果 - r2evans
2
@r2evans: 请注意,sec(x) = 1 / cos(x) - PaulS
2
是的,你说得对,这只是一个快速的打字过程,旨在传达要点。除此之外,评论仍然有效。 - r2evans
2个回答

5

只使用基本的R,您可以取一些x值的范围,计算这些值对于两个函数的结果,并检查它们是否相等。

a <- function(x) (1/cos(x))^2

b <- function(x) 1 + tan(x)^2

x <- seq(from = -2 * pi, to = 2*pi, length.out = 1e4)

all.equal(a(x), b(x))
# TRUE

0

如果您已经安装了Maxima(免费软件),您可以使用rim

library(rim)
#> Maxima successfully registered as knitr engine!

maxima.get("trigsimp(1+(tan(x))^2 - (sec(x))^2);")
#> (%o1) 0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接