質問: 曲線グラフからピーク値を求める方法 vb6のプログラムでちょっとつまづいているのでどなたか分かる方いらっしゃいましたら助言お願いいたします。 今、sinカーブのような曲線があるとします。 このsinカーブの極大値、極小値をもとめたいんですが; 微分を使わずに簡単に行ういい方法ってないでしょうか? ちなみに自分は y座標方向のデータをyy(800)の配列にすべてのデータを入れておいて yの最大値をymax(50)のように配列しておき 範囲を手入力で指定し、for 文でループさせ、その中に条件式を書いて 求めています。実際にはこんな感じです。 これは最大値をもとめるときのものです ymax(0)=0 for i= 0 to 800 if ymax(0)
回答: 微分といってもさほど難しく無いように思いますが y成分の現時点と次との傾きが0または逆転する部分を見つければいいのではないでしょうか 800個のデータがあるのであれば dim oldangle as double, angle as double dim cnt as integer oldangle = y(1) - y(0) cnt = 0 for n = 1 to 799 ' 800-1 angle = y(n+1) - y(n) if sgn(oldangle) <> sgn(angle) or angle = 0 then ymax(cnt) = y(n) cnt = cnt + 1 end if next # angle=0は round(angle,8)などで丸めておいてからのほうがいいかも