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

Лабораторные работы / .cpp файлы / Лабораторная работа №9. Вариант 19

.cpp
Скачиваний:
1
Добавлен:
17.12.2018
Размер:
4.85 Кб
Скачать
// Написать программу табулирования функции с постоянным шагом
// Найти максимальное и минимальное значение функции при х
// Найти интеграл
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <iomanip>
using namespace std;

int main()
{
    double x, B, h, A, C, s, i, m, v, Fmax, Fmin, Lmax, Lmin, a, b, integral;
    setlocale (0, "");
    system("color 0F");
    cout << "Программа табулирования функции с постоянным шагом по аргументу функции," << endl;
    cout << "нахождения максимального и минимального значения функции и вычисления интеграла." << endl << endl;
    cout << "f(x)=(B*x-sin(A))^2+C*B*x*sin(A)" << endl;
    cout << "|A| <= 1000" << endl;
    cout << "|x| <= 100" << endl;
    cout << "0 < B <= 100" << endl;
    cout << "|C| <= 1000" << endl;
    cout << "Число шагов табулирования не более 100" << endl;
    cout << "Относильная погрешность вывода результатов не более 0,001" << endl << endl;


    do
    {
        cout << "Введите значение A: ";
        cin >> A;
        if (A > 1000 || A < -1000) {
            system("color 04");
            cout << "ОШИБКА! ЗНАЧЕНИЕ НЕ КОРРЕКТНО! |A| <= 1000" << endl;
            system("pause"); }
            system("color 0F");
            cout << " " << endl << endl;
    }
    while (A > 1000 || A < -1000);

    do
    {
        cout << "Введите значение B: ";
        cin >> B;
        if (B > 100 || B <= 0) {
            system("color 04");
            cout << "ОШИБКА! ЗНАЧЕНИЕ НЕ КОРРЕКТНО! 0 < B <= 100" << endl;
            system("pause"); }
            system("color 0F");
            cout << " " << endl << endl;
    }
    while ((B > 100 || B <= 0));

    do
    {
        cout << "Введите значение C: ";
        cin >> C;
        if (C > 1000 || C < -1000) {
            system("color 04");
            cout << "ОШИБКА! ЗНАЧЕНИЕ НЕ КОРРЕКТНО! |C| <= 1000" << endl;
            system("pause"); }
            system("color 0F");
            cout << " " << endl << endl;
    }
    while (C > 1000 || C < -1000);

    cout << " " << endl << endl;
    cout << "ВНИМАНИЕ! КОНЕЧНОЕ ЗНАЧЕНИЕ ДОЛЖНО БЫТЬ БОЛЬШЕ НАЧАЛЬНОГО!" << endl << endl;
    system("pause");
    cout << " " << endl << endl;
    do
    {
        cout << "Введите начальное значение: ";
        cin >> x;
        if (x < -100 || x > 100 ) {
            system("color 04");
            cout << "ОШИБКА! ЗНАЧЕНИЕ НЕ КОРРЕКТНОЕ! |x|<=100 " << endl;
            system("pause"); }
            system("color 0F");
            cout << " " << endl << endl;
    }
    while (x < -100 || x > 100 );

    do
    {
        cout << "Введите конечное значение: ";
        cin >> m;
        if (m < x) {
            system("color 04");
            cout << "ОШИБКА! КОНЕЧНОЕ ЗНАЧЕНИЕ ДОЛЖНО БЫТЬ БОЛЬШЕ НАЧАЛЬНОГО!" << endl;
            system("pause"); }
            system("color 0F");
            cout << " " << endl << endl;
    }
    while (m < x);

do {
    cout << "Введите шаг табулирования: ";
    cin >> h;

    cout << " " << endl << endl;

    v = (m-x)/h; // количество точек табулирования
    cout << "Количество точек табулирования: " << v << endl << endl;

    cout << setprecision (3) << fixed; //Даёт три числа после запятой

    if (v >= 100) {
        system("color 04");
        cout << "КОЛИЧЕСТВО ТОЧЕК ТАБУЛИРОВАНИЯ НЕ ДОЛЖНО ПРЕВЫШАТЬ 100!" << endl << endl;
        system("pause"); }
        system("color 0F");
        cout << " " << endl << endl;

} while ( v >= 100);

    system ("pause");

    s = (B*x - sin(A))*(B*x - sin(A)) + C*B*x*sin(A);
    Fmax = s;
    Fmin = s;
    Lmax = x;
    Lmin = x;

    for (i = x; i <= m; i += h) {
        s = (B*i - sin(A))*(B*i - sin(A)) + C*B*i*sin(A);

    if (s < Fmin) {
        Fmin = s;
        Lmin = i;
    }

    if (s > Fmax) {
        Fmax = s;
        Lmax = i;
    }
        cout << " " << endl << endl;
        cout << "x = " ;
        cout << i << endl;
        cout << "f(x) = " ;
        cout << s << endl << endl;

    }

    system("pause");

    cout << " " << endl << endl;

    cout << setprecision (0) << fixed;
    cout << "Минимальное значение функции: " << Fmin << " при x = " << Lmin << endl;
    cout << "Максимальное значение функции: " << Fmax << " при x = " << Lmax << endl;
    cout << " " << endl << endl;
    system("pause");

    cout << " " << endl << endl;

    cout << "Верхняя граница интегрирования: ";
    cin >> b;
    cout << "Нижняя граница интегрирования: ";
    cin >> a;


  for(i = a; i <= b; i+= 0.00001)
    {
    integral += 0.00001 * ((B*i - sin(A))*(B*i - sin(A)) + C*B*i*sin(A));
    }
    cout << "Интеграл от верхней границы " << b << " до нижней границы " << a << " равен: " << integral << endl;

    return 0;
}