Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 5.00
Styks
0 / 0 / 0
Регистрация: 22.03.2009
Сообщений: 16
#1

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

14.12.2009, 17:27. Просмотров 2919. Ответов 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
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());


http://www.cyberforum.ru/cpp-beginners/thread297274.html
есть такой вот код, на который выдаеться
: fatal error C1083: Не удается открыть файл include: iostream.h: No such file or directory

удаление расширения иострима приводит к 130 ошибкам...что не так, помогите?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2009, 17:27
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вопрос по интерполяции лагранжа (C++):

Погрешность интерполяции на C++
написал код для интерполяционного полинома Ньютоно, он работает правильно, но...

Алгоритм линейной интерполяции
Есть массив значений х с точками 0, 2, 4, 6, ... 30, 35, 40, 45.. и т.д., и...

Метод линейной интерполяции
Нужно решить уравнение sin(x)+log(x)=1 методом методом линейной интерполяции...

Алгоритм процедуры интерполяции
Очень нужна помощь с написанием кода. Задание: разработать алгоритм процедуры...

Ошибки в программе интерполяции функции
выдает ошибки Unit1.cpp(194): E2209 Unable to open include file 'graphics.h'...

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

Ну или прописать в начале программы
using namespace std;
(хотя это потом может быть черевато)
0
M128K145
Эксперт JavaЭксперт С++
8320 / 3540 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
14.12.2009, 21:14 #5
Styks, поверь, у тебя ошибок не меньше 130, если не больше, а это только синтаксические. Ведь С++ - это не делфи
0
Styks
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
M128K145
Эксперт JavaЭксперт С++
8320 / 3540 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
14.12.2009, 22:36 #7
Styks, открой любой учебник по С/С++ и прочитай первые две-три главы. Ты ведь синтаксис просто не знаешь.
0
Rififi
2363 / 1056 / 104
Регистрация: 03.05.2009
Сообщений: 2,656
14.12.2009, 22:38 #8
Styks,
переправил, не помогает

если тебе не нравятся фигурные скобочки, переходи на Python
0
Styks
0 / 0 / 0
Регистрация: 22.03.2009
Сообщений: 16
14.12.2009, 22:38  [ТС] #9
что конкретно я в них загонять то должен?....
0
Rififi
2363 / 1056 / 104
Регистрация: 03.05.2009
Сообщений: 2,656
14.12.2009, 23:43 #10
Styks,

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

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

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

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

ну а если ты учиться не желаешь, я-то чё могу поделать?
0
Styks
0 / 0 / 0
Регистрация: 22.03.2009
Сообщений: 16
15.12.2009, 00:31  [ТС] #13
на то нет времени. сессия требует Лагранжа, а не привет мир
0
Rififi
2363 / 1056 / 104
Регистрация: 03.05.2009
Сообщений: 2,656
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
Styks
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
M128K145
Эксперт JavaЭксперт С++
8320 / 3540 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
15.12.2009, 01:28 #16
Styks, не всего, а пока 8. Все же прочти сначала книгу, иначе здесь будет просто флудилка, которую я прикрою
0
15.12.2009, 01:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2009, 01:28
Привет! Вот еще темы с решениями:

Создание метода интерполяции по блоксхеме
Здравствуйте. Помогите пожалуйста написать метод интерполяции по данной схеме,...

Найти номер элемента методом интерполяции
в первой части ошибок нет,показывает ошибку во второй части,где требуется найти...

Метод однократной интерполяции (ошибка в реализации)
имеется схема алгоритма, метода однократной интерполяции. нужно реализовать...

Как можно провести интерполяции между двумя векторами?
Здарова всем. Ребят, задают здесь вопрос, потому что здесь больше народу, хотя...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru