ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ производствСнных систСм ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠœΠ΅Ρ‚ΠΎΠ΄ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ сСчСния являСтся Π΄Ρ€Π΅Π²Π½ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ дСлСния ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°. Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±Ρ‹Π» рассмотрСн Π•Π²ΠΊΠ»ΠΈΠ΄ΠΎΠΌ. Π’ΠΎΠ³Π΄Π° этим ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π° Ρ€Π°Π²Π½Ρ‹Π΅ ΠΏΡΡ‚ΡŒ частСй для построСния пятиконСчной Π·Π²Π΅Π·Π΄Ρ‹. БСгодня этот ΠΌΠ΅Ρ‚ΠΎΠ΄ примСняСтся Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ производствСнных систСм ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠšΠΎΡ€Π½ΠΈ уравнСния: 1.3 748 779Π’Ρ‹Π²ΠΎΠ΄: ΠΌΠ΅Ρ‚ΠΎΠ΄ биссСкций всСгда Π΄Π°Ρ‘Ρ‚ приблиТСния ΠΊ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ значСния… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ производствСнных систСм ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

1. РСшСния алгСбраичСских ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ выдСлСния ΠΊΠΎΡ€Π½Π΅ΠΉ

1.1 ΠšΡ€Π°Ρ‚ΠΊΠΈΠ΅ тСорСтичСскиС свСдСния

1. ΠŸΡ€ΠΈΡ€Π°Ρ‰Π΅Π½ΠΈΡ ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ся достаточно большими числами

2. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅Ρ…Ρ‡Π»Π΅Π½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ, .

3. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ элСмСнты Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ²:, .

4. Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΈ (- Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ расчСтов) Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ вычислСния ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ схСмС (ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ†ΠΈΠΊΠ»ΠΎΠΌ while):

; для;; для; ;;; .

5. Если, Ρ‚ΠΎ ΠΊΠΎΡ€Π½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ, ΠΈΠ½Π°Ρ‡Π΅ — комплСксно сопряТСнными. НСобходимо ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ расчСт ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΡ€Π½Π΅ΠΉ: ΠΏΡ€ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… корнях

;

ΠΏΡ€ΠΈ комплСксно сопряТСнных корнях

6. Если (здСсь N — порядок уравнСния), Ρ‚ΠΎ; для; ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΏΡƒΠ½ΠΊΡ‚Ρƒ 1. Π˜Π½Π°Ρ‡Π΅ осущСствляСм Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ x ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

1.2 Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, Buttons, StdCtrls, ExtCtrls;

type

TKovalenko_Form1 = class (TForm)

Kovalenko_Label1: TLabel;

Kovalenko_Button1: TButton;

Kovalenko_Edit1: TEdit;

Kovalenko_Edit2: TEdit;

Kovalenko_Edit3: TEdit;

Kovalenko_Edit4: TEdit;

Kovalenko_Edit5: TEdit;

Kovalenko_Edit6: TEdit;

Kovalenko_Edit7: TEdit;

Kovalenko_BitBtn1: TBitBtn;

Kovalenko_StringGrid1: TStringGrid;

Image1: TImage;

procedure Kovalenko_Button1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

type mas=array[1.7] of real;

var

Kovalenko_Form1: TKovalenko_Form1;

a, B, C, xRe, xIm: mas;n, i: integer;p, q, dp, dq, d: real;

const e=0.001;

implementation

{$R *.dfm}

procedure TKovalenko_Form1.Kovalenko_Button1Click (Sender: TObject);

label 1;

var i: integer;

begin

Kovalenko_StringGrid1.ColWidths[0]: =80;

Kovalenko_StringGrid1.ColWidths[1]:=80;

Kovalenko_StringGrid1.Cells[0,0]:=' xRe';

Kovalenko_StringGrid1.Cells[1,0]: =' xIm';

Kovalenko_StringGrid1.DefaultRowHeight:=10;

Kovalenko_StringGrid1.DefaultRowHeight:=20;

Kovalenko_StringGrid1.GridLineWidth:=2;

Kovalenko_StringGrid1.RowCount:=2;

a[1]: = StrToFloat (Kovalenko_Edit1.Text);

a[2]: = StrToFloat (Kovalenko_Edit2.text);

a[3]: = StrToFloat (Kovalenko_Edit3.text);

a[4]: = StrToFloat (Kovalenko_Edit4.text);

a[5]: = StrToFloat (Kovalenko_Edit5.text);

a[6]: = StrToFloat (Kovalenko_Edit6.text);

a[7]: = StrToFloat (Kovalenko_Edit7.text);

n:=6;

1: dp:=10 000;dq:=10 000;

b[1]: =a[1];c[1]:=b[1];

p:=a[2];q:=a[3];

while (abs (dp)>e) and (abs (dq)>e) do

begin

b[2]: =a[2]-p*b[1];

for i:=3 to n+1 do

b[i]: =a[i]-p*b[i-1]-q*b[i-2];

c[2]:=b[2]-p*c[1];

for i:=3 to n-1 do

c[i]: =b[i]-p*c[i-1]-q*c[i-2];

c[n]:=-p*c[n-1]-q*c[n-2];

d:=sqr (c[n-1])-c[n]*c[n-2];

dp:=(b[n]*c[n-1]-b[n+1]*c[n-2])/d;

dq:=(b[n+1]*c[n-1]-b[n]*c[n])/d;

p:=p+dp; q:=q+dq;

end;

if (p*p/4)-q>0 then

begin

xRe[1]: =-p/2+sqrt (p*p/4-q); xIm[1]: =0;

xRe[2]:=-p/2-sqrt (p*p/4-q); xIm[2]: =0;

end

else

begin

xIm[1]:=sqrt (abs (p*p/4-q)); xRe[1]: =-p/2;

xIm[2]:=-sqrt (abs (p*p/4-q)); xRe[2]: =-p/2;

end;

Kovalenko_StringGrid1.Cells[0,Kovalenko_StringGrid1.RowCount;

1]:=FloatToStrF (xRe[1], ffGeneral, 3,3);

Kovalenko_StringGrid1.Cells[1,Kovalenko_StringGrid1.RowCount;

1]:=FloatToStrF (xIm[1], ffGeneral, 3,3);

Kovalenko_StringGrid1.Cells[0,Kovalenko_StringGrid1.RowCount]:=Float

ToStrF (xRe[2], ffGeneral, 3,3);

Kovalenko_StringGrid1.Cells[1,Kovalenko_StringGrid1.RowCount]: =Float

ToStrF (xIm[2], ffGeneral, 3,3);

Kovalenko_StringGrid1.RowCount:=Kovalenko_StringGrid1.RowCount+2;

if n>2 then

begin

a[1]: =1;

for i:=2 to n-1 do

a[i]: =b[i];

n:=n-2;

goto 1

end;

end;

end.

1.3 Π‘Π»ΠΎΠΊ-схСма

1.4 Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹

Рисунок 1

Π£Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅: X6+6.5X5-14X4+14X3-17X2+21X-22.5=0

ΠšΠΎΡ€Π½ΠΈ уравнСния: 1.39; -8.4; 0.761+0.915i; 0.761−0.915i; -0.506+1.05i; -0.506−1.05i;

Π’Ρ‹Π²ΠΎΠ΄: ΠΌΠ΅Ρ‚ΠΎΠ΄ примСняСтся для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ алгСбраичСских ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Ρ‡Π΅Ρ‚Π½ΠΎΠΉ стСпСни (ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Π½Π΅ Ρ‡Π΅Ρ‚Π½ΠΎΠΉ стСпСни получаСтся большая ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒ)

2. РСшСниС Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ с ΠΎΠ΄Π½ΠΈΠΌ нСизвСстным

2.1 ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π½ΠΎΠ³ΠΎ дСлСния (Π΄ΠΈΡ…ΠΎΡ‚ΠΎΠΌΠΈΠΈ, бисСкции)

ΠšΡ€Π°Ρ‚ΠΊΠΈΠ΅ тСорСтичСскиС свСдСнья

Допустим, Ρ‡Ρ‚ΠΎ ΠΊΠΎΡ€Π΅Π½ΡŒ уравнСния Ρ€Π°Π²Π΅Π½ ΠΈ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π½Π° ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ΅ .Π’ качСствС Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния корня Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ сСрСдину ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°. Если, Ρ‚ΠΎ ΡΠ²Π»ΡΠ΅Ρ‚ся ΠΊΠΎΡ€Π½Π΅ΠΌ уравнСния, Ссли Π½Π΅Ρ‚, Ρ‚ΠΎ Π΄Π°Π»Π΅Π΅ исслСдуСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° ΠΊΠΎΠ½Ρ†Π°Ρ… ΠΎΡ‚Ρ€Π΅Π·ΠΊΠΎΠ² ΠΈ ΠΈ Ρ‚ΠΎΡ‚ ΠΈΠ· Π½ΠΈΡ…, Π½Π° ΠΊΠΎΠ½Ρ†Π°Ρ… ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ значСния Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ², содСрТит искомый ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΈ ΠΏΠΎΡΡ‚ΠΎΠΌΡƒ принимаСтся Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли функция мСняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ΅, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ a Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ‚ся, пСрСмСнная b ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ установится Π² ΡΠ΅Ρ€Π΅Π΄ΠΈΠ½Π΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°. Π­Ρ‚ΠΎΡ‚ ΡƒΠΊΠΎΡ€ΠΎΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ вновь дСлится ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ ΠΈ Ρ†ΠΈΠΊΠ» вычислСний повторяСтся. Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ процСсс прСкращаСтся, Ссли, Π³Π΄Π΅ — Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ корня, Π° Π΅ — заданная Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ.

2.2 Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart, Grids,

Buttons, BubbleCh, Math;

type

TKovalenko_Form1 = class (TForm)

Label1: TLabel;

Kovalenko_BitBtn1: TBitBtn;

Kovalenko_Edit2: TEdit;

Label3: TLabel;

Kovalenko_Button1: TButton;

Image1: TImage;

Kovalenko_Chart1: TChart;

Series1: TLineSeries;

Series2: TPointSeries;

procedure Kovalenko_Button1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Kovalenko_Form1: TKovalenko_Form1;

implementation

Function f (x:real):real;

begin

f:=sin (ln (x))-cos (ln (x))+2*(ln (x));

end;

{$R *.dfm}

procedure TKovalenko_Form1.Kovalenko_Button1Click (Sender: TObject);

const e=0.1;a=1;b=3;

var ax, bx, C, i:real;

begin

C:=(a+b)/2;

ax:=a;bx:=b;

while abs (F (c))>e do

begin

if F (c)=0 then

Kovalenko_Edit2.Text:=FloatToStr (c)

else

begin

if (F (ax))*(f (c))<0 then

begin

bx:=c;

C:=(ax+bx)/2;

end;

if (F (c))*(f (bx))<0 then

begin

ax:=c;

C:=(ax+bx)/2;

end;

end;

Kovalenko_Chart1.SeriesList.Series[1]. AddXY (c, F©,' ', clblue);

end;

Kovalenko_Chart1.SeriesList.Series[1]. AddXY (ax, F (ax),' ', clyellow);

Kovalenko_Chart1.SeriesList.Series[1]. AddXY (bx, F (bx),' ', clyellow);

Kovalenko_Edit2.Text:=FloatToStr (c);

i:=a;

while i

begin

i:=i+0.01;

Kovalenko_Chart1.SeriesList.Series[0]. AddXY (i, f (i), ' ', clRED);

end;

2.3 Π‘Π»ΠΎΠΊ-схСма

2.4 Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹

Рисунок 2

Π£Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅: Sin (ln (x))-Cos (ln (x))+2ln (x)

ΠšΠΎΡ€Π½ΠΈ уравнСния: 1.3 748 779Π’Ρ‹Π²ΠΎΠ΄: ΠΌΠ΅Ρ‚ΠΎΠ΄ биссСкций всСгда Π΄Π°Ρ‘Ρ‚ приблиТСния ΠΊ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ значСния корня Π‘ с Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ†ΠΎΠ². ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ Π΄Π²ΡƒΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² биссСкций ΠΈ ΠΈΡ‚Ρ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСй ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡŽ корня Π‘ с Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ.

3. Аппроксимация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠΈΡ… ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ²

3.1 ΠšΡ€Π°Ρ‚ΠΊΠΈΠ΅ тСорСтичСскиС свСдСнья

1. По ΠΈΠ·Π²Π΅ΡΡ‚Π½Ρ‹ΠΌ значСниям ΠΈ, , Π³Π΄Π΅ — порядок Π°ΠΏΠΏΡ€ΠΎΠΊΡΠΈΠΌΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ уравнСния (Π² Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅, Π³Π΄Π΅ количСство ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ — 6 ΠΈΠ»ΠΈ 7), Π² Ρ†ΠΈΠΊΠ»Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚, , ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ (Π΄ΠΎ ΠΎΡ‚крытия Ρ†ΠΈΠΊΠ»Π°) ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ .

2. Π’Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚, .

3. Π Π΅ΡˆΠ°ΡŽΡ‚ систСму ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ, Π³Π΄Π΅ B — квадратная ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° коэффициСнтов, d — Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΏΡ€Π°Π²Ρ‹Ρ… частСй ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ, a — искомый Π²Π΅ΠΊΡ‚ΠΎΡ€ коэффициСнтов Π°ΠΏΠΏΡ€ΠΎΠΊΡΠΈΠΌΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ уравнСния. РСшСниС систСмы ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ осущСствляСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Гаусса.

4. Бтроят Π² ΠΎΠ΄Π½ΠΎΠΉ систСмС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π°ΠΏΠΏΡ€ΠΎΠΊΡΠΈΠΌΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ.

3.2 Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, StdCtrls, Buttons,

Grids, Math, jpeg;

type

TKovalenko_Form1 = class (TForm)

Kovalenko_Button1: TButton;

Kovalenko_Chart1: TChart;

Series1: TLineSeries;

Kovalenko_BitBtn1: TBitBtn;

Series2: TPointSeries;

Kovalenko_StringGrid1: TStringGrid;

Kovalenko_StringGrid2: TStringGrid;

Grehov_Label4: TLabel;

Image1: TImage;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

RadioButton3: TRadioButton;

RadioButton4: TRadioButton;

RadioButton5: TRadioButton;

RadioButton6: TRadioButton;

procedure Kovalenko_Button1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

type matr=array[1.7,1.7] of real;

type mass=array[1.7] of real;

var

Kovalenko_Form1: TKovalenko_Form1;

B, a, c:matr;X, Y, d, YY, XX: mass;

i, j, k, n, m:integer;

s, q, f:real;

implementation

{$R *.dfm}

procedure TKovalenko_Form1.Kovalenko_Button1Click (Sender: TObject);

begin

Kovalenko_Chart1.Visible:=true;

Kovalenko_StringGrid2.Visible:=true;

n:=7;

for i:=1 to m+1 do

YY[i]: =0; d[i]: =0;XX[I]:=0;

s:=0;q:=0;f:=0;

x[1]:=0.5; y[1]: =-5.5;

x[2]:=1; y[2]: =0.55;

x[3]:=1.5; y[3]: =-10;

x[4]:=2; y[4]: =11.5;

x[5]:=2.5; y[5]: =9.5;

x[6]:=3; y[6]: =-10.2;

x[7]:=3.5; y[7]: =11.5;

for j:=1 to 7do

begin

Kovalenko_Chart1.SeriesList.Series[1]. AddXY (x[j], y[j],' ', clyellow);

end;

if RadioButton1. Checked then m:=1;

if RadioButton2. Checked then m:=2;

if RadioButton3. Checked then m:=3;

if RadioButton4. Checked then m:=4;

if RadioButton5. Checked then m:=5;

if RadioButton6. Checked then m:=6;

a[1,1]: =n;

for i:=1 to m+1 do

for k:=1 to m+1 do

begin

s:=0;

for j:=1 to n do

s:=s+power (x[j],(i+k-2));

a[i, k]: =s;

end;

for i:=1 to m+1 do

begin

s:=0;

for j:=1 to n do

s:=s+((power (x[j], i-1))*y[j]);

d[i]: =s;

end;

{ΠœΠ΅Ρ‚ΠΎΠ΄ Гаусса}

for i:=1 to (m+1) do

begin

b[i, i]: =1;

b[1,i]:=a[1,i]/a[1,1];

c[i, 1]:=a[i, 1];

end;

YY[1]:=d[1]/a[1,1];

for i:=2 to (m+1) do

begin

for k:=i to (m+1) do

begin

s:=0;

for j:=1 to i-1 do

s:=s+c[k, j]*b[j, i];

c[k, i]:=a[k, i]-s;

end;

for k:=i+1 to (m+1) do

begin

s:=0;

for j:=1 to i-1 do

s:=s+c[i, j]*b[j, k];

b[i, k]:=(a[i, k]- s)/c[i, i];

end;

end;

for i:=2 to (m+1) do

begin

for j:=1 to i-1 do

s:=s+c[i, j]*YY[j];

YY[i]:=(d[i]-s)/c[i, i];

end;

XX[n]:=YY[n];

for i:=1 to n-1 do

begin

s:=0;

for j:=n-i+1 to n do

s:=s+b[n-i, j]*XX[j];

XX[n-i]:=YY[n-i]-s;

end;

for i:=1 to m+1 do

begin

Kovalenko_StringGrid1.Cells[Kovalenko_StringGrid1.colCount;

1,0]: ='a['+FloatToStrF (i, ffGeneral, 6,6)+']';

Kovalenko_StringGrid1.Cells[Kovalenko_StringGrid1.colCount;

1,1]:=FloatToStrF (XX[i], ffGeneral, 6,6);

Kovalenko_StringGrid1.colCount:=Kovalenko_StringGrid1.colCount+1;

end;

Kovalenko_stringGrid2.Cells[0,0]:='X';

Kovalenko_stringGrid2.Cells[0,1]:='f (x)'; q:=x[1];

Kovalenko_chart1.SeriesList.Series[0].Clear;

for k:=1 to 1500 do

begin

for i:=1 to (m+1) do

s:=s+XX[i]*(power (q, i-1)); {y}

f:=s; q:=q+0.002;

Kovalenko_chart1.SeriesList.Series[0]. AddXY (q, s,'', clRED);

Kovalenko_StringGrid2.Cells[Kovalenko_StringGrid2.colCount;

1,0]:=FloatToStrF (q, ffGeneral, 6,6);

Kovalenko_StringGrid2.Cells[Kovalenko_StringGrid2.colCount;

1,1]:=FloatToStrF (f, ffGeneral, 6,6);

Kovalenko_StringGrid2.ColCount:= Kovalenko_StringGrid2.ColCount+1;

end;

end;

end.

3.3 Π‘Π»ΠΎΠΊ-схСма

3.4 Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹

Рисунок 3

Π‘Ρ‚Π°Ρ€Ρ‚ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π°ΠΏΠΏΡ€ΠΎΠΊΡΠΈΠΌΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

0,5;5.5, 1;0.55, 1.5;-1, 2;11.5, 2.5;9.5, 3;-10.2, 3.5;1.5.

ΠΠΏΠΏΡ€ΠΎΠΊΡΠΈΠΌΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

— 520.15, 2281.1, -3643.52, 2768.05, -1075.68, 206.173, -15.4311;

Π’Ρ‹Π²ΠΎΠ΄: ΠΏΡ€ΠΈ расчСтС Π΄Π°Π½Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ достигаСтся высокая ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ точности для аппроксимации Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ всСвозмоТных Π²ΠΈΠ΄ΠΎΠ².

аппроксимация Π·ΠΎΠ»ΠΎΡ‚ΠΎΠΉ сСчСниС Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½Ρ‹ΠΉ

4. ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Π°Ρ оптимизация ΠΌΠ½ΠΎΠ³ΠΎΡΠΊΡΡ‚Ρ€Π΅ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠœΠ΅Ρ‚ΠΎΠ΄ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ сСчСния

4.1 ΠšΡ€Π°Ρ‚ΠΊΠΈΠ΅ тСорСтичСскиС свСдСнья

Если Π½Π° Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅ функция Π½Π΅ ΡƒΠ½ΠΈΠΌΠΎΠ΄Π°Π»ΡŒΠ½Π°Ρ, Ρ‚ΠΎ ΠΏΡ€ΠΈ использовании этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²Π½Π°Ρ‡Π°Π»Π΅ исходный ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» сущСствования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΡƒΠΆΠ°ΡŽΡ‚ Π΄ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° ΡƒΠ½ΠΈΠΌΠΎΠ΄Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (сущСствования ΠΎΠ΄Π½ΠΎΠ³ΠΎ экстрСмума). Π—ΠΎΠ»ΠΎΡ‚Ρ‹ΠΌ сСчСниСм ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° называСтся Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° Π½Π° Π΄Π²Π΅ Π½Π΅Ρ€Π°Π²Π½Ρ‹Π΅ части Ρ‚Π°ΠΊ, ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ всСго ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° ΠΊ Π΄Π»ΠΈΠ½Π΅ большСй Π΅Π³ΠΎ части Ρ€Π°Π²Π½ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ Π΄Π»ΠΈΠ½Ρ‹ большСй части ΠΊ ΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΉ .

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ сущСствуСт Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° разбиСния:

Π‘ ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ использования счСтчика ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π² Ρ‚ΠΎΡ‡ΠΊΠ΅

.

Алгоритм Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

1. ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ значСния ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° ΡƒΠ½ΠΈΠΌΠΎΠ΄Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, , счСтчик .

2. Π—Π°Π΄Π°ΡŽΡ‚ значСния точности .

3. Π’Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния

4. Если, Ρ‚ΠΎ, ,. Π˜Π½Π°Ρ‡Π΅, , .

5. Π’Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ Π΄Π»ΠΈΠ½Ρƒ суТаСмого ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° .

6. Если, Ρ‚ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚. Π˜Π½Π°Ρ‡Π΅ вычислСния ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚, начиная с ΠΏΡƒΠ½ΠΊΡ‚Π° 3.

На ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ считаСм ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ΄Π½ΠΎ ΡƒΠΆΠ΅ посчитано Ρ€Π°Π½Π΅Π΅ ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚авляСт собой Ρ‚ΠΎΡ‡ΠΊΡƒ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ сСчСния.

4.2 Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, StdCtrls, Buttons,

Grids, Math, jpeg;

type

TKovalenko_Form1 = class (TForm)

Kovalenko_Button1: TButton;

Kovalenko_Chart1: TChart;

Series1: TLineSeries;

Kovalenko_BitBtn1: TBitBtn;

Series2: TPointSeries;

Kovalenko_StringGrid1: TStringGrid;

Kovalenko_StringGrid2: TStringGrid;

Kovalenko__Label4: TLabel;

Image1: TImage;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

RadioButton3: TRadioButton;

RadioButton4: TRadioButton;

RadioButton5: TRadioButton;

RadioButton6: TRadioButton;

Series3: TPointSeries;

Label1: TLabel;

Label2: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Label3: TLabel;

procedure Kovalenko_Button1Click (Sender: TObject);

procedure Kovalenko_BitBtn1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

type matr=array[1.7,1.7] of real;

type mass=array[1.7] of real;

var

Kovalenko_Form1: TKovalenko_Form1;

B, a, c:matr;X, Y, d, YY, XX: mass;

i, j, k, n, m:integer;

s, q, f, L, X1,X2,XXX, YYY, G1, G2,ax, bx: real;

implementation

{$R *.dfm}

procedure TKovalenko_Form1.Kovalenko_Button1Click (Sender: TObject);

const r=0.1; a0=1; b0=2;

begin

Kovalenko_Chart1.Visible:=true;

Kovalenko_StringGrid2.Visible:=true;

n:=7;

for i:=1 to m+1 do

YY[i]: =0; d[i]: =0;XX[I]:=0;

s:=0;q:=0;f:=0;

x[1]:=0.5; y[1]: =-5.5;

x[2]:=1; y[2]: =0.55;

x[3]:=1.5; y[3]: =-10;

x[4]:=2; y[4]: =11.5;

x[5]:=2.5; y[5]: =9.5;

x[6]:=3; y[6]: =-10.2;

x[7]:=3.5; y[7]: =11.5;

for j:=1 to 7 do

begin

Kovalenko_Chart1.SeriesList.Series[1]. AddXY (x[j], y[j],' ', clyellow);

end;

if RadioButton1. Checked then m:=1;

if RadioButton2. Checked then m:=2;

if RadioButton3. Checked then m:=3;

if RadioButton4. Checked then m:=4;

if RadioButton5. Checked then m:=5;

if RadioButton6. Checked then m:=6;

a[1,1]: =n;

for i:=1 to m+1 do

for k:=1 to m+1 do

begin

s:=0;

for j:=1 to n do

s:=s+power (x[j],(i+k-2));

a[i, k]: =s;

end;

for i:=1 to m+1 do

begin

s:=0;

for j:=1 to n do

s:=s+((power (x[j], i-1))*y[j]);

d[i]: =s;

end;

{ΠœΠ΅Ρ‚ΠΎΠ΄ Гаусса}

for i:=1 to (m+1) do

begin

b[i, i]: =1;

b[1,i]:=a[1,i]/a[1,1];

c[i, 1]:=a[i, 1];

end;

YY[1]:=d[1]/a[1,1];

for i:=2 to (m+1) do

begin

for k:=i to (m+1) do

begin

s:=0;

for j:=1 to i-1 do

s:=s+c[k, j]*b[j, i];

c[k, i]:=a[k, i]-s;

end;

for k:=i+1 to (m+1) do

begin

s:=0;

for j:=1 to i-1 do

s:=s+c[i, j]*b[j, k];

b[i, k]:=(a[i, k]- s)/c[i, i];

end;

end;

for i:=2 to (m+1) do

begin

s:=0;

for j:=1 to i-1 do

s:=s+c[i, j]*YY[j];

YY[i]:=(d[i]-s)/c[i, i];

end;

XX[n]:=YY[n];

for i:=1 to n-1 do

begin

s:=0;

for j:=n-i+1 to n do

s:=s+b[n-i, j]*XX[j];

XX[n-i]:=YY[n-i]-s;

end;

for i:=1 to m+1 do

begin

Kovalenko_StringGrid1.Cells[Kovalenko_StringGrid1.colCount;

1,0]: ='a['+FloatToStrF (i, ffGeneral, 6,6)+']';

Kovalenko_StringGrid1.Cells[Kovalenko_StringGrid1.colCount;

1,1]:=FloatToStrF (XX[i], ffGeneral, 6,6);

Kovalenko_StringGrid1.colCount:=Kovalenko_StringGrid1.colCount+1;

end;

Kovalenko_stringGrid2.Cells[0,0]:='X';

Kovalenko_stringGrid2.Cells[0,1]:='f (x)';

q:=x[1];

Kovalenko_chart1.SeriesList.Series[0].Clear;

for k:=1 to 1500 do

begin

s:=0;

for i:=1 to (m+1) do

s:=s+XX[i]*(power (q, i-1)); f:=s;

q:=q+0.002;

Kovalenko_chart1.SeriesList.Series[0]. AddXY (q, s,'', clRED);

Kovalenko_StringGrid2.Cells[Kovalenko_StringGrid2.colCount;

1,0]:=FloatToStrF (q, ffGeneral, 6,6);

Kovalenko_StringGrid2.Cells[Kovalenko_StringGrid2.colCount;

1,1]:=FloatToStrF (f, ffGeneral, 6,6);

Kovalenko_StringGrid2.ColCount:= Kovalenko_StringGrid2.ColCount+1;

end;

{ΠœΠ΅Ρ‚ΠΎΠ΄ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ сСчСния}

ax:=1;bx:=2; X1:=0;X2:=0;

while abs (bx-ax)>=r do

begin

X1:=ax+0.382*(bx-ax);

X2:=ax+0.618*(bx-ax);

G1:=0;s:=0;

for i:=1 to n do

s:=s+XX[i]*(power (X1,i-1)); G1:=s;

G2:=0;s:=0;

for i:=1 to n do

s:=s+XX[i]*(power (X2,i-1)); G2:=s;

if (G1)<=(G2) then

begin

ax:=ax;

bx:=X2;

end else

begin

ax:=X1;

bx:=bx;

end;

end;

XXX:=(ax+bx)/2;

YYY:=0;

for i:=1 to n do

YYY:=YYY+XX[i]*(power (XXX, i-1));

Edit1.Text:= FloatToStr (XXX);

Edit2.Text:= FloatToStr (YYY);

Kovalenko_chart1.SeriesList.Series[2]. AddXY (XXX, YYY);

end;

procedure TKovalenko_Form1.Kovalenko_BitBtn1Click (Sender: TObject);

begin

Application.Terminate;

end;

end

4.3 Π‘Π»ΠΎΠΊ-схСма

4.4 Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹

Рисунок 4. МинимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅ [1; 2] -12.324

Π’Ρ‹Π²ΠΎΠ΄:

ΠœΠ΅Ρ‚ΠΎΠ΄ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ сСчСния являСтся Π΄Ρ€Π΅Π²Π½ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ дСлСния ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°. Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±Ρ‹Π» рассмотрСн Π•Π²ΠΊΠ»ΠΈΠ΄ΠΎΠΌ. Π’ΠΎΠ³Π΄Π° этим ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π° Ρ€Π°Π²Π½Ρ‹Π΅ ΠΏΡΡ‚ΡŒ частСй для построСния пятиконСчной Π·Π²Π΅Π·Π΄Ρ‹. БСгодня этот ΠΌΠ΅Ρ‚ΠΎΠ΄ примСняСтся Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ производствСнных систСм ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

5. ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Π°Ρ оптимизация Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ шагом

5.1 ΠšΡ€Π°Ρ‚ΠΊΠΈΠ΅ тСорСтичСскиС свСдСния

ВсС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ строят ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΡ‡Π΅ΠΊ ,…Ρ‚Π°ΠΊΠΈΡ…, Ρ‡Ρ‚ΠΎ, Ρ‚. Π΅. Ρ‡Ρ‚ΠΎΠ±Ρ‹ функция ΡƒΠ±Ρ‹Π²Π°Π»Π°. ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ расчСтов Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ вычислСны автоматичСски. НаправлСниС двиТСния ΠΏΡ€ΠΈ поискС Ρ‚ΠΎΡ‡Π΅ΠΊ выбираСтся ΠΏΠΎ Π°Π½Ρ‚ΠΈΠ³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ — Π²Π΅ΠΊΡ‚ΠΎΡ€Ρƒ, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌΡƒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ быстрого убывания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ΠΎΡ‡ΠΊΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅:

Π³Π΄Π΅ — ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅; - ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅; - пСрСмСнная Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° шага; - Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° Π² Ρ‚ΠΎΡ‡ΠΊΠ΅; - Π΄Π»ΠΈΠ½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π°-Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π°.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° вычисляСтся ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅:

Π³Π΄Π΅ ,

;

;

— Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΠΎ малая ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ вычислСния Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π°.

5.2 Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Buttons, Series;

type

TKovalenko_Form1 = class (TForm)

Kovalenko_Image1: TImage;

Kovalenko_Memo1: TMemo;

Kovalenko_Button1: TButton;

Kovalenko_BitBtn1: TBitBtn;

Kovalenko_Edit1: TEdit;

Kovalenko_Chart1: TChart;

Series1: TLineSeries;

Series2: TPointSeries;

Series3: TPointSeries;

Kovalenko_Chart3: TChart;

Series10: TLineSeries;

Series11: TLineSeries;

Series12: TLineSeries;

Series13: TLineSeries;

Series14: TLineSeries;

Series15: TPointSeries;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

RadioButton3: TRadioButton;

Kovalenko_Chart2: TChart;

Series4: TLineSeries;

Series5: TLineSeries;

Series6: TLineSeries;

Series7: TLineSeries;

Series8: TLineSeries;

Series9: TPointSeries;

procedure Kovalenko_Button1Click (Sender: TObject);

procedure RadioButton1Click (Sender: TObject);

procedure RadioButton2Click (Sender: TObject);

procedure RadioButton3Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

const n=2;e=0.0001;

type mass=array[1.2] of real;

var XK, G: mass;

Kovalenko_Form1: TKovalenko_Form1;

implementation

{$R *.dfm}

function f (x:mass):real;

begin

f:=exp (x[1])+sqr (x[1])+sqr (x[2]);

end;

procedure gradient;

var i: integer;fp, fo: real;

begin

for i:=1 to N do

begin

XK[i]: =XK[i]+E;fp:=f (XK);

XK[i]:=XK[i]-2*E;fo:=f (XK);

XK[i]:=XK[i]+E;

G[i]:=(fp-fo)/(2*E);

end;

end;

procedure TKovalenko_Form1.Kovalenko_Button1Click (Sender: TObject);

var gamma, Y, OD, xx1, xx2,yy:real;i, k: integer;XX:mass;

begin

gamma:=1; ;k:=0;

XK[1]: =-2;XK[2]:=2

Kovalenko_Memo1.Lines.Add ('X[1]='+FloatToStr (XK[1]));

Kovalenko_Memo1.Lines.Add ('X[2]='+FloatToStr (XK[2]));

Kovalenko_Chart1.SeriesList.Series[0].AddXY (XK[1], XK[2]);

while gamma>E do

begin

gradient;

OD:=0;

for i:=1 to N do

OD:=OD+sqr (G[i]);

OD:=sqrt (OD);

Y:=F (XK);

for i:=1 to N do

begin

XK[i]: =XK[i]-gamma*G[i]/OD;

Kovalenko_Memo1.Lines.Add ('X['+IntToStr (i)+']='+FloatToStr (XK[i]));

end;

Kovalenko_Memo1.Lines.Add ('ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ f='+FloatToStr (Y));

Kovalenko_Memo1.Lines.Add ('НовоС f='+FloatToStr (F (XK)));

Kovalenko_Memo1.Lines.Add ('Π¨Π°Π³ gamma='+FloatToStr (gamma));

Kovalenko_Chart1.SeriesList.Series[0]. AddXY (XK[1], XK[2]);

if f (XK)

else

begin

for i:=1 to N do

XK[i]: =XK[i]+gamma*G[i]/OD;

gamma:=gamma/2;

kovalenko_Memo1.Lines.Add ('УмСньшСниС шага

gamma='+FloatToStr (gamma));

k:=k+1;

end;

end;

Kovalenko_Chart2.SeriesList.Series[5]. AddXY (XK[1], Y);

Kovalenko_Chart3.SeriesList.Series[5].AddXY (XK[2], Y);

Kovalenko_Chart1.SeriesList.Series[1].AddXY (XK[1], XK[2]);

Kovalenko_Edit1.Text:='';

Kovalenko_Edit1.Text:='X1='+FloatToStr (XK[1])+'

'+'X2='+FloatToStr (XK[2])+' '+Kovalenko_Edit1.Text+'Y='+FloatToStr (Y);

XK[1]: =-0.5;XK[2]:=0.2;

for k:=0 to 4 do

for i:=0 to 400 do

begin

xx1:=-2*XK[1]+0.01*XK[1]*i;

XX[1]: =xx1;XX[2]:=(k-2)*XK[2];

Kovalenko_Chart2.SeriesList.Series[k].AddXY (xx1,f (XX));

end;

for k:=0 to 4 do

for i:=0 to 400 do

begin

xx2:=-8*XK[2]+0.01*XK[2]*i;

XX[1]: =(k-2)*XK[1];XX[2]:=xx2;

Kovalenko_Chart3.SeriesList.Series[k].AddXY (xx2,f (XX));

end;

end;

procedure TKovalenko_Form1.RadioButton1Click (Sender: TObject);

begin

Kovalenko_Chart1.Visible:=True;

Kovalenko_Chart2.Visible:=False;

Kovalenko_Chart3.Visible:=False;

end;

procedure TKovalenko_Form1.RadioButton2Click (Sender: TObject);

begin

Kovalenko_Chart2.Visible:=True;

Kovalenko_Chart1.Visible:=False;

Kovalenko_Chart3.Visible:=False;

end;

procedure TKovalenko_Form1.RadioButton3Click (Sender: TObject);

begin

Kovalenko_Chart3.Visible:=True;

Kovalenko_Chart1.Visible:=False;

Kovalenko_Chart2.Visible:=False;

end;

end.

5.3 Π‘Π»ΠΎΠΊ-схСма

5.4 Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹

Рисунок 5.1

Рисунок 5.2

Рисунок 5.3

Π˜ΡΡ…ΠΎΠ΄Π½Π°Ρ функция:

exp (x1)+x22 +x12

ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ:

X1=-0.3517 X2=1.7918 Y=0.8271

Π’Ρ‹Π²ΠΎΠ΄:

Данная Π·Π°Π΄Π°Ρ‡Π° основана Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… свойствах Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° скалярного поля:

1) Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ производная скалярного поля ΠΈΠΌΠ΅Π΅Ρ‚ наибольшСС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ совпадаСт с Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠΌ скалярного поля.

2) НаибольшСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΉ скалярного поля Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ М0 Ρ€Π°Π²Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŽ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° скалярного поля Π² ΡΡ‚ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ