Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab7 / main

.cpp
Скачиваний:
5
Добавлен:
22.12.2018
Размер:
3.88 Кб
Скачать
яю#include "pch.h"

#include <iostream>

#include <math.h>

#include<Windows.h>

using namespace std;



double F(double x) {

	return log(x / (1 + x));

}



double rectangle(int n,double a,double b) {

	double x,h,sum = 0;

	h = (b-a) / n;



	for (int i = 0; i < n; i++){

		x = a + i * h;

		sum += F(x + (h/2));

	}

	return sum * h;

}



double trapeze(int n, double a, double b) {

	double x1,x2, h, sum = 0;

	h = (b - a) / n;



	for (int i = 0; i < n; i++) {

		x1 = a + i * h;

		x2 = a + (i + 1) * h;

		sum += (F(x1) + F(x2));

	}

	return sum * h/2;	

}



double Simpson_method(int n, double a, double b) {

	double x1, x2,x3, h, sum = 0;

	h = (b - a) / n;

	int m = n / 2;



	for (int i = 0; i < m; i++) {

		x1 =a+ 2 * i * h;

		x2 =a+ (2 * i +1) * h;

		x3 = a+(2 * i + 2) * h;

		sum += (F(x1) + 4 * F(x2) + F(x3));

	}

	return sum * h / 3;

}



int main(){

	SetConsoleCP(1251);

	SetConsoleOutputCP(1251);



	double Ir, It, Is, epsR, epsT, epsS, eps;

	int nr,nt, ns;

	nr = nt = ns = 2;



	cout << "I = ln (1/(1+x))dx =0 [a;b]" << endl;

	double a = 1.0, b = 2.0;

	cout << "2548B5 Eps:";

	cin >> eps;



	epsR = abs(rectangle(nr * 2, a, b) - rectangle(nr, a, b)) / 3;

	while (epsR >= eps) {

		nr ++;

		epsR = abs(rectangle(nr * 2, a, b) - rectangle(nr, a, b)) / 3;

	}



	epsT = abs(trapeze(nt * 2, a, b) - trapeze(nt, a, b)) / 3;

	while (epsT >= eps) {

		nt ++;

		epsT = abs(trapeze(nt * 2, a, b) - trapeze(nt, a, b)) / 3;

	}



	epsS = abs(Simpson_method(ns * 2, a, b) - Simpson_method(ns, a, b)) / 15;

	while (epsS >= eps) {

		ns+=2;

		epsS = abs(Simpson_method(ns * 2, a, b) - Simpson_method(ns, a, b)) / 15;

	}



	Ir = rectangle(nr * 2, a, b) + epsR;

	It = trapeze(nr * 2, a, b) - epsT;

	Is = Simpson_method(nr * 2, a, b) - epsS;



	cout << "Ir =" << Ir << "  nr = " << nr << endl;

	cout << "It =" << It << "  nt = " << nt << endl;

	cout << "Is =" << Is << "  ns = " << ns << endl;

}
Соседние файлы в папке lab7