Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2013, 16:06   #1
naxir
 
Аватар для naxir
 
Регистрация: 23.10.2012
Сообщений: 8
Счастье Интегралы

Написать программу, вычисляющую значение трех определенных интегралов методом трапеций с заданной точностью. Программа должна работать в режиме консольного приложения для Windows и иметь следующую структуру:
- головная функция, обеспечивающая ввод с клавиатуры точности вычислений (в пределах 10-1 … 10-7), единой для всех трех интегралов, и вывод на экран результатов вычислений;
- функция вычисления интеграла. В качестве одного из параметров в нее должен передаваться адрес подынтегральной функции;
- три подынтегральных функции, соответствующие варианту задания.


Вот что написал

Код:
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <conio.h>
//#define N 20
double h;
const float p = 2.718281828;
const float e = 3.141592653;
double method_of_trapezium(double(*)(double), double, double);
double f1(double);
double f2(double);
double f3(double);
double N;

int main()
{
	setlocale(LC_CTYPE, ".1251");
	printf("Введите точность вычисления\n");
	scanf("%f", &h);
	
	std::cout << "asin((sqrt(x)))) / sqrt(1-x) dx на отрезке от 0.3 до 0.2: " << method_of_trapezium(f1, 0.3, 0.2) << "\n";
	std::cout << "pow(x, 3)*pow(e, 2 * x) dx на отрезке от 0.8 до 0: "<< method_of_trapezium(f2, 0.8, 0) << "\n";
	std::cout << "pow(tan((x/2)+p/2),3) dx на отрезке от pi/8 до 0: " << method_of_trapezium(f3, (p/8), 0) << "\n";
	_getch();
	return 0;
}

double method_of_trapezium(double(*f)(double), double a, double b)
{
	N = (b - a) / h;
	double result = 0.;

	result += f(a) / 2.;
	result += f(b) / 2.;

	for (int i = 1; i < (N - 1); ++i)
		result += f(a + i*h);

	return h*result;
}

double f1(double x)
{
	return ((asin((sqrt(x)))) / sqrt(x*(1 - x)));
}

double f2(double x)
{
	return pow(x, 3)*pow(e, 2 * x);
}

double f3(double x)
{
	return (pow(tan((x / 2) + p / 4), 3));
}
Проблема в том, что не правильно происходит расчет. Подскажите где косяк(
naxir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интегралы. BC++ Ромашка68 Помощь студентам 11 14.09.2012 21:53
Интегралы tapah4ik Помощь студентам 13 28.03.2011 19:22
Интегралы Anubys Помощь студентам 0 08.03.2011 14:08
интегралы alexinspir Свободное общение 15 16.11.2009 18:04
Интегралы Golovastik Общие вопросы C/C++ 9 03.06.2009 21:11