Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.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和y值_R_Curve_Algebra - Fatal编程技术网

R找到曲线急剧变化的x和y值

R找到曲线急剧变化的x和y值,r,curve,algebra,R,Curve,Algebra,我有一个包含两列x,y的数据集,如下所示 x y 0.5789474 0.0011382324 1.0000000 0.0024540588 0.8000000 0.0017039382 0.7272727 0.0014921618 0.8421053 0.0018399977 0.8611111 0.0019049152 0.3750000 0.0007843210 0.7837838 0.00165425

我有一个包含两列x,y的数据集,如下所示

  x           y
  0.5789474   0.0011382324
  1.0000000   0.0024540588
  0.8000000   0.0017039382
  0.7272727   0.0014921618
  0.8421053   0.0018399977
  0.8611111   0.0019049152
  0.3750000   0.0007843210
  0.7837838   0.0016542579
  0.7222222   0.0014784711
  0.7619048   0.0015895130
  0.7435897   0.0015372644
  0.4375000   0.0008791528
  0.8750000   0.0019537960
  0.6666667   0.0013359048
  0.8750000   0.0019537960
  0.8571429   0.0018911749
  0.6896552   0.0013931524
  1.0000000   0.0024540588
  0.9285714   0.0021543502
  0.9523810   0.0022499579
绘制这些值会生成如下图形

  x           y
  0.5789474   0.0011382324
  1.0000000   0.0024540588
  0.8000000   0.0017039382
  0.7272727   0.0014921618
  0.8421053   0.0018399977
  0.8611111   0.0019049152
  0.3750000   0.0007843210
  0.7837838   0.0016542579
  0.7222222   0.0014784711
  0.7619048   0.0015895130
  0.7435897   0.0015372644
  0.4375000   0.0008791528
  0.8750000   0.0019537960
  0.6666667   0.0013359048
  0.8750000   0.0019537960
  0.8571429   0.0018911749
  0.6896552   0.0013931524
  1.0000000   0.0024540588
  0.9285714   0.0021543502
  0.9523810   0.0022499579

我的目标是找到曲线斜率或变化率最大的x和y值。弯曲或曲线最尖锐的位置。我试过了

(导线(y)-y)/(导线(x)-x)
,这是无效的。如有任何建议,我们将不胜感激。提前谢谢。

很高兴见到你,野牛

依我看,, 您的代码在排序后运行良好

我不知道你为什么说
(铅(y)-y)/(铅(x)-x)
不起作用。 见以下代码:

x <- sort(c(
  0.5789474,1.0000000,
  0.8000000,0.7272727,
  0.8421053,0.8611111,
  0.3750000,0.7837838,
  0.7222222,0.7619048,
  0.7435897,0.4375000,
  0.8750000,0.6666667,
  0.8750000,0.8571429,
  0.6896552,1.0000000,
  0.9285714,0.9523810
))
y <- sort(c(
  0.0011382324,0.0024540588,
  0.0017039382,0.0014921618,
  0.0018399977,0.0019049152,
  0.0007843210,0.0016542579,
  0.0014784711,0.0015895130,
  0.0015372644,0.0008791528,
  0.0019537960,0.0013359048,
  0.0019537960,0.0018911749,
  0.0013931524,0.0024540588,
  0.0021543502,0.0022499579
))

> (lead(y)-y)/(lead(x)-x)
 [1] 0.001517309 0.001831632 0.002253465 0.002490271 0.002619790
 [6] 0.002710761 0.002764148 0.002852761 0.002959226 0.003063622
[11] 0.003231410 0.003403282 0.003462603 0.003519415         NaN
[16] 0.003743680 0.004015511 0.004286123         NaN          NA

x[which.max((lead(y)-y)/(lead(x)-x))]
y[which.max((lead(y)-y)/(lead(x)-x))]

x我在给指针:

df = read.table(text=" 
   0.5789474   0.0011382324
   1.0000000   0.0024540588
   0.8000000   0.0017039382
   0.7272727   0.0014921618
   0.8421053   0.0018399977
   0.8611111   0.0019049152
   0.3750000   0.0007843210
   0.7837838   0.0016542579
   0.7222222   0.0014784711
   0.7619048   0.0015895130
   0.7435897   0.0015372644
   0.4375000   0.0008791528
   0.8750000   0.0019537960
   0.6666667   0.0013359048
   0.8750000   0.0019537960
   0.8571429   0.0018911749
   0.6896552   0.0013931524
   1.0000000   0.0024540588
   0.9285714   0.0021543502
   0.9523810   0.0022499579",header=FALSE)
现在计算坡度:

slope=diff(df$V2)/diff(df$V1)

从最大坡度中检索相应的x、y点:

df[which.max(slope),]
输出:

    V1          V2
 18  1 0.002454059

请随时纠正我

请澄清你的问题。最大坡度位于最右侧的两个点之间。你是如何得出红蓝线的?你说的“曲线急剧变化”是什么意思?最大曲率?你是想把它用于原始数据,还是对平滑后的结果更感兴趣?@最大曲率,是的,这就是我要寻找的,现在我要通过maxcurv函数,对于你的数据,你可以简单地用
lm
拟合一个三次多项式,然后解析求解。在一般情况下,您可以使用如图所示的非参数方法(但请注意,这是一个非常简单的近似,您还需要找到正确的平滑度)。:-)很高兴见到您Steve,为什么我要分别对x和y进行排序。我会不会丢失x,y的正确顺序?你没有错,但是罗纳德提到了一些让我好奇的话题,我认为这些话题更相关。