Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 07.10.2012
Сообщений: 44
1

Реализация численных методов. Интерполяционный полином Лагранжа n-й степени

20.03.2013, 13:48. Просмотров 2119. Ответов 1
Метки нет (Все метки)

Срочно, помогите! функция задана таблично (n+1 значение). Разработайте программу, строящую интерполяционный полином Лагранжа n-й степени
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.03.2013, 13:48
Ответы с готовыми решениями:

Интерполяционный полином Лагранжа
При выполнении работы необходимо спроектировать и реализовать программу пользователя для численного...

Интерполяционный полином Лагранжа на Delphi
Помогите реализовать интерполяционный полином Лагранжа на Делфи:) Вывод результата на экран.

Интерполяционный полином Лагранжа
Есть набор точек: X={1,6,9,4}; Y={6,9,2,0}; при помощи интерполяционного полинома нужно...

Интерполяционный полином Лагранжа
Помогите пожалуйста записать правильно формулу.

1
723 / 475 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
20.03.2013, 13:55 2
Лучший ответ Сообщение было отмечено yano4ka15 как решение

Решение

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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart;
 
type
  TForm1 = class(TForm)
    Chart1: TChart;
    Series1: TLineSeries;
    Series2: TLineSeries;
    Button2: TButton;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
type
  MyPoint = record
    X: double;
      Y: double;
  end;
 
var
  Form1: TForm1;
  table: array of MyPoint;
 
implementation
 
{$R *.dfm}
 
function f(x: double): double;
begin
    result:=1.0 / (1.0 + 25 * x * x);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  N: integer;
  min_val: double;
  max_val: double;
  min_f: double;
  max_f: double;
  h: double;
  fx, curr: double;
  i: integer;
begin
  // Количество узловых точек
    N := StrToInt(form1.Edit1.Text);
  // Начало интервала интерполирования
    min_val := StrToFloat(form1.Edit2.Text);
  // Конец интервала интерполирования
    max_val := StrToFloat(form1.Edit3.Text);
 
    min_f := MaxInt;
  max_f := -MaxInt;
    h := (max_val - min_val) / N;
 
  setlength(table, N);
    for i := 0 to N-1 do
  begin
        //fx
    curr := min_val + i * h;
    table[i].X:=curr;
    table[i].Y:=f(curr);
        //table.push_back(MyPoint(curr, (fx = f(curr))));
        //min_f = (min_f > fx) ? fx : min_f;
        //max_f = (max_f < fx) ? fx : max_f;
    end;
 
//  Form1->Chart1->BottomAxis->Minimum = -MaxInt;
//  Form1->Chart1->BottomAxis->Maximum = +MaxInt;
//  Form1->Chart1->BottomAxis->Minimum = min_val - h;
//  Form1->Chart1->BottomAxis->Maximum = max_val + h;
 
  Form1.Series1.Clear;
    for i := 0 to length(table)-1 do
        Form1.Series1.AddXY(table[i].X, table[i].Y);
end;
 
function f_linear(X, _xst, _xfn, _yst, _yfn: double): double;
begin
    result:=_yst + ((_yfn - _yst) / (_xfn - _xst)) * (X - _xst);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var
  n_points: integer;
  x_interval_start, y_interval_start: double;
  x_interval_finish, y_interval_finish: double;
  hx: double;
  i, j: integer;
begin
  // Количество точек между "узлами"
    n_points := StrToInt(form1.Edit4.Text);
 
    Form1.Series2.Clear;
    x_interval_start := table[0].X;
    y_interval_start := table[0].Y;
    for i := 1 to length(table)-1 do
  begin
        x_interval_finish := table[i].X;
        y_interval_finish := table[i].Y;
 
        hx := (x_interval_finish - x_interval_start) / n_points;
        for j := 0 to n_points do
    begin
            Form1.Series2.AddXY(x_interval_start + j * hx, f_linear(x_interval_start + j * hx, x_interval_start, x_interval_finish, y_interval_start, y_interval_finish));
        end;
        x_interval_start := x_interval_finish;
        y_interval_start := y_interval_finish;
  end;
end;
 
end.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.03.2013, 13:55

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Интерполяционный полином Лагранжа
Для функции, заданной таблицей х 1 3 4 у 12 4 6 провести параболическую интерполяцию;...

Интерполяционный полином Лагранжа
Помогите закончить программу) Все по методичке: Сама ошибка №1--вышла где я начал писать формулу...

Интерполяционный полином Лагранжа
Всем доброго времени суток. Задача вычислить значение в точке x=0.1 с точностью 0.01 используя...

Интерполяционный полином Лагранжа
Помогите выполнить задание в Mathcad Для заданной функции f(x) выполнить следующее: 1.Выбрать...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.