интеграл гаусса



Метод гаусса интегрирование

Автор Анастасия Макарова задал вопрос в разделе Другие языки и технологии

помогите сделать прогу в "с++"!!!тема "численное интегрирование функции. метод гаусса" и получил лучший ответ

Ответ от Ormandiore[гуру]
вот, нашла программу на паскале. надеюсь, вам будет не очень сложно вамостоятельно перевести ее в синтаксис с++
program gaussint;
{ Вычисление интегpала десятиточечным методом Гаусса }
{константы десятиточечного метода Гаусса}
const
g10c1=0.9739065285/6.2012983932;
g10c2=0.8650633667/6.2012983932;
g10c3=0.6794095683/6.2012983932;
g10c4=0.4333953941/6.2012983932;
g10c5=0.1488743390/6.2012983932;
g10x1=0.0666713443/6.2012983932;
g10x2=0.1494513492/6.2012983932;
g10x3=0.2190863625/6.2012983932;
g10x4=0.2692667193/6.2012983932;
g10x5=0.2955242247/6.2012983932;
function F(x:real):real; {интегрируемая функция}
begin
F:=pi*sin(pi*x);
end;
function gauss_calc(a,b:real):real; {сам десятиточечный метод Гаусса}
var n,m,s,s1,s2,s3,s4,s5 :real;
begin
m:=(b+a)/2; n:=(b-a)/2;
s1:=g10c1*(f(m+n*g10x1)+f(m-n*g10x1));
s2:=g10c2*(f(m+n*g10x2)+f(m-n*g10x2));
s3:=g10c3*(f(m+n*g10x3)+f(m-n*g10x3));
s4:=g10c4*(f(m+n*g10x4)+f(m-n*g10x4));
s5:=g10c5*(f(m+n*g10x5)+f(m-n*g10x5));
s:=s1+s2+s3+s4+s5;
gauss_calc:=s*(b-a);
end;
{рекурсивная ф-ция подсчета с заданной точностью}
{ gc - ранее посчитаный интеграл на интервале (a,b)}
function gauss(a,b,eps,gc:real):real;
var t,ga,gb :real;
begin
t:=(a+b)/2; {разбиваем интервал на две половинки}
ga:=gauss_calc(a,t); {в каждой половинке считаем интеграл}
gb:=gauss_calc(t,b);
if abs(ga+gb-gc)>eps then {проверяем точность вычислений}
begin
ga:=gauss(a,t,eps/2,ga); {рекурсия для первой половинки}
gb:=gauss(t,b,eps/2,gb); {рекурсия для второй половинки}
end; {при этом точность повышаем, чтобы }
{при сложении ошибка не накапливалась}
gauss:=ga+gb; {интеграл = сумме интегралов половинок}
end;
var
Integral :real;
a,b,eps :real;
begin
write('Введите начало интервала интегрирования a='); readln(a);
write('Введите конец интервала интегрирования b='); readln(b);
write('Введите точность интегрирования eps='); readln(eps);
Integral:=gauss(a,b,eps,gauss_calc(a,b));
writeln('Интеграл = ',Integral);
end.

Ответ от 22 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: помогите сделать прогу в "с++"!!!тема "численное интегрирование функции. метод гаусса"
Гауссов интеграл на Википедии
Посмотрите статью на википедии про Гауссов интеграл
Метод Гаусса численное интегрирование на Википедии
Посмотрите статью на википедии про Метод Гаусса численное интегрирование
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*