Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прочее / шпора по с++, экт 1й курс.doc
Скачиваний:
61
Добавлен:
17.04.2013
Размер:
88.06 Кб
Скачать

(25)Вычисление интеграла методом прямоугольников c заданной точностью.

Для вычисления первого приближения интеграла разделим отрезок [a, b] на n равных частей (n=4), определим значения x i = a + h i – h / 2; h = ( b – a ) / n. Вычислим площадь однако прямоуг-ка S i = h * f ( x i ). Сумма S i площадей этих прямоугольников является приближенным значением интеграла:Однако одно приближение не позволяет оценить точность, с которой вычислено значение интеграла, необходимо найти второе приближение. Для этого увеличим n в два раза, то есть n=2n. Аналогично S1 найдем S2: Требуется вычислить значение интеграла с точностью E, поэтому проверим условие |S1-S2|<E. Если условие выполняется, то S2 принимается за искомое значение интеграла; если не выполняется, то последнее выполненное значение S2 считается предыдущим, то есть S1= S2. После этого удвоим число точек деления отрезка и вычислим новое значение S2. Процесс удвоение n и вычисление S2 будем продолжать до тех пор, пока модуль разности S1 и S2 не станет меньше E.

#include<stdio.h> #include<conio.h> #include<math.h> #define Pi 3.141592654

void main() {unsigned int i,n; float a,b,x,h,y,s;

printf("n="); scanf("%d",&n); a=0;b=Pi/3;s=0;x=a;

h=(b-a)/(1*n);

for (i=0;i<n;i=i+1) { y=sin(x); x=x+h;

if(i%2!=0) s=s+4*y; else if(i==0||i==n) s=s+y;

else s=s+2*y; } s=s*h/3;

printf("S=%f\n",s);getche();}

(26)Вычисление интеграла

с помощью формулы Симпсона. Вычисление интеграла по формуле Симпсона определяется путем деления отрезка [ a, b ] на множество более мелких отрезков. Формула Симпсона имеет вид:

Здесь N – четное число делений интервала интегрирования: x i = a + i ( b – a ) / N.

Алгоритм состоит в циклическом выполнении расчетов f (x i). При этом следует отдельно рассмотреть случаи для границ интегрирования f (a) и f (b) и учесть, что при нечетном номере вычисляемого элемента, значение функции умножается на 4, при четном – на 2. При конечных значениях отрезка умножение не производится.

#include<stdio.h> #include<conio.h> #include<math.h>

Void main(){unsigned int I,n; float a,b,X,h,y,s;

printf("n=");scanf("%d",&n); a=0;b=Pi/3;s=0;x=a;

h=(b-a)/(1*n); for (i=0;i<n;i=i+1)

{y=sin(x); x=x+h; if(i%2!=0) s=s+4*y; else if(i==0||i==n) s=s+y; else s=s+2*y; } s=s*h/3;

printf("S=%f\n",s); getche(); }

Designed by barcas&kitty

Соседние файлы в папке Прочее