Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- using namespace std;
- void resp(double a, double b, double e);
- void resn(double a, double b, double e);
- void resh(double a, double b, double e);
- void resk(double a, double b, double e);
- double form(double x)
- {
- return pow(x, 2) + 0.5*pow(x, 2) - 0.5 * x;
- }
- double form2(double x)
- {
- return pow(x, 3) - x + 75;
- }
- double _form2(double x)
- {
- return 12 + pow(x, 2) ;
- }
- int main()
- {
- setlocale(LC_ALL, "rus");
- int s;
- double a, b, x, e;
- bool t = true;
- while (t)
- {
- cout << "0) выход\n1) ввод значений\n2) Метод половинного деления\n3) Метод простых итераций\n4) Метод Ньютона\n5) Метод хорд\n6) Комбинированный метод\n";
- cin >> s;
- cout << endl << endl;
- switch (s)
- {
- case 0:
- t = false;
- break;
- case 1:
- cout << "a = ";
- cin >> a;
- cout << "b = ";
- cin >> b;
- cout << "E = ";
- cin >> e;
- cout << endl << endl;
- cout << "a = " << a << ", b = " << b << ", E = " << e << endl << endl;
- break;
- case 2:
- resp(a, b, e);
- break;
- case 3:
- break;
- case 4:
- resn(a, b, e);
- break;
- case 5:
- resh(a, b, e);
- break;
- case 6:
- resk(a, b, e);
- break;
- default:
- break;
- }
- }
- }
- void resp(double a, double b, double e)
- {
- double x = 0, fa, fb, fx;
- while (true)
- {
- x = (a + b) / 2;
- if (b - a < 2 * e)
- {
- cout << "Ответ: " << x << endl << endl;
- break;
- }
- fa = form(a);
- fb = form(b);
- fx = form(x);
- if (((fa < 0) && (fx > 0)) || ((fa > 0) && (fx < 0))) b = x;
- else if (((fb < 0) && (fx > 0)) || ((fb > 0) && (fa < 0))) a = x;
- }
- }
- void resn(double a, double b, double e)
- {
- double xn, x;
- if (form(a) * _form2(a) > 0) x = a;
- else x = b;
- while (true)
- {
- xn = x - form(x) / form2(x);
- if (abs(xn - x) < e)
- {
- cout << "Ответ: " << xn << endl << endl;
- break;
- }
- x = xn;
- }
- }
- void resk(double a, double b, double e)
- {
- double xn, x, xn2, x2;
- if (form(a) < 0 && form(b) > 0)
- {
- x = a;
- x2 = b;
- while (true)
- {
- xn = x - form(x) / (form(x2) - form(x)) * (x2 - x);
- xn2 = x2 - form(x2) / _form2(x2);
- if (abs(x2 - x) < e)
- {
- cout << "Ответ: " << (x + x2) / 2 << endl << endl;
- }
- }
- }
- }
- void resh(double a, double b, double e)
- {
- double xn, x;
- if (form(b) < 0)
- {
- x = b;
- while (true)
- {
- xn = x - form(x) / (form(x) - form(a)) * (x - a);
- if (abs(xn - x) < e)
- {
- cout << "Ответ: " << xn << endl << endl;
- break;
- }
- x = xn;
- }
- }
- else
- {
- x = a;
- while (true)
- {
- xn = x - form(x) / (form(b) - form(x)) * (b - x);
- if (abs(xn - x) < e)
- {
- cout << "Ответ: " << xn << endl << endl;
- break;
- }
- x = xn;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement