Форум программистов, компьютерный форум CyberForum.ru

Численное дифференцирование (Лагранж) - C++

Восстановить пароль Регистрация
 
chernyatinskiy
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 36
23.10.2013, 22:38     Численное дифференцирование (Лагранж) #1
Доброго времени суток, нужно написать программу которая будет диференцировать интерполяционный многочлен Лагранжа (n=4).
Как бы все казалось не сложно, но увы. Интерполяцию ейткена вроде как помогли написать, но не уверен что правильно
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
#include <iostream>
#include <conio.h>
#include <stdio.h>
using namespace std;
 int main ()
{
system("COLOR 0A");
double ob, x1 , x2 , y1 , y2, p1 , p2 , pi , skolko , status; 
 
    system("echo Интерполяция X1 - X2 ");
    system("echo Ввести число:");
    cin >> ob; 
 
    system("echo Например 62, C1 = 60, L1 = 1.31 ,C2 = 80 , L2 = 1.29");
    cout << "C1 = ";
           cin >> x1;
    cout << "L1 = " ;
           cin >> x2;
    cout << "C2 = " ;
           cin >> y1;
    cout << "L2 = " ;  
           cin >> y2;
 
      p1 = y1 - x1;
      p2 = y2 - x2;
 
    pi = p2 / p1;
      skolko = ob - x1;
      status = x2 + (pi * skolko);
 
    cout << "_______________________________________________________________";
    cout << endl <<  ob << " = " << status;
    _getch ();
    system("CLS");
 
    return 0;
}
Может кто с Лагранжом помочь.
Я вроде бы нашел что-то но опять таки не уверен что правильно:
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
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <conio.h>
 
void main()
    {
    int n;
    double l, L, r ;
    int j , k ;
    float X=1.33;
    float x[6]={0.5, 0.70, 0.90, 1.10, 1.30, 1.50};
    double F[6]={0.8775826, 0.7648422, 0.6216100, 0.4535961, 0.2674988, 0.0707372} ;     // zna4eni9 funkcii iz tabl.
   int clrscr();
        std::cout<<"Istinnoe znachenie RAVNO: ";
        printf ( "%11.7f\n", cos(X)) ;
 
        for (n=2 ; n<6 ; n++)
        {
             L = 0 ;
            for (k = 0 ; k<n ; k++)
            {
              l=1;
                for (j = 0 ; j<n  ; j++)
                {
                    if (k!=j) { l = l *   (X - x[j]) / (x[k] - x[j]);}
                }
                L = L + (l * F[k]);
            }
 
 
            r= fabs (cos(X) - L);
            std::cout << "Mnogochlen Lagrandza " << n <<" ctepeni v tochke X RAVEN: ";
            printf ( "|%10.7f|\n", L);
            std::cout << "Pogreshnost ravna: ";
            printf ( "|%10.7f|\n\n", r);
 
 
        }
      getch();
        return;}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2013, 22:38     Численное дифференцирование (Лагранж)
Посмотрите здесь:

класс Символьное дифференцирование. C++
Лагранж C++
C++ Дифференцирование многочлена
C++ Символьное дифференцирование
C++ Численное интегрирование
C++ Дифференцирование
C++ Численное дифференцирование
C++ Численное дифференцирование основанное на методе Лагранжа

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

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

Текущее время: 01:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru