(sinx - cosx)/x до тех пор пока последний элемент не становится меньше 0.01
import math
def calc():
x = 1
sinx = math.sin(x)
cosx = math.cos(x)
while (sinx - cosx)/x > 0.01:
print(x, (sinx - cosx)/x)
x += 1
def check():
x = 1
sinx = math.sin(x)
cosx = math.cos(x)
print("x is", x)
print("sinx is", sinx, "cosx is", cosx)
print("(sinx - cosx) is", sinx - cosx)
print("(sinx - cosx)/x is", (sinx - cosx)/x)
print("---Start calc()---")
calc()
print("---Start check()---")
check()
Что касается первого элемента, то вроде бы все верно
Вывод:
---Start calc()---
1 0.30116867893975685
2 0.15058433946987843
3 0.10038955964658562
4 0.07529216973493921
5 0.06023373578795137
6 0.05019477982329281
7 0.04302409699139383
8 0.037646084867469606
9 0.03346318654886187
10 0.030116867893975684
11 0.02737897081270517
12 0.025097389911646405
13 0.023166821456904373
14 0.021512048495696916
15 0.020077911929317124
16 0.018823042433734803
17 0.017715804643515107
18 0.016731593274430936
19 0.015850983102092465
20 0.015058433946987842
21 0.014341365663797945
22 0.013689485406352585
23 0.01309429038868508
24 0.012548694955823203
25 0.012046747157590274
26 0.011583410728452186
27 0.01115439551628729
28 0.010756024247848458
29 0.010385126859991616
30 0.010038955964658562
---Start check()---
x is 1
sinx is 0.8414709848078965 cosx is 0.5403023058681397
(sinx - cosx) is 0.30116867893975685
(sinx - cosx)/x is 0.30116867893975685
Но если в функции check() изменить x = 2
То вывод:
---Start calc()---
1 0.30116867893975685
2 0.15058433946987843
3 0.10038955964658562
4 0.07529216973493921
5 0.06023373578795137
6 0.05019477982329281
7 0.04302409699139383
8 0.037646084867469606
9 0.03346318654886187
10 0.030116867893975684
11 0.02737897081270517
12 0.025097389911646405
13 0.023166821456904373
14 0.021512048495696916
15 0.020077911929317124
16 0.018823042433734803
17 0.017715804643515107
18 0.016731593274430936
19 0.015850983102092465
20 0.015058433946987842
21 0.014341365663797945
22 0.013689485406352585
23 0.01309429038868508
24 0.012548694955823203
25 0.012046747157590274
26 0.011583410728452186
27 0.01115439551628729
28 0.010756024247848458
29 0.010385126859991616
30 0.010038955964658562
---Start check()---
x is 2
sinx is 0.9092974268256817 cosx is -0.4161468365471424
(sinx - cosx) is 1.325444263372824
(sinx - cosx)/x is 0.662722131686412
Функция calc() выводит значение 0.15058433946987843, что неверно. Хотя, код на мой взгляд одинаковый. Подскажите пожалуйста, в чем может быть проблема?