Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何求解给定x的函数?_R_Function - Fatal编程技术网

R 如何求解给定x的函数?

R 如何求解给定x的函数?,r,function,R,Function,我已经浏览了很多帮助页面,但是我没有找到解决我的-可能-简单问题的方法。 我定义了一个函数 funB <- function(x) (0.8042851 + ((3.9417843-0.8042851)/(1+((x/0.4039609)^(-3.285016))))) funB如果您想找到x的值,使funB(x)等于0.2,您可以这样做: funB <- function(x) (0.8042851 + ((3.9417843-0.8042851)/(1+(

我已经浏览了很多帮助页面,但是我没有找到解决我的-可能-简单问题的方法。 我定义了一个函数

funB <- function(x) (0.8042851 + 
    ((3.9417843-0.8042851)/(1+((x/0.4039609)^(-3.285016))))) 

funB如果您想找到
x
的值,使
funB(x)
等于0.2,您可以这样做:

funB <- function(x) (0.8042851 + 
    ((3.9417843-0.8042851)/(1+((x/0.4039609)^(-3.285016))))) 
target <- 0.2
uniroot(function(x) funB(x)-target, interval=c(-5,10))

funB为了确保在您期望的位置有一个根,请绘制
funB
的图形

curve(funB)
定义一个辅助函数,
f
,获取一个额外的参数,并为
a=
求解这个新函数


嗯,我想我一定喜欢用艰苦的方式做事。我刚刚重新排列了你的函数以找到它的倒数:

funC <- function(y) (((3.137499)/(y - 0.8042851) - 1)^(-1/3.285016)) * 0.4039609
果然

funB(0.860193)
#> [1] 3.7
或者确实

funB(funC(1))
#> [1] 1
正如其他人所指出的,x在
funB(x)==0.2时没有实际值,如图中所示:

curve(funC, 0, 4)

现在,如果您确实想知道复数根,其中
funB(x)==0.2
,那么您可以这样修改
funC

funC <- function(y) (((3.137499)/(as.complex(y) - 0.8042851) - 1)^(-1/3.285016)) * 0.4039609
因此,您的问题的答案是0.1336917+/-0.1894797i

funB(complex(real = 0.133691691, imaginary = 0.1894797))
[1] 0.1999996+0i

够近了。

你能澄清一下吗@LenGreski的答案可能是你想要的,但不知何故似乎太简单了?@BenBolker我相信OP想要
funB(x)==0.2
。这是我怀疑的,但不是他们说的…@BenBolker-你是对的,这一切都取决于Crystal“solve”的意思。你可以使用
plot来绘制你的函数(funB,to=100,from=-100)
。从数学上讲,对于x=0,函数的最小实数为0.8,因此funB(x)没有根或解也就不足为奇了=0.2对target=2有效,但对target=0.2的请求值无效…@BenBolker是的,它没有根。问题不是很清楚,我相信
0.2
只是一个例子,不是很好的例子。谢谢,这正是我要找的!当我提出这个问题时,x=0.2是指一个随机变量举例来说,我现在看到的是一个糟糕的函数,因为它不会在这个函数中产生任何结果……或者你可以找到复数根,正如我(可能是开玩笑的)的回答加上一个来解释为什么x<0的函数是
NaN
。加上一个来将虚数带入方程(双关语)。这在我脑海中闪过(不是解析地反转函数,而是将问题扩展到复域):但是,说明-8的立方根有点不方便:
(-8+0i)^(1/3)
给出了“错误”的根(1+1.732051i,不是-2);您必须转到
多根(c(-8,0,01))
获得所有三个根,这似乎太离谱了…顺便问一下,你知道这是否是一个唯一的解决方案吗…?BenBolker有两个根-虚构的是a+/-。我认为没有其他根。你可以绘制
funC
并看一看。
funB(funC(1))
#> [1] 1
curve(funC, 0, 4)
funC <- function(y) (((3.137499)/(as.complex(y) - 0.8042851) - 1)^(-1/3.285016)) * 0.4039609
funC(0.2)
#> [1] 0.1336917+0.1894797i
funB(complex(real = 0.133691691, imaginary = 0.1894797))
[1] 0.1999996+0i