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

Вопрос по интерполяции лагранжа

14.12.2009, 17:27. Показов 3553. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <iostream.h>
#include <conio.h>
 
const MAX_points=20;
 
 
void ShowTitle()
 
clrscr();
cout<<"Интерполяционный метод Лагранжа<<endl;
 
 
int GetNumOfPoints()
 
int Ret=0;
do cout<<" Введи те число точек (l.."<<MAX_POINT<<"):";
ci>>Ret;
 
while((Ret<l )&&(Ret>M AX_POINTS));
return Ret;
 
 
void SetValues(float* X,float* FX,int Size)
 
int i;
for(i =0;i<MAX_POINTS;i++) 
X[i]=0; FX[i]=0; 
 
for(i =0;i<Size;i++)
cou<<"To4Ka X["<<i<<"] = "; 
cin>>X[i];
 
for(i =0;i<Size;i++)
cout<<"Значение функции в точке F(X[<<i<<"]) = ";
cin>>FX[i];
 
 
float SctPointValue()
 
float Ret;
cout<<"Задайте значение X, для которою надо посчитать F(X) по Лагранжу:";
 
cin>>Ret;
return Ret; 
float UseLagrangeMethod(float* X,float* FX, int Size,float Point)
 
int i,j;
float PV,U,D;
PV = 0;
 
for (i = 0;i<Size;i++)
U=I;D=1;
 
for (j=0;j<Size;j++)
 
if(j!=i)
 
U = U*(Point-X[j]); 
D = D*(X[i]-X[j]);
 
 
PV = PV + (U/D)*FX[i];
 
return PV;
 
 
void ShowVal(float Val)
 
cou<<"Значение полинома в данной точке = "<<Val<<endl; 
cout<<"Нажмите любую клавишу для продолжения..."<<endl; 
getch();
 
int ExitProgramm()
 
char c;
do cout<<"Повторить программу (|Y/N|) ? : ";
cin>>c;
while((c == *y')&&(c == *Y*)&&(c = =n)&&(c == 'N')); 
 
if((c= ='y')||(c == 'Y')) return 1;
else return 0;
 
int RepeatMethod()
 
char c;
do cout<<"Повторить вычисления для данного полинома (|Y/N| ) ? : ";
cin>>c;
while((c == *y')&&(c == *Y*)&&(c = =n)&&(c == 'N')); 
 
if((c= ='y')||(c == 'Y')) return 1;
else return 0;
 
 
void main()
int Size;
float X[MAX_POINTS],F_X[MAX_POINTS],PointVa-l,PolyVal;
 
 
Show
Title() 
; do
Size =
GetNumOfPoints();
SetValues(X,F_X,Size);
do
PointVal = SetPointValue();
PolyVal = UseLagrangeMethod(X,F_X,Size,PointV al); ShowVal(PolyVal);
 
while(RepeatMethod());
while(ExitProgramm());


есть такой вот код, на который выдаеться
: fatal error C1083: Не удается открыть файл include: iostream.h: No such file or directory

удаление расширения иострима приводит к 130 ошибкам...что не так, помогите?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.12.2009, 17:27
Ответы с готовыми решениями:

Разработать алгоритм интерполяции значений функции методом Лагранжа. В качестве тестового примера использовать функцию Рунге
Народ срочно нужна помощь в написании программы. Тема : Разработать алгоритм интерполяции значений...

Итерации - реализация интерполяции Лагранжа
Здравствуйте. Дали задание реализовать интерполяционную формулу Лагранжа(на рисунке ниже). Так...

Разработать подпрограмму для интерполяции полиномом Лагранжа.
Разработать подпрограмму для интерполяции полиномом Лагранжа. В маткаде...

Оценить погрешность интерполяции многочленом Лагранжа и сплайнами
Господа, в наличии функция f(x)=-x^3. Необходимо оценить погрешность интерполяции многочленом...

15
78 / 78 / 29
Регистрация: 01.08.2009
Сообщений: 177
14.12.2009, 17:31 2
Попробуй так:
C++
1
#include<iostream>
0
0 / 0 / 0
Регистрация: 22.03.2009
Сообщений: 16
14.12.2009, 17:33  [ТС] 3
я же написал уже..
удаление расширения иострима приводит к 130 ошибкам...
0
12 / 12 / 2
Регистрация: 08.07.2009
Сообщений: 45
14.12.2009, 17:42 4
Когда ты удаляешь расширение, то надо прописывать пространство имен для всех имен относящихся к iostream.
т.е например std::cout вместо cout.

Ну или прописать в начале программы
using namespace std;
(хотя это потом может быть черевато)
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
14.12.2009, 21:14 5
Styks, поверь, у тебя ошибок не меньше 130, если не больше, а это только синтаксические. Ведь С++ - это не делфи
0
0 / 0 / 0
Регистрация: 22.03.2009
Сообщений: 16
14.12.2009, 22:33  [ТС] 6
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <iostream>
 
#include <conio.h>
using namespace std;
const MAX_POINTS=20;
 
 
void ShowTitle()
 
 
std::cout<<"Интерполяционный метод Лагранжа"<<endl;
 
 
int GetNumOfPoints()
 
    int Ret=0;
do std::cout<<" Введи те число точек (l.."<<MAX_POINTS<<"):";
std::cin>>Ret;
 
while((Ret<l )&&(Ret>MAX_POINTS));
 return Ret;
    
 
void SetValues(float* X,float* FX,int Size)
 
int i;
for(i =0;i<MAX_POINTS;i++) 
X[i]=0; FX[i]=0; 
 
for(i =0;i<Size;i++)
std::cout<<"To4Ka X["<<i<<"] = "; 
std::cin>>X[i];
 
for(i =0;i<Size;i++)
std::cout<<"Значение функции в точке F(X"[<<i<<]") = ";
std::cin>>FX[i];
 
 
float SetPointValue()
 
float Ret;
std::cout<<"Задайте значение X, для которою надо посчитать F(X) по Лагранжу:";
 
std::cin>>Ret;
return Ret; 
 
float UseLagrangeMethod(float* X,float* FX, int Size,float Point)
 
int i,j;
float PV,U,D;
PV = 0;
 
for (i = 0;i<Size;i++)
U=1;D=1;
 
for (j=0;j<Size;j++)
 
if(j!=i)
 
U = U*(Point-X[j]); 
D = D*(X[i]-X[j]);
 
 
PV = PV + (U/D)*FX[i];
 
return PV;
 
 
void ShowVal(float Val)
 
cout<<"Значение полинома в данной точке = "<<Val<<endl; 
cout<<"Нажмите любую клавишу для продолжения..."<<endl; 
getch();
 
int ExitProgramm()
 
char c;
do std::cout<<"Повторить программу (|Y/N|) ? : ";
std::cin>>c;
 while((c == 'y')&&(c == 'Y')&&(c =='n')&&(c == 'N')); 
 
if((c=='y')||(c == 'Y')) return 1;
else return 0;
    
int RepeatMethod()
 
char d;
do std::cout<<"Повторить вычисления для данного полинома (|Y/N| ) ? : ";
std::cin>>d;
while((d == 'y')&&(d == 'Y')&&(d =='n')&&(d == 'N')); 
 
if((d= ='y')||(d == 'Y')) return 1;
else return 0;
 
 
void main()
 int Size;
float X[MAX_POINTS],F_X[MAX_POINTS],PointVal,PolyVal;
 
 
GetNumOfPoints();
SetValues(X,F_X,Size);
PointVal = SetPointValue();
PolyVal = UseLagrangeMethod(X,F_X,Size,PointVal);
ShowVal(PolyVal);
while (RepeatMethod());
while (ExitProgramm());

переправил, не помогает
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
14.12.2009, 22:36 7
Styks, открой любой учебник по С/С++ и прочитай первые две-три главы. Ты ведь синтаксис просто не знаешь.
0
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
14.12.2009, 22:38 8
Styks,
переправил, не помогает

если тебе не нравятся фигурные скобочки, переходи на Python
0
0 / 0 / 0
Регистрация: 22.03.2009
Сообщений: 16
14.12.2009, 22:38  [ТС] 9
что конкретно я в них загонять то должен?....
0
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
14.12.2009, 23:43 10
Styks,

что конкретно я в них загонять то должен?....

загоняют коров в стойло, а в C++ фигурный скобки представляют из себя составной оператор
0
0 / 0 / 0
Регистрация: 22.03.2009
Сообщений: 16
15.12.2009, 00:19  [ТС] 11
Как я люблю вас, пафосных программеров. Такие все умные. нет прсото подсказать где открыть и закрыть скобки во всех этих интах и прочем. НЕт, каждому надо сострить. Учимся мы студенты. Стоило бы радоваться, а не на питон отсылать
0
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
15.12.2009, 00:29 12
Styks,

Учимся мы студенты.

Ну так учись. начни с простого, напиши программу "HelloWorld", и добейся чтобы она работала. Потом переходи к сложному.

ну а если ты учиться не желаешь, я-то чё могу поделать?
0
0 / 0 / 0
Регистрация: 22.03.2009
Сообщений: 16
15.12.2009, 00:31  [ТС] 13
на то нет времени. сессия требует Лагранжа, а не привет мир
0
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
15.12.2009, 00:40 14
на то нет времени.

а я люблю вас, вери деловых и занятых студней

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

вот тебе в качестве примера правильный вариант первой функции. вкупе с уже упоминавшимся советом о прочтении учебника должно дать плоды. если же нет... ну что ж, "умерла так умерла" (((Ж

C++
1
2
3
4
5
6
7
#include <iostream>
 
void ShowTitle()
{ 
    system("cls");
    std::cout << "Интерполяционный метод Лагранжа" << std::endl;
}
clrscr - нестандартная функция поэтому работать будет не везде.
0
0 / 0 / 0
Регистрация: 22.03.2009
Сообщений: 16
15.12.2009, 00:41  [ТС] 15
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <iostream>
#include <stdafx.h>
#include <conio.h>
 
const MAX_POINTS=20;
 
 
void ShowTitle(){
 
system("cls");
    std::cout<<"Интерполяционный метод Лагранжа"<< std::endl;
 
 
int GetNumOfPoints();{
 
    int Ret=0;
do cout<<" Введи те число точек (l.."<<MAX_POINTS<<"):";
cin>>Ret;
 
while((Ret<l)&&(Ret>MAX_POINTS));
 return Ret;
    
}
void SetValues(float* X,float* FX,int Size)
{
int i;
for(i =0;i<MAX_POINTS;i++) 
X[i]=0; FX[i]=0; 
 
for(i =0;i<Size;i++)
cout<<"To4Ka X["<<i<<"] = "; 
cin>>X[i];
 
for(i =0;i<Size;i++)
cout<<"Значение функции в точке F(X"[<<i<<]") = ";
std::cin>>FX[i];
 
 
float SetPointValue()
 
float Ret;
std::cout<<"Задайте значение X, для которою надо посчитать F(X) по Лагранжу:";
 
std::cin>>Ret;
return Ret; 
 
float UseLagrangeMethod(float* X,float* FX, int Size,float Point)}
 
int i,j;
float PV,U,D;
PV = 0;
 
for (i = 0;i<Size;i++)
U=1;D=1;
 
for (j=0;j<Size;j++)
 
if(j!=i)
 
U = U*(Point-X[j]); 
D = D*(X[i]-X[j]);
 
 
PV = PV + (U/D)*FX[i];
 
return PV;
 
 
void ShowVal(float Val)
 
cout<<"Значение полинома в данной точке = "<<Val<<endl; 
cout<<"Нажмите любую клавишу для продолжения..."<<endl; 
getch();
 
int ExitProgramm()
 
char c;
do std::cout<<"Повторить программу (|Y/N|) ? : ";
std::cin>>c;
 while((c == 'y')&&(c == 'Y')&&(c =='n')&&(c == 'N')); 
 
if((c=='y')||(c == 'Y')) return 1;
else return 0;
    
int RepeatMethod()
 
char d;
do std::cout<<"Повторить вычисления для данного полинома (|Y/N| ) ? : ";
std::cin>>d;
while((d == 'y')&&(d == 'Y')&&(d =='n')&&(d == 'N')); 
 
if((d= ='y')||(d == 'Y')) return 1;
else return 0;
 
 
void main()
{
 int Size;
float X[MAX_POINTS],F_X[MAX_POINTS],PointVal,PolyVal;
 
 
GetNumOfPoints();
SetValues(X,F_X,Size);
PointVal = SetPointValue();
PolyVal = UseLagrangeMethod(X,F_X,Size,PointVal);
ShowVal(PolyVal);
while (RepeatMethod());
while (ExitProgramm());}}
всего 8 ошибок осталось
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
15.12.2009, 01:28 16
Styks, не всего, а пока 8. Все же прочти сначала книгу, иначе здесь будет просто флудилка, которую я прикрою
0
15.12.2009, 01:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.12.2009, 01:28
Помогаю со студенческими работами здесь

Подскажите литературу по интерполяции функции двух переменных используя полиномы Лагранжа и Ньютона
Друзья подскажите литература по интерполяции функции двух переменных используя для этого полиномы...

Написать две программы для интерполяции функции по формулам Лагранжа при равномерном расположении узлов
Доброго времени суток. Помогите, пожалуйста. Есть такое задание: написать две программы для...

Задача интерполяции методом полинома Ньютона и полинома Лагранжа
Решить задачу интерполяции методом полинома Ньютона и полинома Лагранжа 1 2 4 ...

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


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

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

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