Добавил:
Tyler_Black
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы / .cpp файлы / Лабораторная работа №9. Вариант 19
.cpp// Написать программу табулирования функции с постоянным шагом
// Найти максимальное и минимальное значение функции при х
// Найти интеграл
#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;
}
Соседние файлы в папке .cpp файлы