это быстро и бесплатно
Оформите заказ сейчас и получите скидку 100 руб.!
Ознакомительный фрагмент работы:
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ СТРОИТЕЛЬНЫЙ УНИВЕРСИТЕТ
тема:
«Вычисление определённого интеграла
с помощью метода трапеций
на компьютере»
Выполнил:
студент ф-та
ЭОУС-1-12
Зыков И.
Принял:
Зоткин С. П.
Москва 2001
1. Введение:
Определенный интеграл от функции, имеющей неэлементарную первообразную, можно вычислить с помощью той или иной приближенной формулы. Для решения этой задачи на компьютере, можно воспользоваться формулами прямоугольников, трапеций или формулой Симпсона. В данной работе рассматривается формула трапеций.
Пусть I=òf(x)dx, где f(x) – непрерывная функция, которую мы для наглядности будем предполагать положительной. Тогда I представит собой площадь криволинейной трапеции, ограниченной линиями x=a, x=b, y=0, y=f(x). Выберем какое-нибудь натуральное число n и разложим отрезок[a,b] на n равных отрезков при помощи точек x0=a<x1<…<xn=b. Прямые x=xiразбивают интересующую нас криволинейную трапецию на nполосок. Примем каждую из этих полосок за обыкновенную прямолинейную трапецию (рис. 1, где n=4).
рис. 1
Тогда площадь первой слева полоски будет приближенно выражаться числом
((f(x0)+f(x1))/2)*(x1-x0)=((y0+y1)/2)*((b-a)/n),
ибо основания трапеции, за которую мы принимаем полоску, равны f(x0)=y0 и f(x1)=y1, а высота её
x1-x0=(b-a)/n.
Аналогично площади дальнейших полосок выразятся числами
(y1+y2)*((b-a)/2*n), (y2+y3)*((b-a)/2*n), … , (yn-1+yn)*((b-a)/2*n).
Значит, для нашего интеграла получается формула
I»((b-a)/2*n)*[y0+2*(y1+…+yn-1)+yn].
Пологая для краткости y0+yn=Yкр (крайние), y1+y2+…+yn-1=Yпром (промежуточные), получим
|
Эту формулу можно записать в другом виде
ò f(x)dx » (h/2)*[f(a)+f(b)+2åf(xi)] |
(где h – длина одного из n равных отрезков, xi=a+i*h). Эта приближенная формула и называется формулой трапеций. Она оказывается тем более точной, чем больше взятое нами число n. Погрешность одного шага вычисляется по формуле: -(h^3)/12.
Задача. Пусть нужно проинтегрировать функцию f(x) = x³ +2x²-3x-8 на отрезке [0, 6]. На этом отрезке функция непрерывна.
Для выполнения поставленной задачи составлена нижеописанная программа, приближенно вычисляющая определенный интеграл с помощью метода трапеций. Программа состоит из трех функций main, fи trap. Функция mainпозволяет ввести интервалы интегрирования и задать точность вычисления интеграла, а также вызывает функцию trap для вычисления интеграла и распечатывает на экране результат. Функция f принимает аргумент x типа float и возвращает значение интегрируемой функции в этой точке. Trap – основная функция программы: она выполняет все вычисления, связанные с нахождением определенного интеграла. Trap принимает четыре параметра: пределы интегрирования типа float(a и b), допустимую относительную ошибку типа float и указатель на интегрируемую функцию. Вычисления выполняются до тех пор, пока относительная ошибка, вычисляемая по формуле | S-Sn |, не будет меньше или равна требуемой. Функция реализована с экономией вычислений, т. е. учитывается, что S0 постоянная и S1=S1+f(a+(2*i+1)*h), поэтому эти значения вычисляются единожды. Метод трапеций обладает высокой скоростью вычисления, но меньшей точностью, чем метод Симпсона, поэтому его применение удобно там, где не требуется очень высокая точность.
Ниже предлагается блок-схема, листинг, спецификации, ручной счет и результат работы программы на примере поставленной выше задачи. Блок-схема позволяет отследить и понять особенности алгоритма программы, спецификации дают представление о назначении каждой переменной в основной функции trap, листинг - исходный код работающей программы с комментариями, а ручной счет предоставляет возможность проанализировать результаты выполнения программы.
2. Блок-схема программы:
ДА
НЕТ
i=1
|
i=n/2
3. Листинг:
#include<stdio.h>
#include<math.h>
#include<conio.h>
main()
{
double a,b,er,eps,f(double),s,trap(double,double,double,double(*)(double));
clrscr();
printf("n Задайте пределы интегрирования и точность: ");
scanf ("%lf%lf%lf",&a,&b,&eps);
s=trap(a,b,eps,f);
printf("n Интеграл от a=%3.2lf до b=%3.2lf равен %lf",a,b,s);
getch();
}
double f(double x)
{
return x*x*x+2*(x*x)-3*x-8;
}
double trap(double a,double b,double eps,double(*f)(double))
{
double h,s,s0,s1,sn;
int i,n;
s=1; sn=101;
n=4;
s0=(f(a)+f(b))/2;
s1=f((a+b)/2);
while(fabs(s-sn)>eps){
sn=s;
h=(b-a)/n;
for(i=0; i<n/2; i++)
s1+=f(a+(2*i+1)*h);
s=h*(s0+s1);
n*=2;
}
return s;
}
4. Спецификации:
| Имя переменной | Тип | Назначение |
| n | int | число разбиений отрезка [a, b] |
| i | int | счетчик циклов |
| a | double | Нижний предел интегрирования |
| b | double | Верхний предел интегрирования |
| h | double | шаг разбиения отрезка |
| eps | double | допустимая относительная ошибка |
| f | double(*) | указатель на интегрируемую фун - цию |
| x | double | аргумент ф-ии f |
| s | double | текущий результат интегрирования |
| s0 | double | половина суммы значений функции в точках a и b |
| s1 | double | сумма значений функции в промежуточных точках |
| sn | double | предыдущий результат интегрирования |
5. Ручной счет:
| Xi | Yi |
| 0 | -8 |
| 0,75 | -8,703125 |
| 1,5 | -4,625 |
| 2,25 | 6,765625 |
| 3 | 28 |
| 3,75 | 61,609375 |
| 4,5 | 110,125 |
| 5,25 | 176,078125 |
| 6 | 262 |
6. Результат работы программы:
приeps = 0.1 приeps = 0.001
Введите a, b, eps: Введите a, b, eps:
0 0
6 6
.1 .001
Интеграл= 366.024170 Интеграл= 366.000094
т.е с помощью этой программы можно вычислить интеграл от функции с точностью до 1/10000.
Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников
Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.
Цены ниже, чем в агентствах и у конкурентов
Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит
Бесплатные доработки и консультации
Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки
Гарантируем возврат
Если работа вас не устроит – мы вернем 100% суммы заказа
Техподдержка 7 дней в неделю
Наши менеджеры всегда на связи и оперативно решат любую проблему
Строгий отбор экспертов
К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»
Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован
Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн
Теория вероятностей 9 класс , тесты
Решение задач, Теория вероятностей и математическая статистика
Срок сдачи к 23 февр.
Написать индивидуальное сообщение на тему: средние века
Другое, Мировая Отечественная художественная культура
Срок сдачи к 23 февр.
Отчёт полный факторный эксперимент первого порядка пфэ
Другое, Методология, электротехника
Срок сдачи к 23 февр.
Выполнить курс "Начертательная геометрия и инженерная графика 2.2". М-08603
Контрольная, Начертательная геометрия и инженерная графика
Срок сдачи к 21 мар.
Конфигурирование и настройка аппаратно-программных офисных...
Курсовая, МДК, информатика, электротехника
Срок сдачи к 24 февр.
Организация местного самоуправления( на примере своего поселения, муниципального района, городского округа)
Реферат, Муниципальное управление и местное самоуправление
Срок сдачи к 12 мар.
Презентация на 18 слайдов
Презентация, Стратегический менеджмент и управление проектами в государственном управлении
Срок сдачи к 3 апр.
И. В. Витте, Выбрать тему, сделать задание по рекомендациям
Курсовая, Гражданское право
Срок сдачи к 15 мая
Дипломная работа на тему «Методика применения компьютерных обучающих программ на уроках английского языка»
Диплом, Педагогика и Английский язык
Срок сдачи к 13 апр.
Заполните форму и узнайте цену на индивидуальную работу!