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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.63
Ruslan4ik89
0 / 0 / 0
Регистрация: 02.10.2011
Сообщений: 4
#1

метод Симпсона - C++

02.10.2011, 20:57. Просмотров 2789. Ответов 0
Метки нет (Все метки)

Может кто помочь? необходимо решить интеграл
с точностью 10^-6 для а, изменяющегося от 0 до 5 с шагом 1. Используя метод Симпсона
Не получается сделать вычисление для изменяющегося параметра а... считает только для 1 изначально заданного условия. может кто подправить???


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
 /*Вычисление интеграла (2/pi^1/2)*(x^1/2)/1+e^(1-a)) Методом Симпсона */
 
 #include <iostream>
 #include <math.h> //Подключаем библиотеки
 #include <iomanip>
 using namespace std;
 double e=2.718281828459045; //Объявляем константы
 double pi=3.1415926535897;
 double f ( double x)
 {
 for(int a=0;a<=5;a++)
 {
 
 double fn=fn=(2/pow(pi,0.5))*(pow(x,0.5)/(1+pow(e,x-0))); //Функция f(x)
 return fn;
 }
 }
 double Simpson ( double a, double b, double e) //Реализация метода Симпсона. В качестве параметров функция принимает
 //Пределы интегрирования и точность вычисления
 {
 int n=7; //Первоначально разбиваем промежуток a,b на n частец
 double h=(b-a)/n; //Вычисляем шаг
 double x2, S, I2, I1, w; //Переменные необходимые для расчетов
 int k=1; //Задаём начальные
 I1=0; //Параметры 
 double s0=f(a)+f(b); //Находим чему равна сумм значений функций на концах отрезка
 do 
 {
 double x1=a+h; //Делаем шаг
 S=0; 
 for (int i=1; i<n; i++)
 {
 double s=(k+3)*f(x1);
 k=-k;
 x2=x1+h; //Этим циклом найдем сумму значений функции в узлах интегрирования
 x1=x2; 
 S+=s;
 
 }
 
 x1=0;
 
 n=2*n; //Удваиваем количество разбиений
 cout<<"kol razbien: "<<n<<endl; 
 double h1=(b-a)/n; //Вычисляем новый шаг
 I2=h/3.*(s0+S); //Находим значение интеграла на малом участке
 w=fabs(I2-I1); //Вычисляем модуль разности нового значения интеграла и того что было
 I1=I2;
 h=h1;
 
 } while (w>e); //цикл do работает пока не будет достигнута нужная точность
 return I2;
 }
 
 void main()
 {
 double a, b, e; //Пределы интегрирования и точность
 a=0.0000001; b=20; e=0.0000001;
 cout<<" integr: "<<setprecision(8)<<Simpson(a,b,e)< <endl; //Вызываем функцию
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2011, 20:57     метод Симпсона
Посмотрите здесь:

метод симпсона - C++
метод симпсона?

Метод Симпсона - C++
Суть задачи такова:Составить программу численного интегрирования функции y=x^2 на интервале методом Симпсона.Оценить точность...

Метод симпсона - C++
Подскажите в чем ошибка ?? почему отрицательные значения выводятся??? //Metod simpsona #include &lt;iostream&gt; #include &lt;math.h&gt; ...

Метод Симпсона - C++
Неверно считает.Помогите найти ошибку. #include&lt;iostream&gt; #include&lt;math.h&gt; using namespace std; void metodSympsona(double...

Не работает метод Симпсона - C++
Не понимаю один момент. Если указываю в последней строчке так, то все работает, но препод говорит это неправильно, если указываю как...

Формула Симпсона - C++
Программа из методички, по теме формула Симпсона. Не могу понять, как получается сама функция Симпсона (double simp). Сначала мы...

интеграл методом Симпсона - C++
нужно посчитать интеграл: ∫32(1/(x*lgx))dx кол-во разбиений - 36 шаг вычисления первообразной - 0,2 результат выдать с точностью ...

Погрешность метода Симпсона - C++
Как рассчитать погрешность метода, если известно, что оценка погрешности составляет 0.01 #include &lt;iostream&gt; #include &lt;cmath&gt; ...

Вычислить методом Симпсона - C++
Вычислить интеграл http://www.cyberforum.ru/attachment.php?attachmentid=29717&amp;amp;d=1273752305 методом Симпсона. Не пойму этих формул... ...

Интегрирование по методу Симпсона - C++
написать программу которая посчитала бы интеграл сos(x+x^3)dx по методу симпсона с точностью до одной тысячной.буду оч.благодарен)))

Интеграл методом Симпсона - C++
Вообщем на форуме есть такая програма, спасибо её автору: ouble Simpson(double (*Fx)(double)) { double I,x,h,a,b; ...

Нахождение интеграла методом Симпсона - C++
http://i016.***********/0910/b7/f79e34604977.jpg имеется функция double Simpson(double (*Fx)(double)) { double I; ...


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

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

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