![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 07.10.2010
Сообщений: 4
|
![]()
есть код
кидаю на форму - ничего не работает или я что-то не то задаю не понимаю (((( unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, StdCtrls, Grids; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Memo1: TMemo; DefinitionMatrix: TStringGrid; Button1: TButton; Button2: TButton; Chart1: TChart; Series1: TLineSeries; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; const Nmax=100; Type Mas1 = array[1..Nmax] of extended; var Form1: TForm1; x:mas1; y:mas1; a,b,c,d,h,s,alpha,beta: mas1; t,k: extended; // abcissa n: integer; //chislo uzlovih to4ek implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var ret,s1,s2: extended; i,j,truex: integer; a1,c1,b1,f1,z1: extended; h1,h2: mas1; left,right,q: extended; begin series1.Clear; n:=StrToInt(Edit1.Text); t:=StrToFloat(Edit2.Text); truex:=0; for i:=1 to n-1 do x[i]:=StrToFloat(DefinitionMatrix.Cells[1,i]); for i:=1 to n-1 do y[i]:=StrToFloat(DefinitionMatrix.Cells[2,i]); for i:=1 to n-2 do If x[i]<x[i+1] then else truex:=truex+1; If truex=0 then begin for i:=2 to n-1 do begin h1[i]:=x[i]-x[i-1]; end; h1[1]:=h1[2]; c[1]:=0; c[n-1]:=0; alpha[1]:=0; beta[1]:=0; for i:=2 to n-2 do begin h1[i]:=x[i]- x[i - 1]; h2[i]:=x[i + 1] - x[i]; A1:= h1[i]; C1:=2* (h1[i] + h2[i]); B1:= h2[i]; F1:= 6* ((y[i + 1] - y[i]) / h2[i] - (y[i] - y[i - 1]) / h1[i]); z1:= (A1 * alpha[i - 1] + C1); alpha[i] := -B1 / z1; beta[i] := (F1 - A1 * beta[i - 1]) / z1; end; for i:=n-2 downto 1 do begin c[i] := alpha[i+1] * c[i+1] + beta[i+1]; end; for i:=2 to n-1 do begin h1[i]:=x[i] - x[i - 1]; d[i]:=(c[i]-c[i-1])/h1[i]; b[i]:=h1[i]*c[i]/2-Sqr(h1[i])*d[i]/6+(y[i]-y[i-1])/h1[i]; end; memo1.Lines.Add('s0(x)='+floattostr (y[1])); for i:=2 to n-1 do begin memo1.Lines.Add(''); memo1.Lines.Add('s'+inttostr(i)+'(x )='+floattostr(y[i])+'+('+floattostr(b[i])+')(x-('+floattostr(x[i])+'))+('+floattostr(c[i])+'/2)(x-('+floattostr(x[i])+'))^2+('+floattostr(d[i])+'/6)(x-('+floattostr(x[i])+'))^3'); memo1.Lines.Add('na intervale['+floattostr(x[i-1])+';'+floattostr(x[i])+']'); end; for i:=1 to n-2 do begin if (t>=x[i]) and (t<x[i+1]) then begin memo1.Lines.Add(' '); s1:=y[i]+b[i]*(t-x[i])+(c[i]/2)*(t-x[i])*(t-x[i])+(d[i]/6)*(t-x[i])*(t-x[i])*(t-x[i]); end; end; memo1.Lines.Add(floattostr(s1)); q:=x[1]; series1.AddXY(x[1],y[1],''); for i:=2 to n-2 do begin repeat s2:=y[i]+b[i]*(q-x[i])+(c[i]/2)*(q-x[i])*(q-x[i])+(d[i]/6)*(q-x[i])*(q-x[i])*(q-x[i]); series1.AddXY(q,s2,''); q:=q+1; until (q>x[i+1]); end; series1.AddXY(x[n-1],y[n-1],''); end else showmessage ('Must x1<X2<X3<...<Xn'); end; procedure TForm1.Button2Click(Sender: TObject); begin n:=StrToInt(Edit1.Text); DefinitionMatrix.RowCount:=n; end; end. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
интерполяция сплайнами | tanek | Помощь студентам | 5 | 06.07.2011 00:23 |
Интерполяция кубическими сплайнами | Franzs | Общие вопросы Delphi | 0 | 25.04.2010 10:05 |
Интерполяция изображений(Сплайн интерполяция)?????) | Danyla | Помощь студентам | 0 | 13.04.2010 09:08 |
Помогите со сплайнами | KnDmPetr | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 25.03.2008 16:13 |
соединение точек с помощью линейной интерпаляции и интерпаляции кубическими сплайнами. | yulia | Помощь студентам | 6 | 09.10.2007 07:38 |