Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 18.03.2015
Сообщений: 14

Интерполяция по новой формуле

11.04.2017, 14:37. Показов 1116. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,помогите пожалуйста, есть программа - интерполяция по формуле лагранжа, все работает, только формула нужна иная для интерполяции - интерполяция по эрмиту, вот формула, где Wn(x)=(x-x1)(x-x2).....(x-xn). Кусок который нужно изменить выделен жирным шрифтом
C++
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <fstream>
#include <vector>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
using namespace std;
 
vector<double> X,Y;                                                             // Векторы для исходных данных
 
[B]double Lagrange(double arg)                                                     // Интерполирование по Лагранжу
{
double P,Res=0;
for(int i=0;i<X.size();i++)
 {
 P=1;
 for(int j=0;j<X.size();j++)
  if(i!=j) P*=(arg-X[j])/(X[i]-X[j]);
 Res+=P*Y[i];
 }
return Res;
}[/B]
 
void __fastcall TForm1::Button1Click(TObject *Sender)                           // Обработка
{
if(!OpenDialog1->Execute()) return;                                             // Файл не выбран - завершить
Chart1->Series[0]->Clear();                                                     // Инициализация всех параметров
Chart1->Series[1]->Clear();
Edit2->Clear();
Edit3->Clear();
Button2->Enabled=true;
Edit1->Text=OpenDialog1->FileName;
double x,y;
ifstream F(OpenDialog1->FileName.c_str());                                      // Открытие файла
while(!F.eof())                                                                 // Чтение файла до конца
 {
 F>>x>>y;
 if(F.fail())                                                                   // Если Некорректные данные
  {
  Chart1->Series[1]->Clear();                                                   // то очистить график
  Beep();                                                       
  ShowMessage("Ошибка файла данных!");                                          // вывести сообщение
  F.close();                                                                    // закрыть файл
  return;                                                                       // и выйти
  }
 X.push_back(x);                                                                // Сохранение данных в векторы
 Y.push_back(y);
 Chart1->Series[1]->AddXY(x,y);                                                 // Вывод точки на график
 }
F.close();                                                                      // закрытие файла
Button2->Enabled=true;
Application->ProcessMessages();                                                 // Немедленное отображение точек
x=Chart1->BottomAxis->Minimum;                                                  // Построение графика интерполяции
y=(Chart1->BottomAxis->Maximum-x)/Screen->Width;                                // Число точек графика - ширина экрана (максимально возможное)
for(int i=0;i<Screen->Width;i++)
 {
 Chart1->Series[0]->AddXY(x,Lagrange(x));                                       // Вычисление и добавление очередной точки
 x+=y;
 }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)                           // Интерполяция в произвольной точке
{
double x;
Edit3->Clear();
try
 {x=StrToFloat(Edit2->Text);}                                                   // Ввод аргумента
catch(...)                                                                      // Ошибка - вывод сообщение
 {
 Beep();
 ShowMessage("Некорректный аргумент!");
 Edit2->SetFocus();
 return;
 }
Edit3->Text=FloatToStr(Lagrange(x));                                            // Расчёт и вывод результата
}
//--------------
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.04.2017, 14:37
Ответы с готовыми решениями:

интерполяция по формуле лагранжа
Здравствуйте! Помогите, пожалуйста, написать программу. Мне нужно написать программу интерполяции по формуле лагранжа. У меня...

интерполяция по формуле в стирлинга
Здравствуйте, у меня не получается создать программу с динамическим вводом данных. Вот программа со статическим вводом данных. Помогите ее...

Не получается интерполяция по формуле Бесселя
Входные данные (x, y): (1 , 6); (2,7); (3,9); (4,4); (5,5) Составляю таблицу: Вот непосредственно сама формула бесселя...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.04.2017, 14:37
Помогаю со студенческими работами здесь

Найти элементы новой матрицы, каждый из которой определяются по формуле
Дана единичная матрица Е {{1, 1, 1, 1}, _ {1, 1, 1, 1}, _ ...

Интерполяция заданной функции второй формулой Ньютона (обратная интерполяция)
Программа накапливает ошибку, да и первые значения совсем уже &quot;приближённые&quot;. Явно что-то упустил. Посмотрите со стороны. #include...

Интерполяция полиномом Лагранжа и кусочная интерполяция
столкнулась с такой проблемой: написала интерполяцию Лагранжа x=; y=2*cos(x); function =inter(a,x,y) n=length(x); p=0; ...

Каждый из интегралов вычислить по формуле прямоугольника, по формуле трапеции и по формуле Симпсона
Каждый из интегралов вычислить по формуле прямоугольника, по формуле трапеции и по формуле Симпсона. Интегралы: ∫xe2xdx, пределы...

После добавления в БД новой строчки надо распечатать или просмотреть отчёт с новой строчкой по клику на кнопку
Вопрос такой: У меня Отчёт сделан с помощью rave ADOQuery1 подключен к RvDataSetConnection1 который подключен к RvProject1 После...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru