私はプロットしているデータセットを持っています。結果は以下の画像のようになります。 プロットの曲率を検出する
は、ここに私のpythonのコードです:私は主プロットの曲率をトレースし、追加のプロットを追加して達成しようとしています何
import numpy as np
# Extra plotly bits
import plotly
import plotly.plotly as py
import plotly.graph_objs as go
a = np.array([[1, 0.00617329], [24, 0.133699], [48, 0.130072], [72, 0.0166202], [96, -0.187917], [120, -0.445023], [144, -0.698984],
[168, -0.942063], [192, -1.15151], [216, -1.30742], [240, -1.36852], [264, -1.33541], [288, -1.18194], [312, -0.982113],
[336, -0.772301], [360, -0.562501], [384, -0.3764], [408, -0.219537], [432, -0.106257], [456, -0.0369356], [480, -0.000313192]])
trace_a = go.Scatter(
x = a[:,0],
y = a[:,1],
mode = 'lines+markers',
name = 'a',
line = dict(
shape='line',
color = ('rgb(205, 12, 24)'),
width = 1)
)
data = [trace_a]
# Edit the layout
layout = dict(title = 'Curvature Test',
xaxis = dict(title = 'Data'),
yaxis = dict(title = 'Value'),
)
# Prepare Figure
fig = go.Figure(data=data, layout=layout)
# Plot
plotly.offline.plot(fig, filename='curvature.html')
。
おそらく次の画像のように見えるであろう(これはプロトタイプであり、黄色のマーキングが第2のプロットは、最初のものの曲率を表していることを証明するだけである。)
私は正しいnumpy/maths解を見つけることができなかったので、データポイントごとに前と次の接線の内積計算を使って、これを他の環境で試作しました。
がどのように私はかつて、主1の曲率を表しますプロットされた第二のデータセットを作成することができますので、これは私の「悪い-Man's曲率」ソリューションはありますか?
免責事項: 私は以前この質問をしました。しかし、エレガントなソリューションを練習することはできませんでした。私は曲率の話題についても研究しており、私は曲率の計算を知っています。しかし、私はまだpython/numpyと適切な数学的手法を使ってこれをまとめるのに苦労しています。私はまた、次の時間を費やしましたpostしかし、私の問題を解決するために提供された情報を完全に移植することができませんでした。ここ
--- EDIT(1)---
は私の解決策の結果である:
関数の導関数をとり、与えられたθでJ(θ)に接する接線の傾きを計算し、傾きが正の場合は次の反復で最小に近づき、傾きそれは正接に触れると少し負の増加です、私はあなたが探しているものだと思いますか? –