5 / 5 / 1
Регистрация: 17.10.2015
Сообщений: 382
1

Вычисление интеграла методом Ньютона-Котеса

07.03.2016, 17:04. Показов 5606. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан интеграл: https://www.cyberforum.ru/cgi-bin/latex.cgi?\int_{0}^{\pi /2}\frac{x+sin(x)}{1+cos(x)}

Методом Ньютона-Котеса вычислить интеграл (n=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
#include<iostream>
#include<math.h>
using namespace std;
typedef double D;
D nyut_k_6(D a,D b,D f(x),eps);// прототип
int main()
{ 
setlocale(LC_ALL,"rus_rus.1251"); 
int n=6;
D a,b,eps,f(x);
D H[6]={216,27,272,27,216,41};
D H0=41;
D INT1,INT2;
D h,S,hk,xi; 
int k=1; 
int i,m; 
cout<<"допустимая точность вычисления = "<<eps<<endl; 
do 
{ 
    nyut_k_6(0,90,fun,0.0001);// Обращение к функции
k=k*2; 
INT1=INT2; 
hk=(b-a)/k; // шаг интегрирования
h=hk/n;
S=(f(a)+(b))*H0;
m=n*k;
for(i=1;i<m;i++) 
{ 
    xi=a+i*h;
    S+=H[(i-1)%n]*f(xi);
} 
INT2=hk*S;
} 
while(fabs(INT1-INT2)>=eps) ;//модуль
return INT2; 
}
 
 
 
D nyut_k_6(D a,D b,D f(x),eps)// метод Ньютона-Котеса
{
 D fun(D x)
{
    
    int k_obr;
    k_obr++;// Кол-во обращений к функции
 
    return (x+sin(x))/(1+cos(x));
 }
return 1;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.03.2016, 17:04
Ответы с готовыми решениями:

Нахождение интеграла методом Ньютона-Котеса
Добрый вечер,Ребят, помогите пожалуйста написать код на С++ Нахождение интеграла методом...

Вычисление определенного интеграла и решение уравнений методом Ньютона.
С методом дихотомии разобрался,но надо выполнить еще два задания.С заданной точностью найти корень...

Програмно организовать метод решения интеграла методом Ньютона
интеграл (Cos(x)*Cos(x))dx

Вычисление интеграла методом прямоугольника и методом трапеций
Есть 2 кода. Вычисление методом прямоугольника и вычисление методом трапеций. Написал два кода. Но...

5
4 / 4 / 9
Регистрация: 07.03.2016
Сообщений: 44
07.03.2016, 17:38 2
C++
1
2
3
4
5
6
7
8
D nyut_k_6(D a,D b,D f(x),eps){// метод Ньютона-Котеса
 D fun(D x){
  int k_obr;
  k_obr++;// Кол-во обращений к функции
  return (x+sin(x))/(1+cos(x));
 }
 return 1;
}
Определяешь внутри функции функцию?(D fun(D x) )
0
5 / 5 / 1
Регистрация: 17.10.2015
Сообщений: 382
08.03.2016, 07:14  [ТС] 3
ну а как исправить?
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
#include<iostream>
#include<math.h>
using namespace std;
typedef double D;
D nyut_k_6(D a,D b,D f(D),D eps);// прототип
 
int main()
{ 
setlocale(LC_ALL,"rus_rus.1251"); 
int n=6;
D a,b,eps,f(D);
D H[6]={216,27,272,27,216,41};
D H0=41;
D INT1,INT2;
D h,S,hk,xi; 
int k=1; 
int i,m;
cout<<"допустимая точность вычисления = "<<eps<<endl; 
do 
{ 
    nyut_k_6(0,90,fun,0.0001);// Обращение к функции
k=k*2; 
INT1=INT2; 
hk=(b-a)/k; // шаг интегрирования
h=hk/n;
S=(f(a)+(b))*H0;
m=n*k;
for(i=1;i<m;i++) 
{ 
    xi=a+i*h;
    S+=H[(i-1)%n]*f(xi);
} 
INT2=hk*S;
} 
while(fabs(INT1-INT2)>=eps) ;//модуль
return INT2; 
}
 
 
D fun(D x)
{
    
    int k_obr=0;
    k_obr++;// Кол-во обращений к функции
 
    return (x+sin(x))/(1+cos(x));
 }
D nyut_k_6(D a,D b,D f(D),D eps)// метод Ньютона-Котеса
{
 
return 1;
}
0
4 / 4 / 9
Регистрация: 07.03.2016
Сообщений: 44
08.03.2016, 12:00 4
C++
1
2
3
D nyut_k_6(D a,D b,D f(D),D eps){
    return 1;
}
Мне чертовски нравится эта функция)
А вообще ну уж очень много тут ошибок,причем даже с самим синтаксисом. Серьезно,почитай учебник какой-нибудь,или одну из сотни статей,что бы не писать такие функцию.
ДА просто посмотри на прототип функции:
C++
1
D nyut_k_6(D a,D b,D f(x),eps);
1)зачем сокращать double до D? Как по мне лишнее;
2)D f(x) - в аргументе ты таким образом объявляешь еще одну функцию,к тому же с аргументом типа x, тоже нельзя так делать;
3)eps - что это такое? Он у тебя даже выше не объявлен.

Прочитай про объявление,переменные,типы,функции...и тогда ты сам сможешь все легко написать. Удачи тебе в изысканиях!
0
5 / 5 / 1
Регистрация: 17.10.2015
Сообщений: 382
08.03.2016, 15:45  [ТС] 5
Сокращал D специально, так сказано по заданию. Сделал по новой, но что-то опять не так(((
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
#include<iostream>
#include<math.h>
using namespace std;
typedef double D;
D fun(D x);
D nyut_k_6(D a,D b,D f(D),D eps) ;
void main()
{
setlocale(LC_ALL,"rus_rus.1251"); 
D a=0;
D b=1;
D eps;
D prib_nyut;
cout<<"Введите допустимую точность вычисления:  ";
cin>>eps;
prib_nyut=nyut_k_6(a,b,fun,eps);
cout<<"Ньютон-К. для n=6, Интеграл= "<<prib_nyut<<endl;
}
D nyut_k_6(D a,D b,D f(D),D eps) // метод Ньютона-Котеса
{
    setlocale(LC_ALL,"rus_rus.1251"); 
int n=6;
D H[6]={216,27,272,27,216,41};
D H0=41;
D INT1,INT2=1;
D h,S,hk,xi; 
int k=1; 
int i,m;
do 
{ 
k=k*2; 
INT1=INT2; 
hk=(b-a)/k; // шаг интегрирования
h=hk/n;
S=(f(a)+(b))*H0;
m=n*k;
for(i=1;i<m;i++) 
{ 
    xi=a+i*h;
    S+=H[(i-1)%n]*f(xi);
} 
INT2=hk*S;
}
while(fabs(INT1-INT2)>=eps) ;//модуль
return INT2;
}
D fun(D x)
{
    return (x+sin(x))/(1+cos(x));
 }
0
52 / 52 / 24
Регистрация: 24.12.2011
Сообщений: 133
08.03.2016, 15:56 6
C++
1
D nyut_k_6(D a,D b,D f(D),D eps)
Передавать функцию как параметр так, как это делаешь ты, нельзя. Это делается с помощью указателя на функцию:
C++
1
D nyut_k_6(D a,D b,D (*f)(D),D eps)
А вообще читай хотя бы, какие ошибки компилятор выдает.
0
08.03.2016, 15:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.03.2016, 15:56
Помогаю со студенческими работами здесь

Формулы Гаусса и Ньютона-Котеса
Всем тем кто читает мою тему!!! Привет!!! Я очень надеюсь на вашу помощь,и искренне верю что...

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

Вычисление интеграла методом трапеций
Составить программу для вычисления определенного интеграция- лу: s=\int_{a}^{b}f(x)dx;согласно...

Вычисление интеграла методом трапеций
Помогите плиз найти ошибки #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt;...


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

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

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