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

Полиномиальная интСрполяция Гаусса, ΠΡŒΡŽΡ‚ΠΎΠ½Π°, Π‘Ρ‚ΠΈΡ€Π»ΠΈΠ½Π³Π°

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

ЧислСнныС экспСримСнты, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π½Π°Π΄ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌΠΈ систСмами с Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈ ΠΏΠ»ΠΎΡ…ΠΎ обусловлСнными ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… размСрностСй, ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ, Π½Π΅ ΡΠΌΠΎΡ‚ря Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ схСмы (Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°) ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄Π°Π΅Ρ‚ ряд прСимущСств ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ (ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Гаусса, Π–ΠΎΡ€Π΄Π°Π½Π°-Гаусса ΠΈ Ρ‚. Π΄), Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒ (Π²Π΅ΠΊΡ‚ΠΎΡ€ нСвязки) ΠΈ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π΅Ρ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ вычислСния. Π’ Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Π΅… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Полиномиальная интСрполяция Гаусса, ΠΡŒΡŽΡ‚ΠΎΠ½Π°, Π‘Ρ‚ΠΈΡ€Π»ΠΈΠ½Π³Π° (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠœΠΈΠ½ΠΈΡΡ‚Π΅Ρ€ΡΡ‚Π²ΠΎ образования Российской Π€Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΠΈ Бибирский ГосударствСнный ВСхнологичСский УнивСрситСт Π€Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚: Автоматизации ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠšΠ°Ρ„Π΅Π΄Ρ€Π°: БистСмотСхники ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° Полиномиальная интСрполяция Гаусса, ΠΡŒΡŽΡ‚ΠΎΠ½Π°, Π‘Ρ‚ΠΈΡ€Π»ΠΈΠ½Π³Π° Π ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ: Π’Π°Ρ‰Π΅Π½ΠΊΠΎ Π“. Π’.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»: Русинов Π”.Π’.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Аннотация Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

2. ОписаниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° полиномиальной интСрполяции

3. Π‘Π»ΠΎΠΊ-схСма ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния

4. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ тСксты основных ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

5. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ числСнных экспСримСнтов Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… источников

Аннотация

Π’ Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Π΅ прСдставлСны Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ полиномиального интСрполирования ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΡŒΡŽΡ‚ΠΎΠ½Π°, Гаусса ΠΈ Π‘Ρ‚ΠΈΡ€Π»ΠΈΠ½Π³Π°.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ Π² ΡΡ€Π΅Π΄Π΅ программирования Delphi.

Π’ Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Π΅ Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ полиномиального интСрполирования. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ Π·Π°Π΄Π°Ρ‡Π° интСрполирования формулируСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: для Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ f Ρ‚рСбуСтся Π½Π°ΠΉΡ‚ΠΈ достаточно ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ p, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΡƒΡŽ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌ

p (xi)=yi (i=0,1,2, …, n)

1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

Для Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ трСбуСтся ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ конСчноразностных интСрполяционных Ρ„ΠΎΡ€ΠΌΡƒΠ» ΠΡŒΡŽΡ‚ΠΎΠ½Π°, Гаусса ΠΈ Π‘Ρ‚ΠΈΡ€Π»ΠΈΠ½Π³Π°.

2. ОписаниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° полиномиальной интСрполяции

ΠŸΡƒΡΡ‚ΡŒ функция y=f (x) Π·Π°Π΄Π°Π½Π° Π½Π° ΡΠ΅Ρ‚ΠΊΠ΅ равноотстоящих ΡƒΠ·Π»ΠΎΠ²

xi=xo+ih,

Π³Π΄Π΅ i=0, 1,…, n, ΠΈ Π΄Π»Ρ Π½Π΅Ρ‘ построСна Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… разностСй.

Π‘ΡƒΠ΄Π΅ΠΌ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ интСрполяционный ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½ Pn(x) Π² Ρ„ΠΎΡ€ΠΌΠ΅:

Pn(x)=a0+a1(x-x0)+a2(x-x0)(x-x1)+…+an(x-x0)(x-x1)…(x-xn-1)

3. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΈΠ²Π½Π°Ρ схСма ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния

1. Ѐункция Π²Π²ΠΎΠ΄Π°:

ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΡ€Π°ΠΉΠ½ΠΈΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

procedure TForm1. Button1Click (Sender: TObject);

begin

x0:=strtofloat (EditXo.text);

h:=(Strtofloat (EditXn.Text)-x0)/n;

For i:=0 to n do

y[i]: =strtofloat (setka.Cells[i+1,1]);

PN1:=PolyNuton1;

PN2:=PolyNuton2;

for i:=0 to n do

y[i-(n div 2)]: =y[i];

x0:=x0+(n div 2)*h;

PG1:=PolyGauss1;

PG2:=PolyGauss2;

PS:=PolyStirling;

With Polynoms do

begin

Cells[1,0]: =PN1; Cells[1,1]: =PN2;

Cells[1,2]:=PG1; Cells[1,3]: =PG2;

Cells[1,4]:=PS;

DrawGraph;

end;

2. Ѐункция вычислСния:

Function PolyNuton1: string;

Function PolyNuton2: string;

Function PolyGauss1: string;

Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ вычислСния ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΠΎΠ² Π² Ρ‚Скстовом Π²ΠΈΠ΄Π΅

Function PolyGauss2: string;

Function PolyStirling: string;

Function PolyN1(x:extended):extended;

Function PolyN2(x:extended):extended;

Function PolyG1(x:extended):extended;

Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ вычислСния ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΠΎΠ² ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Function PolyG2(x:extended):extended;

Function PolyS (x:extended):extended;

Ѐункция Π²Ρ‹Π²ΠΎΠ΄Π°:

procedure TForm1. Button1Click (Sender: TObject);

begin

x0:=strtofloat (EditXo.text);

h:=(Strtofloat (EditXn.Text)-x0)/n;

For i:=0 to n do

y[i]: =strtofloat (setka.Cells[i+1,1]);

PN1:=PolyNuton1;

PN2:=PolyNuton2;

for i:=0 to n do

y[i-(n div 2)]: =y[i];

x0:=x0+(n div 2)*h;

PG1:=PolyGauss1;

PG2:=PolyGauss2;

PS:=PolyStirling;

With Polynoms do

begin

Cells[1,0]: =PN1; Cells[1,1]: =PN2;

Cells[1,2]:=PG1; Cells[1,3]: =PG2;

Cells[1,4]:=PS;

end;

DrawGraph;

end;

Procedure DrawGraph — ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° рисования Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ²

4. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ тСксты основных ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

unit Unit1;

interface

uses

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

Dialogs, Grids, Math, StdCtrls, Spin, StrUtils, ExtCtrls;

type

TArray=array[-100.200] of extended;

TForm1 = class (TForm)

Setka: TStringGrid;

SpinEditn: TSpinEdit;

Label1: TLabel;

Label2: TLabel;

EditXo: TEdit;

Label3: TLabel;

EditXn: TEdit;

Button1: TButton;

Polynoms: TStringGrid;

Image1: TImage;

CheckN1: TCheckBox;

CheckN2: TCheckBox;

CheckG1: TCheckBox;

CheckG2: TCheckBox;

CheckS: TCheckBox;

procedure Button1Click (Sender: TObject);

procedure FormCreate (Sender: TObject);

procedure EditXnExit (Sender: TObject);

procedure EditXoExit (Sender: TObject);

procedure SpinEditnKeyPress (Sender: TObject; var Key: Char);

procedure SpinEditnExit (Sender: TObject);

procedure PolynomsKeyPress (Sender: TObject; var Key: Char);

procedure CheckN1Click (Sender: TObject);

private

Function Fact (n:longint):longint; //Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»

Function C (n, k: integer):extended; //Π‘ ΠΈΠ· n ΠΏΠΎ k

Function Delta (k:integer;y:Tarray;i:integer):extended; //Π”Π΅Π»ΡŒΡ‚Π° ΠΊ-ΠΎΠΉ стСп. Yi

Procedure ZapX; //Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ строку с x-ΠΌΠΈ

Function PolyNuton1: string;

Function PolyNuton2: string;

Function PolyGauss1: string;

Function PolyGauss2: string;

Function PolyStirling: string;

Function PolyN1(x:extended):extended;

Function PolyN2(x:extended):extended;

Function PolyG1(x:extended):extended;

Function PolyG2(x:extended):extended;

Function PolyS (x:extended):extended;

Procedure DrawGraph;

public

{ Public declarations }

end;

var

Form1: TForm1;

y:TArray;

n, i, j, k: integer;

h, x0, z, x, r:extended;

PN1,PN2,PG1,PG2,PS:string;

implementation

{$R *.dfm}

Procedure TForm1. DrawGraph;

var

scx, scy, miny, maxy: extended;

i:integer;

begin

x0:=strtofloat (EditXo.text);

h:=(Strtofloat (EditXn.Text)-x0)/n;

For i:=0 to n do

y[i]: =strtofloat (setka.Cells[i+1,1]);

scx:=(image1.Width-30)/n;

miny:=y[0];

maxy:=miny;

for i:=1 to n do

begin

If miny>y[i] then miny:=y[i];

If maxy

end;

scy:=(Image1.Height-30)/(maxy-miny);

Image1.Canvas.FillRect (Rect (0,0,Width, Height));

With Image1. Canvas do

begin

Pen.Color:=clLime;

Pen.Style:=psSolid;

Pen.Width:=1;

for i:=0 to n do

begin

Moveto (20+round (scx*i), Image1. Height-15);

Lineto (20+round (scx*i), 0);

TextOut (15+round (scx*i), Image1. Height-15,floatToStr (x0+i*h));

Moveto (15,Image1.Height-20-round (scy*(y[i]-miny)));

LineTo (Image1.Width, Image1. Height-20-round (scy*(y[i]-miny)));

TextOut (5,Image1.Height-27-round (scy*(y[i]-miny)), floatToStr (y[i]));

end;

end;

With Image1. Canvas do

begin

Pen.Color:=clblack;

Pen.Width:=3;

Moveto (20,Image1.Height-20-round (scy*(y[0]-miny)));

for i:=1 to n do

LineTo (20+round (scx*i), Image1. Height-20-round (scy*(y[i]-miny)));

pen.Width:=2;

For i:=21 to Image1. Width-10 do

begin

If CheckN1. Checked then

begin

Pen.Color:=clBlue;

Moveto (i-1,Image1.Height-20-round (scy*(PolyN1(x0+(i-21)*h/scx)-miny)));

Lineto (i, Image1. Height-20-round (scy*(PolyN1(x0+(i-20)*h/scx)-miny)));

end;

If CheckN2. Checked then

begin

Pen.Color:=clGreen;

Moveto (i-1,Image1.Height-20-round (scy*(PolyN2(x0+(i-21)*h/scx)-miny)));

Lineto (i, Image1. Height-20-round (scy*(PolyN2(x0+(i-20)*h/scx)-miny)));

end;

end;

for i:=0 to n do

y[i-(n div 2)]: =y[i];

x0:=x0+(n div 2)*h;

For i:=21 to Image1. Width-10 do

begin

If CheckG1. Checked then

begin

Pen.Color:=clRed;

Moveto (i-1,Image1.Height-20-round (scy*(PolyG1(x0-(n div 2)*h+(i-21)*h/scx)-miny)));

Lineto (i, Image1. Height-20-round (scy*(PolyG1(x0-(n div 2)*h+(i-20)*h/scx)-miny)));

end;

If CheckG2. Checked then

begin

Pen.Color:=rgb (50,200,150);

Moveto (i-1,Image1.Height-20-round (scy*(PolyG2(x0-(n div 2)*h+(i-21)*h/scx)-miny)));

Lineto (i, Image1. Height-20-round (scy*(PolyG2(x0-(n div 2)*h+(i-20)*h/scx)-miny)));

end;

If CheckS. Checked then

begin

Pen.Color:=clgray;

Moveto (i-1,Image1.Height-20-round (scy*(PolyS (x0-(n div 2)*h+(i-21)*h/scx)-miny)));

Lineto (i, Image1. Height-20-round (scy*(PolyS (x0-(n div 2)*h+(i-20)*h/scx)-miny)));

end;

end;

end;

end;

Procedure TForm1. ZapX;

begin

x0:=strtofloat (EditXo.text);

h:=(Strtofloat (EditXn.Text)-x0)/n;

For i:=1 to n+1 do

Setka.Cells[i, 0]: =floattostr (x0+pred (i)*h);

end;

Function TForm1. Fact (n:integer):longint;

var i: integer;

begin

Result:=1;

For i:=1 to n do

Result:=Result*i;

end;

function Tform1. C (n, k: integer):extended;

begin

Result:=fact (n)/(fact (k)*fact (n-k));

end;

Function Tform1. Delta (k:integer;y:TArray;i:integer):extended;

var j: integer;

begin

result:=0;

For j:=0 to k do

Result:=result+intpower (-1,j)*C (k, j)*y[k+i-j];

end;

Function TForm1. PolyNuton1:string;

begin

Result:=floattostr (y[0]);

For i:=1 to n do

begin

z:=Delta (i, y,0)/(fact (i)*IntPower (h, i));

if z=0 then continue;

If (z>0) then Result:=Result+'+';

If z<>1 then Result:=Result+floattostr (z);

For j:=1 to i do

begin

z:=x0+pred (j)*h;

if z=0

then Result:=Result+'x'

else if z>0 then Result:=Result+'(x-'+floattostr (z)+')'

else Result:=Result+'(x'+floattostr (z)+')'

end;

end;

end;

Function Tform1. PolyN1(x:extended):extended;

begin

Result:=(y[0]);

For i:=1 to n do

begin

z:=Delta (i, y,0)/(fact (i)*IntPower (h, i));

if z=0 then continue;

r:=z;

For j:=1 to i do

begin

z:=x0+pred (j)*h;

r:=r*(x-z)

end;

Result:=Result+r;

end;

end;

function TForm1. PolyNuton2:string;

begin

Result:=floattostr (y[n]);

For i:=1 to n do

begin

z:=Delta (i, y, n-i)/(fact (i)*IntPower (h, i));

if z=0 then continue;

If (z>0) then Result:=Result+'+';

If z<>1 then Result:=Result+floattostr (z);

For j:=n downto n-pred (i) do

begin

z:=x0+j*h;

if z=0

then Result:=Result+'x'

else if z>0 then Result:=Result+'(x-'+floattostr (z)+')'

else Result:=Result+'(x'+floattostr (z)+')'

end;

end;

end;

Function Tform1. PolyN2(x:extended):extended;

begin

Result:=(y[n]);

For i:=1 to n do

begin

z:=Delta (i, y, n-i)/(fact (i)*IntPower (h, i));

if z=0 then continue;

r:=z;

For j:=n downto n-pred (i) do

begin

z:=x0+j*h;

r:=r*(x-z)

end;

Result:=Result+r;

end;

end;

function TForm1. PolyGauss1:string;

begin

Result:=floattostr (y[0]);

For i:=1 to n do

begin

z:=Delta (i, y,-(i div 2))/(fact (i)*IntPower (h, i));

if z=0 then continue;

If (z>0) then Result:=Result+'+';

If z<>1 then Result:=Result+floattostr (z);

For j:=-(i div 2)+1-i mod 2 to (i div 2) do

begin

z:=x0+j*h;

if z=0

then Result:=Result+'x'

else if z>0 then Result:=Result+'(x-'+floattostr (z)+')'

else Result:=Result+'(x'+floattostr (z)+')'

end;

end;

end;

Function Tform1. PolyG1(x:extended):extended;

begin

Result:=(y[0]);

For i:=1 to n do

begin

z:=Delta (i, y,-(i div 2))/(fact (i)*IntPower (h, i));

if z=0 then continue;

r:=z;

For j:=-(i div 2)+1-i mod 2 to (i div 2) do

begin

z:=x0+j*h;

r:=r*(x-z)

end;

Result:=Result+r;

end;

end;

function TForm1. PolyGauss2:string;

begin

Result:=floattostr (y[0]);

For i:=1 to n do

begin

z:=Delta (i, y,-(succ (i) div 2))/(fact (i)*IntPower (h, i));

if z=0 then continue;

If (z>0) then Result:=Result+'+';

If z<>1 then Result:=Result+floattostr (z);

For j:=-(i div 2) to (i div 2)-1+i mod 2 do

begin

z:=x0+j*h;

if z=0

then Result:=Result+'x'

else if z>0 then Result:=Result+'(x-'+floattostr (z)+')'

else Result:=Result+'(x'+floattostr (z)+')'

end;

end;

end;

Function Tform1. PolyG2(x:extended):extended;

begin

Result:=(y[0]);

For i:=1 to n do

begin

z:=Delta (i, y,-(succ (i) div 2))/(fact (i)*IntPower (h, i));

if z=0 then continue;

r:=z;

For j:=-(i div 2) to (i div 2)-1+i mod 2 do

begin

z:=x0+j*h;

r:=r*(x-z)

end;

Result:=Result+r;

end;

end;

function TForm1. PolyStirling:string;

begin

Result:=floattostr (y[0]);

For i:=1 to n do

begin

z:=(Delta (i, y,-(i div 2))+Delta (i, y,-(succ (i) div 2)))/(2*fact (i)*IntPower (h, i));

If not (odd (i)) then z:=z/2;

if z=0 then continue;

If (z>0) then Result:=Result+'+';

If z<>1 then Result:=Result+floattostr (z);

For j:=-(i div 2)+1-i mod 2 to (i div 2)-1+i mod 2 do

begin

z:=x0+j*h;

if z=0

then Result:=Result+'x'

else if z>0 then Result:=Result+'(x-'+floattostr (z)+')'

else Result:=Result+'(x'+floattostr (z)+')'

end;

If not (odd (i)) then

begin

z:=-2*x0;

If z=0 then Result:=result+'2x'

else

if z<0

then Result:=Result+'(2x'+floattostr (z)+')'

else Result:=Result+'(2x+'+floattostr (z)+')';

end;

end;

end;

Function Tform1. PolyS (x:extended):extended;

begin

Result:=(y[0]);

For i:=1 to n do

begin

z:=(Delta (i, y,-(i div 2))+Delta (i, y,-(succ (i) div 2)))/(2*fact (i)*IntPower (h, i));

If not (odd (i)) then z:=z/2;

if z=0 then continue;

r:=z;

For j:=-(i div 2)+1-i mod 2 to (i div 2)-1+i mod 2 do

begin

z:=x0+j*h;

r:=r*(x-z)

end;

If not (odd (i)) then r:=r*(2*(x-x0));

Result:=Result+r;

end;

end;

procedure TForm1. Button1Click (Sender: TObject);

begin

x0:=strtofloat (EditXo.text);

h:=(Strtofloat (EditXn.Text)-x0)/n;

For i:=0 to n do

y[i]: =strtofloat (setka.Cells[i+1,1]);

PN1:=PolyNuton1;

PN2:=PolyNuton2;

for i:=0 to n do

y[i-(n div 2)]: =y[i];

x0:=x0+(n div 2)*h;

PG1:=PolyGauss1;

PG2:=PolyGauss2;

PS:=PolyStirling;

With Polynoms do

begin

Cells[1,0]: =PN1; Cells[1,1]: =PN2;

Cells[1,2]:=PG1; Cells[1,3]: =PG2;

Cells[1,4]:=PS;

end;

DrawGraph;

end;

procedure TForm1. FormCreate (Sender: TObject);

begin

n:=4;

With Polynoms do

begin

ColWidths[1]: =1593;

Cells[0,0]:='I ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌ ΠΡŒΡŽΡ‚ΠΎΠ½Π°';

Cells[0,1]: ='II ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌ ΠΡŒΡŽΡ‚ΠΎΠ½Π°';

Cells[0,2]: ='I ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌ Гаусса';

Cells[0,3]: ='II ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌ Гаусса';

Cells[0,4]: ='ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌ Π‘Ρ‚ΠΈΡ€Π»ΠΈΠ½Π³Π°';

end;

With setka do

begin

Cells[0,0]: =' x';

Cells[0,1]: =' y';

zapX

end;

end;

procedure TForm1. EditXnExit (Sender: TObject);

begin

If StrTofloat (EditXn.Text)

EditXn.Undo;

ZapX;

end;

procedure TForm1. EditXoExit (Sender: TObject);

begin

If StrTofloat (EditXn.Text)

EditXo.Undo;

ZapX;

end;

procedure TForm1. SpinEditnKeyPress (Sender: TObject; var Key: Char);

begin

If not (key in ['0'.'9','-',#8,DecimalSeparator]) then key:=#0;

end;

procedure TForm1. SpinEditnExit (Sender: TObject);

begin

setka.ColCount:=SpinEditn.Value+1;

n:=SpinEditn.Value-1;

ZapX;

end;

procedure TForm1. PolynomsKeyPress (Sender: TObject; var Key: Char);

begin

key:=#0;

procedure TForm1. CheckN1Click (Sender: TObject);

begin

DrawGraph;

end;

end.5. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ числСнных экспСримСнтов.

Π₯ΠΎΡ€ΠΎΡˆΠΎ обусловлСнныС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ (Π’Π²ΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ)

β„–

Π Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

Π’Π΅ΠΊΡ‚ΠΎΡ€ нСвязки®

Норма ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ||r||-Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ΅

r1=0,1 r2=0 r3=0

||r||=101

r1=0 r2=0,2 r3=0,3 r4=0,3

||r||=153

r1=0,2 r2=0,4

r3=0,3 r4=0,6

r5=0,1 r6=0,3

r7=0,12 r8=0,1

r9=0,4 r10=0,21

||r||=362

Π₯ΠΎΡ€ΠΎΡˆΠΎ обусловлСнныС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ (случайный Π²Ρ‹Π±ΠΎΡ€)

β„–

Π Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

Π’Π΅ΠΊΡ‚ΠΎΡ€ нСвязки®

Норма ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ||r||-Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ΅

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ случайной Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹

r1=0 r2=0 r3=0

||r||=13

ΠžΡ‚ 1 Π΄ΠΎ 5

r1=0 r2=0 r3=0 r4=0

||r||=36

ΠžΡ‚ 1 Π΄ΠΎ10

r1=0,14 r2=0,4

r3=0,13 r4=0,9

r5=0,32 r6=0,1

r7=0,12 r8=0,21

r9=0,2 r10=0,22

||r||=472

ΠžΡ‚ 1 Π΄ΠΎ 100

ΠŸΠ»ΠΎΡ…ΠΎ обусловлСнныС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ (Π’Π²ΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ)

β„–

Π Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

Π’Π΅ΠΊΡ‚ΠΎΡ€ нСвязки®

Норма ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ||r||-Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ΅

r1=0,1 r2=0,21 r3=0,3

||r||=1,45

r1=0,12 r2=0,2 r3=0,5 r4=0,21

||r||=2,67

r1=0,3 r2=0,32

r3=0,23 r4=0,78

r5=0,5 r6=0,36

r7=0,11 r8=0,54

r9=0,262 r10=0,50

||r||=3,49

ΠŸΠ»ΠΎΡ…ΠΎ обусловлСнныС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ (Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ 1/I+j)

β„–

Π Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

Π’Π΅ΠΊΡ‚ΠΎΡ€ нСвязки®

Норма ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ||r||-Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ΅

r1=0 r2=0 r3=0

||r||=1,83

r1=0 r2=0 r3=0 r4=0

||r||=2,08

r1=0 r2=0

r3=0 r4=0 r5=0 r6=0

r7=0 r8=0

r9=0 r10=0

||r||=2,92

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ интСрполяция Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ

Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ уравнСния Π²ΠΈΠ΄Π° A*Ρ…=B ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ систСм Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π° Π΄Π²Π° порядка Π²Ρ‹ΡˆΠ΅, Ρ‡Π΅ΠΌ Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… (ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Гаусса, Π–ΠΎΡ€Π΄Π°Π½Π°-Гаусса ΠΈ Ρ‚. Π΄), Π·Π° ΡΡ‡Π΅Ρ‚ возмоТности ΠΏΠΎΠ΄Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΡ€Ρ†ΠΈΠΈ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ систСмы.

ЧислСнныС экспСримСнты, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π½Π°Π΄ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌΠΈ систСмами с Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈ ΠΏΠ»ΠΎΡ…ΠΎ обусловлСнными ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… размСрностСй, ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ, Π½Π΅ ΡΠΌΠΎΡ‚ря Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ схСмы (Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°) ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄Π°Π΅Ρ‚ ряд прСимущСств ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ (ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Гаусса, Π–ΠΎΡ€Π΄Π°Π½Π°-Гаусса ΠΈ Ρ‚. Π΄), Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒ (Π²Π΅ΠΊΡ‚ΠΎΡ€ нСвязки) ΠΈ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π΅Ρ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ вычислСния.

ЧислСнныС экспСримСнты ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Ρ‹ Π½Π° ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π΅ Pentium 4 с ΠΎΠ΄Π½ΠΎΡ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ (real).

Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… источников

1. Π€Π°Π΄Π΄Π΅Π΅Π² Π”. К., Π€Π°Π΄Π΄Π΅Π΅Π²Π° Π’. Н. Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±Ρ€Ρ‹.-М.: Π€ΠΈΠ·ΠΌΠ°Ρ‚Π³ΠΈΠ·, 1963. 734 с.

2. ΠšΡƒΠ»ΡŒΡ‚ΠΈΠ½ Н. Π‘. ΠžΡΠ½ΠΎΠ²Ρ‹ программирования 0 Π’ Delphi 7. — Π‘Пб.: Π‘Π₯Π’-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2003. -608с.: ΠΈΠ».

3. Бобровский И. Π‘. Delphi 7. Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ курс. — Π‘Пб.: ΠŸΠΈΡ‚Π΅Ρ€, 2003. — 736 с.: ΠΈΠ».

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