Uploaded by Andry Wergen

Интегрирование

advertisement
Размещено на http://www.allbest.ru/
Программирование на языке высокого уровня (Си)
Размещено на http://www.allbest.ru/
1 Теоретическая часть. Вычисление корней уравнения
1.1
Вычисление корней уравнения методом деления отрезка пополам
Пусть нам дан отрезок [a,b], в котором расположено искомое значение
корня x. Тогда задача заключается в нахождении корней нелинейного
уравнения f(x)=0. Таким образом, если мы ищем ноль, то на концах отрезка
функция должна быть противоположных знаков, то есть f(a)*f(b)<0.
Разделим отрезок пополам и возьмем ту из половинок, на концах которой
функция
знаков( c 
по-прежнему
принимает
значения
противоположных
ab
, если f(a)*f(с)<0, то берем [a,c], если f(a)*f(с)>0, то [b,c]).
2
Если значение функции в серединной точке оказалось искомым нулем, то
процесс завершается[1].
1.2
Вычисление корней уравнения методом Ньютона
Найдем корни нелинейного уравнения f(x)=0. Задаём начальное
приближение вблизи предположительного корня, после чего строим
касательную к исследуемой функции в точке приближения, для которой
находится пересечение с осью абсцисс. Эта точка и берётся в качестве
следующего приближения(на рис. 1 мы можем увидеть, что последующее
приближение xn1 лучше предыдущего x n ). И так далее, пока не будет
достигнута необходимая точность.
Рис. 1 - Иллюстрация метода Ньютона.
Размещено на http://www.allbest.ru/
Таким образом xn1  xn 
f ( xn )
.[1]
f ' ( xn )
Размещено на http://www.allbest.ru/
2. Теоретическая часть. Вычисление определенного интеграла
2.1 Вычисление определенного интеграла методом прямоугольников
Требуется определить значение интеграла функции на отрезке [a,b].
Этот отрезок делится точками x 0 ,
длинной x 
x1 ,
… , xn1 , x n на n равных отрезков
ba
. Обозначим через y 0 , y1 , … , y n1 , y n значение функции f(x)
n
в точках x 0 ,
x1 ,
… , xn1 , x n . Тогда x * y0 , x * y n1 , x * y n - площади
прямоугольников, образованных двумя соседними отрезками, отсюда
следует что прямоугольников на один меньше, чем отрезков, таким образом
получаем два метода вычисления, соответственно, левых и правых
прямоугольников. Так как геометрический смысл интеграла – это площадь
фигуры
под
графиком,
b
то  f ( x)dx  x( y0  y1  ...  y n1 )
-
метод
левых
a
прямоугольников,
или
b
 f ( x)dx  x( y
1
 y 2  ...  y n )
-
метод
правых
a
прямоугольников. [ 3]
2.2 Вычисление определенного интеграла методом трапеций
Метод
может
быть
получен
путём
вычисления
среднего
арифметического между результатами применения формул правых и левых
прямоугольников. Отличие состоит в аннулировании погрешности за
период.[1,2]
b
 f ( x)dx  x(
a
y n  y0
 y1  y 2  ...  y n1 )
n
Размещено на http://www.allbest.ru/
Рис. 2 - Применение формулы трапеций для вычисления определенного
интеграла.
2.3 Вычисление определенного интеграла методом Симпсона (метода
парабол)
Пусть функция y=f(x) непрерывна на отрезке [a, b] и нам требуется
b
вычислить определенный интеграл
 f ( x)dx
a
.
Разобьем отрезок [a, b] на n элементарных отрезков [ x2i 2 , x2i ] ,
i=1, 2,…, n, длины
2h 
ba
n , точками a  x0  x2  x4  ...  x2 n2  x2 n  b .
Пусть точки x 2i 1 , i=1, 2,…, n являются серединами отрезков [ x2i 2 , x2i ] , i=1,
2,…, n соответственно. В этом случае все "узлы" определяются из равенства
xi  a  i * h
, i=1, 2,…, n.
На каждом интервале [ x2i 2 , x2i ] , i=1, 2,…, n подынтегральная функция
приближается квадратичной параболой y  ai x 2  bi x  ci , проходящей через
точки ( x2i 2 , f ( x2i 2 )) , ( x2i 1 , f ( x2i 1 )) , ( x2i , f ( x2i )) . Отсюда и название метода метод парабол.
Это делается для того, чтобы в качестве приближенного значения
определенного интеграла
2i
2
 f ( x)dx взять x  (ai x  bi x  ci )dx , который мы
2i  2
можем
вычислить
по
x2 i
формуле
математических сокращений получаем
2i 2
Ньютона-Лейбница.
После
всех
Размещено на http://www.allbest.ru/
b

a
f ( x)dx 
n
n 1
h
( f ( x0 )  4 *  f ( x2i 1 )  2 *  f ( x2i )  f ( x2 n )) [
i 1
i 1
3
1,2].
Размещено на http://www.allbest.ru/
3. Блок-схема вычисления корней уравнения
3.1 Вычисление корней уравнения методом деления отрезка пополам
3.2 Вычисление корней уравнения методом Ньютона
Размещено на http://www.allbest.ru/
4. Блок схема. Вычисление определенного интеграла
4.1
Вычисление
прямоугольников
определенного
интеграла
методом
левых
Размещено на http://www.allbest.ru/
4.2
Вычисление
определенного
интеграла
методом
прямоугольников
4.3 Вычисление определенного интеграла методом трапеций
правых
Размещено на http://www.allbest.ru/
4.4 Вычисление определенного интеграла методом Симпсона
Размещено на http://www.allbest.ru/
5. Практическая часть. Вычисление корней уравнения
5.1 Вычисление корней уравнения методом деления отрезка пополам
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
float E, x0, x1, x, z;
printf("Vvedite x0 i x1\n");
scanf("%f%f", &x0, &x1);
printf("Vvedite E\n");
scanf("%f", &E);
z=fabs(x1-x0);
while(z>=E)
{
x=(x1+x0)/2;
if ((2*pow(x0,2)+5*x0+2)* (2*pow(x,2)+5*x+2)<0) x1=x;
else x0=x;
z=fabs(x1-x0);
}
printf("x=%f", x);
getch();
}
Размещено на http://www.allbest.ru/
5.2 Вычисление корней уравнения методом Ньютона
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
float x0, E, fx0;
printf("Vvedite x0\n");
scanf("%f", &x0);
printf("Vvedite E\n");
scanf("%f", &E);
fx0=(2*pow(x0,2)+5*x0+2)/( 4*x0+5);
while (fabs(fx0)>=E)
{
fx0=(2*pow(x0,2)+5*x0+2)/( 4*x0+5);
x0=x0-fx0;
}
printf("x=%.2f", x0);
getch();
}
Точное значение корней уравнений, посчитанное через дискриминант
по формуле
Размещено на http://www.allbest.ru/
 b  b 2  4ac
, равно: x1=-2, x2=-0.5
x
2a
Таблица 1
Погрешность для числа разбиения по отношению к точному
значению
0.1
0.01
0.001
0.0001
1.02539
0.99793
0.99983
0.99998
пополам
1.12500
1.00781
0.99902
1.00012
Метод Ньютона
0.97
0.97
1
1
0.97
0.97
1
1
Метод
деления
отрезков
Размещено на http://www.allbest.ru/
6 Практическая часть. Вычисление определенного интеграла
6.1
Вычисление
определенного
прямоугольников
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
const float x0=1, xn=3, e=2.718;
float k, rez, dx, i, s;
printf("Vvedite chislo razbienii k\n");
scanf("%f", &k);
s=0;
dx=fabs(xn-x0)/k;
for (i=x0; i<=xn-dx; i+=dx)
{
s=s+5*i/pow(e,i);
}
rez=s*dx;
printf("Otvet %f", rez);
getch();
}
интеграла
методом
левых
Размещено на http://www.allbest.ru/
6.2
Вычисление
определенного
интеграла
методом
прямоугольников
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
const float x0=1, xn=3, e=2.718;
float k, rez, dx, i, s;
printf("Vvedite chislo razbienii k\n");
scanf("%f", &k);
dx=fabs(xn-x0)/k;
s=0;
for (i=x0+dx; i<=xn; i+=dx)
{
s=s+5*i/pow(e,i);
}
rez=s*dx;
printf("Otvet %f", rez);
getch();
}
6.3 Вычисление определенного интеграла методом трапеций
#include<stdio.h>
#include<conio.h>
правых
Размещено на http://www.allbest.ru/
#include<math.h>
int main()
{
const float x0=1, xn=3, e=2.718;
float k, rez, dx, i, s;
printf("Vvedite chislo razbienii k\n");
scanf("%f", &k);
dx=fabs(xn-x0)/k;
s=0;
for (i=x0+dx; i<=xn-dx; i+=dx)
{
s=s+ 5*i/pow(e,i);
}
s=dx*(((5*x0/pow(e,x0)+ 5*xn/pow(e,xn))/2)+s);
rez=s;
printf("Otvet %f", rez);
getch();
}
6.4 Вычисление определенного интеграла методом Симпсона
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
const float x0=1, xn=3, e=2.718;
Размещено на http://www.allbest.ru/
float k, m, a, dx, i, s, s1, s2;
printf("Vvedite chislo razbienii k\n");
scanf("%f", &k);
s=0;
s1=0;
s2=0;
m=2*k;
a=1;
dx=fabs(xn-x0)/(m);
for (i=x0+dx; i<=xn-dx; i+=dx)
{
if (fmod(a,2)==0)
s1+= 5*i/pow(e,i);
else
s2+= 5*i/pow(e,i);
a++;
}
s=(((xn-x0)/(3*m)))*( 5*x0/pow(e,x0)+ 5*xn/pow(e,xn)+2*s1+4*s2);
printf("Integral f(x)= 5*x/pow(e,x) na otrezke ot %f do %f raven %f", x0,
xn, s);
getch();
}
Точное значение определенного интеграла, посчитанное с помощью
программы MathCad, равно: x1=2.683
Размещено на http://www.allbest.ru/
Таблица 2
Погрешность для числа разбиения по отношению к точному значению
50
100
200
500
Метод левых прямоугольников
0.98285
0.99138
0.99563
0.99818
Метод правых прямоугольников
1.01676
1.00833
1.00410
1.00157
Метод трапеций
0.99980
0.99986
0.99987
0.99987
Метод Симпсона
0.99987
0.99987
0.99987
0.99987
Размещено на http://www.allbest.ru/
Список использованной литературы
программа интеграл уравнение
1.
Письменный, Д. Т. Конспект лекций по высшей математике: полный
курс / Д.Т. Письменный. – 10-е изд., испр. – М.: Айрис-пресс, 2011, 608 c.
2.
Пискунов Н.С. Дифференциальное и интегральное исчисления: Учеб.
для вузов. В 2-х т. Т.I: - М.: Интеграл-Пресс, 2001, 416 c.
3.
Керниган Б.В., Ричи Д.М. «Язык С», 2009, 255 с.
Размещено на Allbest.ru
Download