![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте, вот собственно код. Помогите пожалуйста его реализовать, кого не сильно затруднит может показать в Delphi с исходниками! Мне просто сдавать надо, а я никак не могу понять! Очень, очень прошу вас о помощи!
Код:
procedure LinearRegression(ValueArray, ArgumentArray: TDoubleArray; SourceSeries, DestSeries: TChartSeries; var MainCoef, FreeCoef: double; SeriesColor: TColor; var Hint: string); var b0, b1, xsum, ysum, pxy, xsqua: double; y, x: array of double; i, N: integer; s: string; begin if ValueArray <> nil then N := Length(ValueArray) else N := SourceSeries.XValues.Count; pxy := 0; xsqua := 0; SetLength(x, N); SetLength(y, N); for i := 0 to N - 1 do begin if ValueArray <> nil then begin y[i] := ValueArray[i]; x[i] := ArgumentArray[i]; end else begin y[i] := SourceSeries.YValues.Value[i]; x[i] := SourceSeries.XValues.Value[i]; end; pxy := pxy + x[i] * y[i]; xsqua := xsqua + x[i] * x[i]; end; xsum := Sum(x); ysum := Sum(y); b1 := (xsum * ysum - N * pxy) / (xsum * xsum - N * xsqua); b0 := (ysum - b1 * xsum) / N; MainCoef := b1; FreeCoef := b0; if DestSeries <> nil then for i := 0 to N - 1 do if ValueArray <> nil then DestSeries.AddXY(ArgumentArray[i], b1 * ArgumentArray[i] + b0, '', SeriesColor) else DestSeries.AddXY(SourceSeries.XValues.Value[i], b1 * SourceSeries.XValues.Value[i] + b0, '', SeriesColor); if b0 < 0 then s := '' else s := '+ '; Hint := Format('%0.3f', [b1]) + '*X ' + s + Format('%0.3f', [b0]); x := nil; y := nil; end; |
#2
|
|||
|
|||
![]() Ребят пож помогите, очень прошу вас! Ну кому не сложно, очень буду признателен! Покажите как сделать, желательно с исходниками!
|
#3
|
|||
|
|||
![]() Никто не поможет?? Ну хотя бы подскажите как сделать, ну что не будь даже ((((
|
#4
|
|||
|
|||
![]() Вот из старого архива выкопал.
Вроде рабочий код был, но сейчас не проверял. Но Вам же еще вроде бы и на график надо положить... Код:
function Regresi1(TheArrayX,TheArrayY : ARRAY of real;Var A,B : real) : Boolean; {Вычисление коэфф.A,B по Регресс-Функции : Y=A*X+B} Var S1,S2,S3,S4,Z : DOUBLE; N,i : LongInt; begin Result:=FALSE; A:=0; B:=0; if (HIGH(TheArrayX)-LOW(TheArrayX)) = (HIGH(TheArrayY)-LOW(TheArrayY)) then begin N:=HIGH(TheArrayX)-LOW(TheArrayX)+1; if N>2 then begin S1:=0; S2:=0; S3:=0; S4:=0; for i:=LOW(TheArrayX) to HIGH(TheArrayX) do begin s1:=s1+TheArrayX[i]; s2:=s2+TheArrayY[i]; s3:=s3+TheArrayX[i]*TheArrayY[i]; s4:=s4+TheArrayX[i]*TheArrayX[i]; end; Z:=N*s4-s1*s1; if Z<>0 then begin Result:=TRUE; A:=(N*s3-s1*s2)/z; B:=(s2*s4-s3*s1)/z; end; end; end; end; Код:
function Regresi2(TheArrayX,TheArrayY : ARRAY of real;Var A,B,C : real) : Boolean; {Вычисление коэфф.A,B,C по Регресс-Функции : Y=A*X^2+B*X+C} Var S1,S2,S3,S4,S5,S6,S7,Z : DOUBLE; N,i : LongInt; begin Result:=FALSE; A:=0; B:=0; C:=0; if (HIGH(TheArrayX)-LOW(TheArrayX)) = (HIGH(TheArrayY)-LOW(TheArrayY)) then begin N:=HIGH(TheArrayX)-LOW(TheArrayX)+1; if N>3 then begin S1:=0; S2:=0; S3:=0; S4:=0; S5:=0; S6:=0; S7:=0; for i:=LOW(TheArrayX) to HIGH(TheArrayX) do begin s1:=s1+TheArrayX[i]; s2:=s2+TheArrayX[i]*TheArrayX[i]; s3:=s3+TheArrayX[i]*TheArrayX[i]*TheArrayX[i]; s4:=s4+TheArrayX[i]*TheArrayX[i]*TheArrayX[i]*TheArrayX[i]; s5:=s5+TheArrayY[i]; s6:=s6+TheArrayX[i]*TheArrayY[i]; s7:=s7+TheArrayX[i]*TheArrayX[i]*TheArrayY[i]; end; Z:=N*(s2*s4-s3*s3)+s1*(s2*s3-s1*s4)+s2*(s1*s3-s2*s2); if Z<>0 then begin Result:=TRUE; A:=(s7*(N*s2-s1*s1)+s6*(s1*s2-N*s3)+s5*(s1*s3-s2*s2))/z; B:=(s7*(s1*s2-N*s3)+s6*(N*s4-s2*s2)+s5*(s2*s3-s1*s4))/z; C:=(s7*(s1*s3-s2*s2)+s6*(s2*s3-s1*s4)+s5*(s2*s4-s3*s3))/z; end; end; end; end; Код:
function Regresi3(TheArrayX,TheArrayY : ARRAY of real;Var A,B,C,D : real) : Boolean; {Вычисление коэфф.A,B,C,D по Регресс-Функции : Y=A*X^3+B*X^2+C*X+D} Var S1,S2,S3,S4,S5, S6,S7,S8,S9,S10, Z,Za,Zb,Zc,Zd : DOUBLE; N,i : LongInt; begin Result:=FALSE; A:=0; B:=0; C:=0; D:=0; if (HIGH(TheArrayX)-LOW(TheArrayX)) = (HIGH(TheArrayY)-LOW(TheArrayY)) then begin N:=HIGH(TheArrayX)-LOW(TheArrayX)+1; if N>4 then begin S1:=0; S2:=0; S3:=0; S4:=0; S5:=0; S6:=0; S7:=0; S8:=0; S9:=0; S10:=0; for i:=LOW(TheArrayX) to HIGH(TheArrayX) do begin s1:=s1+TheArrayX[i]; s2:=s2+TheArrayX[i]*TheArrayX[i]; s3:=s3+TheArrayX[i]*TheArrayX[i]*TheArrayX[i]; s4:=s4+TheArrayX[i]*TheArrayX[i]*TheArrayX[i]*TheArrayX[i]; s5:=s5+TheArrayX[i]*TheArrayX[i]*TheArrayX[i]*TheArrayX[i]*TheArrayX[i]; s6:=s6+TheArrayX[i]*TheArrayX[i]*TheArrayX[i]*TheArrayX[i]*TheArrayX[i]*TheArrayX[i]; s7:=s7+TheArrayY[i]; s8:=s8+TheArrayX[i]*TheArrayY[i]; s9:=s9+TheArrayX[i]*TheArrayX[i]*TheArrayY[i]; s10:=s10+TheArrayX[i]*TheArrayX[i]*TheArrayX[i]*TheArrayY[i]; end; za:=s10*(N*(s2*s4-s3*s3)+s1*(s2*s3-s1*s4)+ s2*(s1*s3-s2*s2))+s9*(N*(s3*s4-s2*s5)+ s1*(s1*s5-s3*s3)+s2*(s2*s3-s1*s4))+ s8*(N*(s3*s5-s4*s4)+s1*(s3*s4-s2*s5)+ s2*(s2*s4-s3*s3))+s7*(s1*(s4*s4-s3*s5)+ s2*(s2*s5-s3*s4)+s3*(s3*s3-s2*s4)); zb:=s10*(N*(s3*s4-s2*s5)+s1*(s1*s5-s3*s3)+ s2*(s2*s3-s1*s4))+s9*(s1*(s3*s4-s1*s6)+ s2*(N*s6-s3*s3)+s4*(s1*s3-N*s4))+ s8*(N*(s4*s5-s3*s6)+s1*(s2*s6-s3*s5)+ s3*(s3*s3-s2*s4))+s7*(s1*(s3*s6-s4*s5)+ s2*(s3*s5-s2*s6)+s4*(s2*s4-s3*s3)); Zc:=s10*(N*(s3*s5-s4*s4)+s1*(s3*s4-s2*s5)+ s2*(s2*s4-s3*s3))+s9*(N*(s4*s5-s3*s6)+ s1*(s2*s6-s3*s5)+s3*(s3*s3-s2*s4))+ s8*(s2*(s3*s5-s2*s6)+s4*(N*s6-s3*s3)+ s5*(s2*s3-N*s5))+s7*(s1*(s5*s5-s4*s6)+ s2*(s3*s6-s4*s5)+s3*(s4*s4-s3*s5)); zd:=s10*(s1*(s4*s4-s3*s5)+s2*(s2*s5-s3*s4)+ s3*(s3*s3-s2*s4))+s9*(s1*(s3*s6-s4*s5)+ s2*(s3*s5-s2*s6)+s4*(s2*s4-s3*s3))+ s8*(s1*(s5*s5-s4*s6)+s2*(s3*s6-s4*s5)+ s3*(s4*s4-s3*s5))+s7*(s2*(s4*s6-s5*s5)+ s3*(s4*s5-s3*s6)+s4*(s3*s5-s4*s4)); Z :=s6*(N*(s2*s4-s3*s3)+s1*(s2*s3-s1*s4)+ s2*(s1*s3-s2*s2))+s5*(N*(s3*s4-s2*s5)+ s1*(s1*s5-s3*s3)+s2*(s2*s3-s1*s4))+ s4*(N*(s3*s5-s4*s4)+s1*(s3*s4-s2*s5)+ s2*(s2*s4-s3*s3))+s3*(s1*(s4*s4-s3*s5)+ s2*(s2*s5-s3*s4)+s3*(s3*s3-s2*s4)); if Z<>0 then begin Result:=TRUE; A:=za/z; B:=zb/z; C:=zc/z; D:=zd/z; end; end; end; end; |
#5
|
|||
|
|||
![]() Спасибо, но мне это ничего не дало..код то я и сам написал + мне надо с графиком! Я то написал уже готовый код! Прошу реализовать в дельфи, с исходниками! А может у кого уже есть исходники готовые этой программы!
Последний раз редактировалось Lenovo, 17.12.2010 в 07:34. |
#6
|
|||
|
|||
![]() а где описание TDoubleArray?
Цитата:
![]() В чем проблема? у вас есть готовая процедура, загрузите дельфю, вставьте процедуру, она же кстати у вас и должна вырисовывать график, судя по коду. Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#7
|
|||
|
|||
![]() Цитата:
|