fork download
  1. program LagrangeInterpolation;
  2.  
  3. const
  4. MaxExperts = 5;
  5. MaxQuestions = 3;
  6.  
  7. type
  8. TDataArray = array[1..MaxExperts, 1..MaxQuestions] of Real;
  9.  
  10. var
  11. Data: TDataArray;
  12. NumExperts, NumQuestions: Integer;
  13.  
  14. // Функция для интерполяции методом Лагранжа
  15. function LagrangeInterpolate(const X, Y: array of Real; N: Integer; Xi: Real): Real;
  16. var
  17. i, j: Integer;
  18. Term, Result: Real;
  19. begin
  20. Result := 0.0;
  21.  
  22. for i := 0 to N - 1 do
  23. begin
  24. Term := Y[i];
  25. for j := 0 to N - 1 do
  26. begin
  27. if i <> j then
  28. Term := Term * (Xi - X[j]) / (X[i] - X[j]);
  29. end;
  30. Result := Result + Term;
  31. end;
  32.  
  33. LagrangeInterpolate := Result;
  34. end;
  35.  
  36. // Основная программа
  37. var
  38. X, Y: array[1..MaxExperts] of Real;
  39. i, j: Integer;
  40. InterpolatedValue, Xi: Real;
  41. begin
  42. // Ввод данных экспертов вручную
  43. NumExperts := 5;
  44. NumQuestions := 3;
  45.  
  46. // Пример данных: строки — эксперты, столбцы — ответы на вопросы
  47. Data[1, 1] := 5; Data[1, 2] := 7; Data[1, 3] := 6;
  48. Data[2, 1] := 6; Data[2, 2] := 8; Data[2, 3] := 7;
  49. Data[3, 1] := 5; Data[3, 2] := 6; Data[3, 3] := 7;
  50. Data[4, 1] := 7; Data[4, 2] := 8; Data[4, 3] := 6;
  51. Data[5, 1] := 6; Data[5, 2] := 7; Data[5, 3] := 8;
  52.  
  53. // Выполнение интерполяции для каждого вопроса
  54. for j := 1 to NumQuestions do
  55. begin
  56. // Инициализируем данные для интерполяции
  57. for i := 1 to NumExperts do
  58. begin
  59. X[i] := i; // Позиция эксперта
  60. Y[i] := Data[i, j]; // Ответ эксперта на вопрос j
  61. end;
  62.  
  63. // Вывод интерполированных значений для промежуточных точек
  64. WriteLn('Интерполированные значения для вопроса ', j, ':');
  65. Xi := 1.0;
  66.  
  67. while Xi <= NumExperts do
  68. begin
  69. InterpolatedValue := LagrangeInterpolate(X, Y, NumExperts, Xi);
  70. WriteLn('Эксперт ', Xi:4:1, ': ', InterpolatedValue:8:2);
  71. Xi := Xi + 0.1;
  72. end;
  73. end;
  74. end.
  75.  
Success #stdin #stdout 0s 5280KB
stdin
Standard input is empty
stdout
Интерполированные значения для вопроса 1:
Эксперт  1.0:     5.00
Эксперт  1.1:     5.56
Эксперт  1.2:     5.97
Эксперт  1.3:     6.25
Эксперт  1.4:     6.42
Эксперт  1.5:     6.49
Эксперт  1.6:     6.49
Эксперт  1.7:     6.43
Эксперт  1.8:     6.31
Эксперт  1.9:     6.17
Эксперт  2.0:     6.00
Эксперт  2.1:     5.82
Эксперт  2.2:     5.64
Эксперт  2.3:     5.47
Эксперт  2.4:     5.31
Эксперт  2.5:     5.18
Эксперт  2.6:     5.07
Эксперт  2.7:     5.00
Эксперт  2.8:     4.96
Эксперт  2.9:     4.96
Эксперт  3.0:     5.00
Эксперт  3.1:     5.08
Эксперт  3.2:     5.19
Эксперт  3.3:     5.35
Эксперт  3.4:     5.53
Эксперт  3.5:     5.74
Эксперт  3.6:     5.98
Эксперт  3.7:     6.23
Эксперт  3.8:     6.49
Эксперт  3.9:     6.75
Эксперт  4.0:     7.00
Эксперт  4.1:     7.23
Эксперт  4.2:     7.43
Эксперт  4.3:     7.58
Эксперт  4.4:     7.67
Эксперт  4.5:     7.68
Эксперт  4.6:     7.60
Эксперт  4.7:     7.41
Эксперт  4.8:     7.10
Эксперт  4.9:     6.63
Эксперт  5.0:     6.00
Интерполированные значения для вопроса 2:
Эксперт  1.0:     7.00
Эксперт  1.1:     7.72
Эксперт  1.2:     8.25
Эксперт  1.3:     8.59
Эксперт  1.4:     8.79
Эксперт  1.5:     8.86
Эксперт  1.6:     8.82
Эксперт  1.7:     8.70
Эксперт  1.8:     8.51
Эксперт  1.9:     8.27
Эксперт  2.0:     8.00
Эксперт  2.1:     7.71
Эксперт  2.2:     7.41
Эксперт  2.3:     7.13
Эксперт  2.4:     6.85
Эксперт  2.5:     6.61
Эксперт  2.6:     6.40
Эксперт  2.7:     6.23
Эксперт  2.8:     6.10
Эксперт  2.9:     6.03
Эксперт  3.0:     6.00
Эксперт  3.1:     6.03
Эксперт  3.2:     6.10
Эксперт  3.3:     6.23
Эксперт  3.4:     6.40
Эксперт  3.5:     6.61
Эксперт  3.6:     6.85
Эксперт  3.7:     7.13
Эксперт  3.8:     7.41
Эксперт  3.9:     7.71
Эксперт  4.0:     8.00
Эксперт  4.1:     8.27
Эксперт  4.2:     8.51
Эксперт  4.3:     8.70
Эксперт  4.4:     8.82
Эксперт  4.5:     8.86
Эксперт  4.6:     8.79
Эксперт  4.7:     8.59
Эксперт  4.8:     8.25
Эксперт  4.9:     7.72
Эксперт  5.0:     7.00
Интерполированные значения для вопроса 3:
Эксперт  1.0:     6.00
Эксперт  1.1:     6.06
Эксперт  1.2:     6.15
Эксперт  1.3:     6.24
Эксперт  1.4:     6.35
Эксперт  1.5:     6.47
Эксперт  1.6:     6.59
Эксперт  1.7:     6.70
Эксперт  1.8:     6.81
Эксперт  1.9:     6.91
Эксперт  2.0:     7.00
Эксперт  2.1:     7.08
Эксперт  2.2:     7.14
Эксперт  2.3:     7.18
Эксперт  2.4:     7.21
Эксперт  2.5:     7.22
Эксперт  2.6:     7.21
Эксперт  2.7:     7.18
Эксперт  2.8:     7.14
Эксперт  2.9:     7.08
Эксперт  3.0:     7.00
Эксперт  3.1:     6.91
Эксперт  3.2:     6.81
Эксперт  3.3:     6.70
Эксперт  3.4:     6.59
Эксперт  3.5:     6.47
Эксперт  3.6:     6.35
Эксперт  3.7:     6.24
Эксперт  3.8:     6.15
Эксперт  3.9:     6.06
Эксперт  4.0:     6.00
Эксперт  4.1:     5.96
Эксперт  4.2:     5.96
Эксперт  4.3:     6.00
Эксперт  4.4:     6.08
Эксперт  4.5:     6.22
Эксперт  4.6:     6.42
Эксперт  4.7:     6.69
Эксперт  4.8:     7.03
Эксперт  4.9:     7.47
Эксперт  5.0:     8.00