掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Chartでグラフをきれいに表示させるには?? (ID:5374)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Mr.XRAYさんお返事ありがとうございます。 Mr.XRAY産の言われたとうり 2次元の実験データの測定点など結ぶ曲線を描きたいのですが Chartで描いたほうが、座標で点を決めることができるので よいかとおもったもですが、以下のようなスプライン補間の プログラムを書いたのですが、プログラムに問題があるのでしょうか? Var NDiv:integer; XDiv: double; Q1:double; H1:double; P1:double; E1:double; Xs,Ys1,Ys2,Ys3: PDArray; // pointer to array of double; Ns: integer; begin Chart1.Series[1].clear; Chart2.Series[1].clear; Chart4.Series[1].clear; Ns:=200; // 節点の個数 GetMem( Xs, Ns*8); GetMem( Ys1, Ns*8); GetMem( Ys2, Ns*8); GetMem( Ys3, Ns*8); Case ComboBox1.ItemIndex of // 補間法を設定 0: Interpolate1.Method:=Linear; 1: Interpolate1.Method:=Square; 2: Interpolate1.Method:=CSpline; end; Case ComboBox2.ItemIndex of // 補間法を設定 0: Interpolate1.Method:=Linear; 1: Interpolate1.Method:=Square; 2: Interpolate1.Method:=CSpline; end; Case ComboBox1.ItemIndex of // 補間法を設定 0: Interpolate3.Method:=Linear; 1: Interpolate3.Method:=Square; 2: Interpolate3.Method:=CSpline; end; For i:=1 to Ns do begin Xs[i]:=i; Ys1[i]:=(3*Power(Xs[i],3))+(2*Power(Xs[i],2))+(0.2*Xs[i])+6; Ys2[i]:=(3*Power(Xs[i],3))+(0.45*Power(Xs[i],2))+(0.03*Xs[i])+6; Ys3[i]:= 16.3 * Xs[i] * Ys1[i] / Ys2[i]*8 ; end; Interpolate1.DKnot( Ns, Xs, Ys1 ); Interpolate2.DKnot( Ns, Xs, Ys2 ); Interpolate3.DKnot( Ns, Xs, Ys3 ); NDiv:=StrToInt(Edit1.Text); XDiv:=(Xs[Ns]-Xs[1])/NDiv; for i:=0 to NDiv do begin Q1:=XDiv*i; H1:=Interpolate1.Value(Q1) ; //与えられたX値に対する補間値を計算する P1:=Interpolate2.Value(Q1) ; E1:=Interpolate3.Value(Q1) ; Chart1.Series[1].AddXY(Q1,H1); Chart2.Series[1].AddXY(Q1,P1); Chart4.Series[1].AddXY(Q1,E1); end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.