Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- double phi(double);
- double psi(double);
- double lamda(double);
- double lamda_der(double);
- double F(double, double);
- double F_der(double, double);
- double calculate(double, double);
- void out(int, double);
- int n_in();
- double eps_in();
- int main()
- {
- out(n_in(), eps_in());
- return 0;
- }
- double eps_in()
- {
- double eps;
- std::cout << "enter eps: ";
- std::cin >> eps;
- return eps;
- }
- int n_in()
- {
- int n;
- std::cout << "enter n: ";
- std::cin >> n;
- return n;
- }
- double phi(double x)
- {
- return .8*x*x - 3*x + 1.7;
- }
- double psi(double x)
- {
- return (.3*x - 1)/sqrt(1 + x + x*x);
- }
- double lamda(double y)
- {
- return y + log(1 + y*y);
- }
- double lamda_der(double y)
- {
- return 1 + 2*y/(1 + y*y);
- }
- double F(double x, double y)
- {
- return y*phi(x) + psi(x) + lamda(y);
- }
- double F_der(double x, double y)
- {
- return psi(x) + lamda_der(y);
- }
- double calculate(double x, double eps)
- {
- double y_n, y_n_1 = -psi(x)/phi(x);
- do
- {
- y_n = y_n_1 - F(x, y_n_1)/F_der(x, y_n_1);
- y_n_1 = y_n;
- } while (abs(y_n - y_n_1) > eps);
- return y_n;
- }
- void out(int n, double eps)
- {
- std::cout << "enter x[i], 0 <= i < n\n\n";
- for (int i = 0; i < n; i++)
- {
- double x;
- std::cin >> x;
- std::cout << "( " << x << ", " << calculate(x, eps) << " )\n";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement