Форум программистов, компьютерный форум CyberForum.ru

Интеграл на интервале до определенной точности - C++

Восстановить пароль Регистрация
 
bulavax
0 / 0 / 0
Регистрация: 16.11.2014
Сообщений: 21
23.11.2014, 15:17     Интеграл на интервале до определенной точности #1
Пишу программу вычисления определенного интеграла методом среднедних прямоугольников
asin(sqrt(x/(x+1)) на интервале [0:3] цикл по J пренципиально не хочет идти((( выводит первое значение для заданного n (кол-во разбиений интервала). Помогите плс в чем проблема??? Просто вычисляет значение интеграла нормально, но не с той точностью с которой требуется. (0.001).


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
#include<iostream>
#include<math.h>
#include<conio.h>
long double IG(long double);
using namespace std;
void main()
{setlocale(0,".1251"); /* язык*/
cout<<"Метод средних прямоугольников"<<endl;
_getch();
long double h,S=0,I3=0; /* h-ратояние при разбиении отрезка S-сумма интегралов I3-значение интеграла в опр точке*/
long double L,K=0,n=50000; /*n-колво разбиений интервала, К-в неё занесем промежуточное значение */
long double SF=0; 
long double x3=0;L=0;
for(int j=1;SF<0.001;j++) /*цикл в котором должно менятся кол-во разбиений отрезка если нам не подойдет точность*/
{h=(3-0)/n; S=0; 
for(int i=1;i<=n;i++)/*цикл в котором вычисляется сумма интегралов при заданном n*/
{
I3=IG(x3+h/2); 
x3=0+h*(i-1); /*следующий отрезок при том же n*/
S=S+I3; /*запоминаем сумму для сл прохождения */
};
K=S*h; /*готовое приближенное значение интеграла на промежутке*/
cout<<'\n'<<S*h<<endl;
SF=fabs(L-K); /*разница полученного готового интеграла теперешнего к предыдущему по модулю */
cout<<SF<<endl<<n<<endl;
n=n*2; /*меняем число разбиений интервала*/
L=K; /*запоминаем теперешнее значение готового интеграла*/
}
_getch();
}
long double IG(long double x)
{
    long double I;
    I=asin(sqrt(x/(1+x))); /*сама функция*/
    return I;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2014, 15:17     Интеграл на интервале до определенной точности
Посмотрите здесь:

C++ Вычисление машинной точности
C++ [C++] Приближенно вычислить интеграл от функции y=exp(-x) в заданном интервале, используя формулу прямоугольников
Точности вычислений double C++
C++ Не точности вычисления C++
Потеря точности у double C++
C++ Вычисление точности числа
Ошибка точности C++
C++ Нажатие определенной клавиши на клавиатуре = Запуск определенной функции

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

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

Текущее время: 01:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru