0 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 20
1

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

09.10.2012, 13:56. Показов 11962. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Помогите с заданием: Функция y=f(x) задана таблицей. Пользуясь интерполяционный полином Лагранжа, вычислить приближенное значение этой функции в заданной точке x.

Сам код:
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
#include <iostream>
#include "stdafx.h"
 
using namespace std;
 
 void main()
{
 
float x[7] = {1,1.02,1.05,1.08,1.16,1.19,1.2};
float y[7] = {0,0.019,0.049,0.086,0.122,0.157,0.182}; 
int i,j;
int n=8;
float f1,f2,L;
float X=1.137;
 
for (i=0;i<n;i++)
{
    f1=1;
    f2=1;
    L=0;
        for(j=0;j<n;j++)
            if(i!=j)
            {
                f1*=X-x[j];
                f2*=x[i]-x[j];
            }
            
L+=y[i]*f1/f2;
cout<<L<<endl;
return L;
}
 
 }
Но он у меня выдает ошибку, все перепробовал, ничего не выходит. Помогите.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.10.2012, 13:56
Ответы с готовыми решениями:

Построить по имеющимся данным интерполяционный полином Лагранжа и вычислить значение функции в точке x
Построить по имеющимся данным интерполяционный полином Лагранжа и вычислить значение функции в...

Вычислить интерполяционный полином Лагранжа
Здравствуйте! Помогите исправить ошибку в коде. Необходимо для индивидуальной функции вычислить...

Интерполяционный полином Лагранжа
Дана функция f(x) = xln(x) + 2xcos(x) a = 1; b = 2; Вычислить значение полинома Лагранжа. P.s....

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

11
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
09.10.2012, 14:06 2
у вас массивы размером 7 а цикл по 8 идет, и функция main возвращает void а вы пытаетесь L вернуть
0
0 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 20
09.10.2012, 14:21  [ТС] 3
Чуть-чуть подправил код, но слегка не тот результат, что ожидается. Мне нужно, чтобы выходило одно значение, как правильно запрограммировать переменную n, чтобы первое значение было не 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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
 int main()
{
 
float x[] = {1,1.02,1.05,1.08,1.16,1.19,1.2};
float y[] = {0,0.019,0.049,0.086,0.122,0.157,0.182}; 
int i,j;
int n=1;
float f1,f2,L;
 
float X=1.137;
 
for (i=0;i<n+1;i++)
{
        f1=1;
        f2=1;
        L=0;
        for(j=0;j<n+1;j++)
            if(i!=j)
            {
                f1*=X-x[j];
                f2*=x[i]-x[j];
            }
            
L+=y[i]*f1/f2;
cout<<L<<endl;
 
}
return L;
 }
0
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
09.10.2012, 14:24 4
а дайте ссылку на формулы, а то я не сталкивался с этим, может в мат части ошибка , а не в програмировании
и если вы хотите видеть 1 результат а не несколько штук то перенесите вывод L перед строкой возврата
C++
1
2
cout<<L<<endl;
return L;
0
0 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 20
09.10.2012, 14:30  [ТС] 5
Формула с методички
Пользуясь интерполяционный полином Лагранжа, вычислить приближенное значение функции
0
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
09.10.2012, 14:39 6
чот немного я не понял с p(x) , ну да ладно, про вывод я вам написал, проверьте, то ли получается?
0
0 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 20
09.10.2012, 14:42  [ТС] 7
Теперь она вообще перестала, что-то выводить =)
0
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
09.10.2012, 14:46 8
у меня выводит 0.068
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
 void main()
{
 
    float x[7] = {1,1.02,1.05,1.08,1.16,1.19,1.2};
    float y[7] = {0,0.019,0.049,0.086,0.122,0.157,0.182};
    int i,j;
    int n=7;
    float f1,f2,L;
    float X=1.137;
 
    for (i=0;i<n;i++)
    {
        f1=1;
        f2=1;
        L=0;
            for(j=0;j<n;j++)
                if(i!=j)
                {
                    f1*=X-x[j];
                    f2*=x[i]-x[j];
                }
 
    L+=y[i]*f1/f2;
 
    }
    cout<<L<<endl;
    system("pause");
}
0
0 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 20
09.10.2012, 14:53  [ТС] 9
Так ведь значение (X=1,137) по идее будет 8 в массиве, или я ошибаюсь?
0
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
09.10.2012, 14:57 10
ошибаешься, с чего бы это ему быть в массиве, тем более 8 если ты явно память выделил под 7
1
0 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 20
09.10.2012, 15:02  [ТС] 11
Огромное спасибо!
0
zaNudda
10.10.2012, 17:54 12
А нафига внутри цикла L обнулять?
10.10.2012, 17:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2012, 17:54
Помогаю со студенческими работами здесь

Интерполяционный полином Лагранжа
Привет всем! ;)Такой вопрос, имею лабораториум по програмированию и получил несколько заданий, это...

Найти приближенное значение функции, заданной таблично (интерполяционный многочлен Лагранжа)
Написать программу на языке С которая: находит приближённое значение функции заданной табличным...

Построить численную интерполяцию функции, используя интерполяционный полином Лагранжа
Построить численную интерполяцию функции y=f(x)=(2+x(1+cos(x))) на отрезке в точках X...

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


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

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

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