|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.10.2011, 19:17 | #1 |
Новичок
Джуниор
Регистрация: 10.09.2011
Сообщений: 2
|
решение интеграла метод симпсона
Может кто помочь? необходимо решить интеграл
с точностью 10^-6 для а, изменяющегося от 0 до 5 с шагом 1. Используя метод Симпсона Не получается сделать вычисление для изменяющегося параметра а... считает только для 1 изначально заданного условия. может кто подправить??? /*Вычисление интеграла (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; //Вызываем функцию } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вычислить приближённое значение интеграла по формуле трапеции и Симпсона для n=80 ∫_0^n(π-x) sin xdx | Lyonya-myshin | C++ Builder | 1 | 13.06.2011 23:11 |
Метод Симпсона С++ | sabaton | Помощь студентам | 2 | 03.04.2011 01:08 |
Turbo Pascal[програмыки : текстовая\метод симпсона\метод половинного деления | qsccsq | Помощь студентам | 7 | 24.12.2010 05:23 |
Разработка алгоритма вычисления параметрического интеграла методом Симпсона | killbore | Помощь студентам | 3 | 09.04.2010 01:37 |
Помогите создать програму для вычисления определенного интеграла Методом Симпсона | Сергей Человек | Помощь студентам | 11 | 06.07.2009 16:15 |