Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2009, 10:07   #1
asyagolub
Новичок
Джуниор
 
Регистрация: 15.06.2009
Сообщений: 1
Восклицание метод Лагранжа в Delphi

программисты помогите написать программу в Делфи тема: Интерполяция табличной функции по методу Лагранжа, с графиком интерполирующей кривой. Пожалуйста, если можете помочь, то не обходите мое сообщение стороной!!!!
asyagolub вне форума Ответить с цитированием
Старый 16.06.2011, 17:07   #2
hottabi4
 
Регистрация: 10.06.2011
Сообщений: 5
По умолчанию

вот тебе код:
Цитата:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart;

type
TForm1 = class(TForm)
Chart1: TChart;
Chart2: TChart;
Series1: TLineSeries;
Series2: TLineSeries;
Series3: TLineSeries;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
xmin=-10;
xmax=10;
n=9; //число узлов

var
Form1: TForm1;
h,x1,x2,x3: real;
x,y: array [1..11] of real;
d: array [0..100] of real;

implementation

{$R *.dfm}

function yf(x: real): real;
begin
yf:={ТУТ ДОЛЖНО БЫТЬ УРАВНЕНИЕ(ФУНКЦИЯ, например - 2*x*x+5*x+4)};
end;

function lag(xl, yl: array of real; xn: real; n1: integer): real;
var
i,j: integer;
lx,lj,p: real;
begin
lx:=0;
for j:=1 to n1 do
begin
lj:=1;
for i:=1 to n1 do
begin
if i<>j then
begin
p:=(xn-xl[i])/(xl[j]-xl[i]);
lj:=lj*p;
end;
end;
lx:=lx+yl[j]*lj;
end;
Result:=lx;
end;


procedure TForm1.FormCreate(Sender: TObject);
var
i,j: integer;
yl: real;

begin
h:=(xmax-xmin)/n;

x3:=xmin;
while x3<=xmax do
begin
Series1.AddXY(x3,yf(x3));
x3:=x3+1;
end;

x2:=xmin;
for i:=1 to n+1 do
begin
x[i]:=x2;
y[i]:=yf(x[i]);
x2:=x2+h;
end;

x3:=xmin;
j:=1;
while x3<=xmax do
begin
for i:=1 to n+1 do
Series2.AddXY(x3,lag(x,y,x3,n));

d[j]:=abs(yf(x3)-lag(x,y,x3,n));
Series3.AddXY(x3,d[j]);
x3:=x3+0.1;
j:=j+1;
end;
end;

end.
график основной функции не строится, только ставятся точки по которым программа строит его, второй это полином, третий - погрешность.

Последний раз редактировалось hottabi4; 16.06.2011 в 17:10.
hottabi4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
полином лагранжа milate Общие вопросы C/C++ 10 24.05.2009 13:44
Формула Лагранжа Diablo221 Помощь студентам 3 16.05.2009 20:56
Интерполяционный многочлен лагранжа 3.14oner Паскаль, Turbo Pascal, PascalABC.NET 2 10.11.2008 17:30
Cимплекс метод на Delphi Diamand Помощь студентам 3 14.03.2008 14:51
Помогите с интерполяционными функциями Лагранжа victor07 Помощь студентам 3 03.12.2007 15:47