Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 1
Регистрация: 27.01.2012
Сообщений: 42
1

Метод Логранжа (логарифмирование)

18.08.2012, 11:29. Показов 861. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть программа, но при запуске выдаёт ошибку подскажите
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
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;
    Chart3: TChart;
    Series3: TLineSeries;
    Series2: TLineSeries;
    Series1: 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.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.08.2012, 11:29
Ответы с готовыми решениями:

C++ (Логранжа)
Помогите пожалуйста,очень надо: 1.1. В прикладной программе проводится интерполяция функции: ...

Дискретное логарифмирование
Ребят, помогите, пожалуйста. Зачет завтра. 2^x=a( mod p) * *= - сравнимо Вычислить индекс x при...

Логарифмирование ряда
Есть последовательность, {x}_{n} = \left(1 + \frac{1}{2} \right)\left(1 + \frac{1}{4}...

Найти производные используя предварительное логарифмирование

1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
18.08.2012, 13:07 2
Delphi
1
2
x,y: array [1..11] of real;
d: array [0..100] of real;
Это статистические массивы
Delphi
1
function lag(xl, yl: array of real; xn: real; n1: integer): real;
параметр динамический массив
однако пишете
Delphi
1
2
3
4
for j:=1 to n1 do
begin
lj:=1;
for i:=1 to n1 do
как в статистических массивах.
Вы уж разберитесь с массивами что Вам нужно и чего Вы хотите.

Добавлено через 6 минут
Если написать так, то этой ошибки не будет. В суть программы не вникал.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
var
  Form1: TForm1;
const
xmin=-10;
xmax=10;
n=9; //число узлов
type mas=array of real;
var
h,x1,x2,x3: real;
x,y,d: mas;
implementation
 
{$R *.dfm}
function yf(x: real): real;
begin
yf:=(2*x*x+5*x+4);
end;
 
function lag(xl, yl: mas; xn: real; n1: integer): real;
var
i,j: integer;
lx,lj,p: real;
begin
lx:=0;
for j:=0 to n1-1 do
begin
lj:=1;
for i:=0 to n1-1 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;
setlength(x,n+1);
setlength(y,n+1);
for i:=0 to n 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));
setlength(d,j);
d[j-1]:=abs(yf(x3)-lag(x,y,x3,n));
Series3.AddXY(x3,d[j-1]);
x3:=x3+0.1;
j:=j+1;
end;
end;
1
18.08.2012, 13:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.08.2012, 13:07
Помогаю со студенческими работами здесь

СЛАУ. Метод обратной матрицы, метод Гаусса, метод Крамера, метод Зейделя
Помогите ребят. Не могу построить алгоритмы для этих методов Язык C++

Написать три алгоритма решения СЛАУ: Метод прогонки, метод квадратных корней, метод вращений
Начал писать курсовую. Нужно написать три алгоритма решения СЛАУ: прогонки, квадратных корней,...

Метод медиан из трех элементов VS улучшенный быстрый метод сортировки(метод Бентли-Макилроя)
Здравствуйте! Дали весьма интересное задание. Сравнить два вышеуказанных метода сортировки для...

Мой код - метод бисекции, метод секущих (метод хорд)
Всем привет!!! Изучаем в институте С++. Сделал код, и там, и там одна и та же проблема - при любых...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru