procedure TMainForm.CurveFitActionExecute(Sender: TObject);
var
i,N: Integer;
a: array [0..2] of Double;
b: Double;
begin
PLine.Clear;
FitterA.AddPoints(PointsA);
FitterA.ReCalculate;
//PLine.Repaint;
Formula := 'ymin + ';
N := FitterA.PolyDegree;
//--------------------------------------------------------------------------
//·ÖÅäÄÚ´æ
Fcoef := nil;
SetLength(Fcoef, N);
//--------------------------------------------------------------------------
for i:=0 to 2 do a[i] := FitterA.AnswerVector[i+1];
b := FitterA.ParentSeries.MinXValue;
Fcoef[0] := FitterA.ParentSeries.MinYValue +
a[0] - a[1] * b + a[2] * b * b;
Fcoef[1] := a[1] - 2 * a[2] * b;
Fcoef[2] := a[2];
//--------------------------------------------------------------------------
for i:=0 to N-1 do
begin
if i=0 then
Formula := Formula + Format('%.5e',[FitterA.AnswerVector[i+1]])
else
Formula := Formula + ' + ' +
Format('%.5e * (x - xmin)^%d',[FitterA.AnswerVector[i+1], i]);
end;
//--------------------------------------------------------------------------
for i:=0 to N-1 do
begin
if i=0 then
FormulB := FormulB + Format('%.5e',[Fcoef[i]])
else
FormulB := FormulB + ' + ' +
Format('%.5e * x^%d',[Fcoef[i], i]);
end;
//--------------------------------------------------------------------------
for i:=0 to N-1 do
begin
if i=0 then
FormulC := FormulC + Format('%.5e',[Fcoef[i]])
else
FormulC := FormulC +
Format(#9 + ' %.5e',[Fcoef[i], i]);
end;
stat1.Panels[1].Text := Formula + ' | ' + FormulB + '|' + FormulC;
end;
var
i,N: Integer;
a: array [0..2] of Double;
b: Double;
begin
PLine.Clear;
FitterA.AddPoints(PointsA);
FitterA.ReCalculate;
//PLine.Repaint;
Formula := 'ymin + ';
N := FitterA.PolyDegree;
//--------------------------------------------------------------------------
//·ÖÅäÄÚ´æ
Fcoef := nil;
SetLength(Fcoef, N);
//--------------------------------------------------------------------------
for i:=0 to 2 do a[i] := FitterA.AnswerVector[i+1];
b := FitterA.ParentSeries.MinXValue;
Fcoef[0] := FitterA.ParentSeries.MinYValue +
a[0] - a[1] * b + a[2] * b * b;
Fcoef[1] := a[1] - 2 * a[2] * b;
Fcoef[2] := a[2];
//--------------------------------------------------------------------------
for i:=0 to N-1 do
begin
if i=0 then
Formula := Formula + Format('%.5e',[FitterA.AnswerVector[i+1]])
else
Formula := Formula + ' + ' +
Format('%.5e * (x - xmin)^%d',[FitterA.AnswerVector[i+1], i]);
end;
//--------------------------------------------------------------------------
for i:=0 to N-1 do
begin
if i=0 then
FormulB := FormulB + Format('%.5e',[Fcoef[i]])
else
FormulB := FormulB + ' + ' +
Format('%.5e * x^%d',[Fcoef[i], i]);
end;
//--------------------------------------------------------------------------
for i:=0 to N-1 do
begin
if i=0 then
FormulC := FormulC + Format('%.5e',[Fcoef[i]])
else
FormulC := FormulC +
Format(#9 + ' %.5e',[Fcoef[i], i]);
end;
stat1.Panels[1].Text := Formula + ' | ' + FormulB + '|' + FormulC;
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货