Advertisement
frustration

DONE. ряд Тейлора. вариант 1. функция.

Apr 12th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.46 KB | None | 0 0
  1. /*вариант 1
  2. Вычислить и вывести на экран в виде таблицы значения функции, заданнй с помощью ряда Тейлора, на интервале от xn до xk с шагом dx с точностью е
  3. ln((x+1)/(x-1))=2*(1/x+1/3*x^3+1/5x^5+...) abs(x)>1*/
  4.  
  5.  
  6.  
  7. #include <iostream>
  8. #include <iomanip>
  9. #include <cmath>
  10. #include <conio.h>
  11.  
  12.  
  13. using namespace std;
  14.  
  15. float TaylorExpansion(float x, int &n, int &flag){
  16.     float e = 0.00001;
  17.     float sum = 0;
  18.     float sl = 1 / x;
  19.  
  20.     while (fabs(sl) >= e)
  21.     {
  22.  
  23.         sum += sl;
  24.         sl *= (2 * n - 1) / (x*x*(2 * n + 1));
  25.         n++;
  26.         if (n == 1000) {
  27.             flag = 1;
  28.             break;
  29.         }
  30.     }
  31.  
  32.     return sum * 2;
  33.  
  34. }
  35.  
  36. void Table(float xn, float xk, float dx){
  37.     float x,f;
  38.     cout << "-----------------------------------------------\n";
  39.     cout << "|   x   |      f      |ln((x+1)/(x-1))|    n   |\n";
  40.     cout << "-----------------------------------------------" << endl;
  41.     int n,flag;
  42.     for (x = xn; x <= xk; x += dx)
  43.     {
  44.         n = 1;
  45.         flag = 0;
  46.         f = TaylorExpansion(x, n, flag);
  47.  
  48.         if (flag == 0)
  49.             printf("|%6.2f |  %8.5f   |   %8.5f    |%6d  |\n", x, f, log((x + 1) / (x - 1)), n);
  50.         else
  51.             printf("|%6.2f |      -      |        -      |%6d  |\n", x, n);
  52.        
  53.     }
  54.     cout << "-----------------------------------------------\n";
  55. }
  56.  
  57. int main()
  58. {
  59.     float xn, xk, dx;
  60.     cout << "Enter xn, xk, dx: \n";
  61.     cin >> xn >> xk >> dx;
  62.     Table(xn, xk, dx);
  63.     _getch();
  64.      return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement