По разделам



Задача Proc 44


Описать функцию Arctg1(x, ε) вещественного типа (параметры x, ε —
вещественные, |x| < 1, ε > 0), находящую приближенное значение функции
arctg(x):
arctg(x) = x − x
3
/3 + x
5
/5 − . . . + (−1)n
·x
2·n+1/(2·n+1) + . . . .
В сумме учитывать все слагаемые, модуль которых больше ε. С помощью
Arctg1 найти приближенное значение arctg(x) для данного x при шести
данных ε.

Код (C/C++)

# include <iostream>
# include <windows.h>
# include <cmath>
# include <iomanip>
# include <fstream> 
 
using namespace std;
 
double Arctg1(double x, double e);
int main ()
 
{
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
 
  ifstream in ("Proc44.txt");
  double x, e;
  double answer; // приближенное значение функции arctg(x)
  cout << "Введите число x (|x|<1): ";   cin >> x;
  cout << '\t' << "Стандартное значение фунцкции arctg(x): " << atan(x) << endl;
  for (int i=1; i < 7; ++i) {
  	cout << "Число e (e>0): ";
  	in >> e;
  	cout << e << " ";
  	answer = 0;
  	answer = Arctg1(x, e);
  	cout << '\t' << "Приближенное значение функции arctg(x): " << answer << endl;       }   system ("pause");   return 0; }   double Arctg1( double x, double e) {   int i;   double sum,Step;   Step = x;   sum = x;   i = 1;   while (abs(Step*x * x / -(i*2+1)) >= e){
    Step *= -(x * x);
    sum += Step / (i*2+1);
    i++;
  }
  return sum;
}

Код (Python)

import random
import math

def Arctg1(x,eps):
    if eps <= 0:
        print("Epsilon should be greater than 0")
    y = x
    f = x
    i = 3
    while abs(y) > eps:
        y *= (-1) * x * x / i * (i - 2)
        i += 2
        f += y
        #print(i,":",y,":",f)
    return f

#x = -0.5
#x = 2
x = 0.9
eps = 0.01
for i in range(0, 6):
    print("Arctg(",x,") = ",Arctg1(x,eps),";",math.atan(x))
    eps /= 10
									

Код (Pascal)

program Proc44;
 
Function Arctg1(x,e:Real):Real;
var
Znak,i:integer;
xi,ni:Real;
TempRez,Rez:Real;
 
begin
xi:=1;
i:=0;
Znak:=-1;
Rez:=0;
TempRez:=x;
 
While (abs(TempRez) > e) do
 begin
  if odd(i) then
   begin
    Znak:=Znak*(-1);
    Rez:=Rez+Znak*TempRez;
   end;
  inc(i);
  xi:=xi*x;
 if odd(i) then
  begin
   TempRez:=xi/i;
  end;
 end;
Arctg1:=Rez;
 
end;
 
var
  X,E:real;
  i: integer;
 
begin
   Write('X :');
   Readln(X);
   for i:=1 to 6 do
    begin
     Write('E :');
     Readln(E);
     Writeln(Arctg1(X,E));
    end;
end.
									




Proc. Абрамян
Proc 1 Просмотров: 11
Proc 2 Просмотров: 11
Proc 3 Просмотров: 9
Proc 4 Просмотров: 10
Proc 5 Просмотров: 11
Proc 6 Просмотров: 7
Proc 7 Просмотров: 10
Proc 8 Просмотров: 10
Proc 9 Просмотров: 10
Proc 10 Просмотров: 8
Proc 11 Просмотров: 12
Proc 12 Просмотров: 7
Proc 13 Просмотров: 10
Proc 14 Просмотров: 11
Proc 15 Просмотров: 10
Proc 16 Просмотров: 9
Proc 17 Просмотров: 18
Proc 18 Просмотров: 11
Proc 19 Просмотров: 12
Proc 20 Просмотров: 8
Proc 21 Просмотров: 10
Proc 22 Просмотров: 9
Proc 23 Просмотров: 7
Proc 24 Просмотров: 10
Proc 25 Просмотров: 7
Proc 26 Просмотров: 9
Proc 27 Просмотров: 12
Proc 28 Просмотров: 16
Proc 29 Просмотров: 19
Proc 30 Просмотров: 23
Proc 31 Просмотров: 10
Proc 32 Просмотров: 10
Proc 33 Просмотров: 8
Proc 34 Просмотров: 16
Proc 35 Просмотров: 6
Proc 36 Просмотров: 9
Proc 37 Просмотров: 9
Proc 38 Просмотров: 8
Proc 39 Просмотров: 11
Proc 40 Просмотров: 8
Proc 41 Просмотров: 11
Proc 42 Просмотров: 8
Proc 43 Просмотров: 8
Proc 44 Просмотров: 10
Proc 45 Просмотров: 12
Proc 46 Просмотров: 9
Proc 47 Просмотров: 7
Proc 48 Просмотров: 11
Proc 49 Просмотров: 9
Proc 50 Просмотров: 10
Proc 51 Просмотров: 16
Proc 52 Просмотров: 9
Proc 53 Просмотров: 11
Proc 54 Просмотров: 8
Proc 55 Просмотров: 10
Proc 56 Просмотров: 9
Proc 57 Просмотров: 8
Proc 58 Просмотров: 10
Proc 59 Просмотров: 7
Proc 60 Просмотров: 8

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться