1 минус корень из 2 на 2: 1 минус корень из 2 на 2

2, где sm-сумма m первых членов , sn-сумма n членов…

1 ответ(ов)

Алгебра

Вгараже находилось 340 автомашин трех видов. автомашины «москвич» составляли 45% от числа машин «жигули»,а число автомашин «запорожец» составляло 5/9 от числа автомашин «москвич»….

2 ответ(ов)

Алгебра

Решите систему неравенств: 0.5-0.2х> 1.7 0.6 — x< 1.6 — 3x…

2 ответ(ов)

Алгебра

Одно из чисел втрое больше второго , а разность этих чисел равна 62 . найдите большее из этих чисел….

3 ответ(ов)

Алгебра

Высота прямоугольного параллелепипеда равна 20см., что на 4 см. меньше его длины и в 5 раз больше его ширины . вычислите обьем данного параллелепипеда…

1 ответ(ов)

Знаешь правильный ответ?

Найдите значение выражения: (корень из 32 минус корень из 2) всё это в квадрате минус корень из 6,4…

Вопросы по предметам

Математика

Товарный поезд км за 3 часа проходя за каждый час одинаковые расстояние с какой средней скоростью двигался поезд? можно еще краткое действие ?. ..

3 ответ(ов)

Алгебра

Подскажите как решить. постройте график функции y=x в квадрате минус 2х минус 3. с графика найдите: а)промежутки возрастания и убывания функции б)наименьшее и наибольшее значения ф…

1 ответ(ов)

Обществознание

Какие силы приводят катушку в движение?…

2 ответ(ов)

Алгебра

Tg(альфа)= -2,4 найти синус, косинус, катангенс…

3 ответ(ов)

Геометрия

Углы треугольника пропорциональны числам 3,8,5.докажите, что этот треугольник прямоугольный….

1 ответ(ов)

Литература

К. д ушинский первое знакомство с родиной поезка из столицы в деревню составь план поездки по проселочной дороге . что видели дети…

1 ответ(ов)

История

Дайте характеристику александра1 предварительный сосав план доклада…

3 ответ(ов)

Русский язык

Речевая ситуация в которой можно употребить одну из пословиц : правда светлее солнца, дороже золота или маленькое дело лучше большого безделья или утро вечера мудренее.

1 ответ(ов)

Литература

Составьте сказку о животных. какие события будут происходить в сказке, составьте рабочий план: 1) присказка, 3) концовка…

3 ответ(ов)

Алгебра

Верно ли утверждение число, оканчивающееся на три нуля делится на 8…

2 ответ(ов)

Больше вопросов по предмету: Алгебра Случайные вопросы

Задать вопрос

Популярные вопросы

Найдите объем и число молекул 132 кг оксида углеро…

3 ответ(ов)

Present simple 158 1)когда вы встаю без четвер-сем…

3 ответ(ов)

Составьте по уравнению! а) (y + 6) — 2 = 15 б) 2(а…

2 ответ(ов)

Из чисел 3,2; 27,10; 39,4; 177,20; 801,100 выделит…

2 ответ(ов)

На каком и в какой части материка находится вулкан…

3 ответ(ов)

Пары веществ: а) оксид металла и водорода простое…

1 ответ(ов)

Найти площадь круга если его радиус равен 5,4 дм (…

3 ответ(ов)

Скажите , верно ли я решил? «какую массу соляной к. ..

1 ответ(ов)

Фотон электромагнитного излучения имеет энергию 6,…

1 ответ(ов)

Сочинение на тему что взять с собой в дорогу…

2 ответ(ов)

упростите выражение корень18 минус корень 2

2x+12•|x+11|+3 при x =-9 Школьники посадили в парке саженцы березок , тополей и лип . Тополей они посадили в 4 раза больше чем остальных деревьев вместе взятых. Сколько всего саженцев посадили ребята, если лип было посаже… Школьники посадили в парке саженцы березок , тополей и лип . Тополей они посадили в 4 раза больше чем остальных деревьев вместе взятых. Сколько всего саженцев посадили ребята, если лип было посаже… Школьники посадили в парке саженцы березок , тополей и лип . Тополей они посадили в 4 раза больше чем остальных деревьев вместе взятых. Сколько всего саженцев посадили ребята, если лип было посаже… Школьники посадили в парке саженцы березок , тополей и лип . Тополей они посадили в 4 раза больше чем остальных деревьев вместе взятых. Сколько всего саженцев посадили ребята, если лип было посаже… Школьники посадили в парке саженцы березок , тополей и лип . Тополей они посадили в 4 раза больше чем остальных деревьев вместе взятых. Сколько всего саженцев посадили ребята, если лип было посаже… Школьники посадили в парке саженцы березок , тополей и лип .

Тополей они посадили в 4 раза больше чем остальных деревьев вместе взятых. Сколько всего саженцев посадили ребята, если лип было посаже… Школьники посадили в парке саженцы березок , тополей и лип . Тополей они посадили в 4 раза больше чем остальных деревьев вместе взятых. Сколько всего саженцев посадили ребята, если лип было посаже… Школьники посадили в парке саженцы березок , тополей и лип . Тополей они посадили в 4 раза больше чем остальных деревьев вместе взятых. Сколько всего саженцев посадили ребята, если лип было посаже… Школьники посадили в парке саженцы березок , тополей и лип . Тополей они посадили в 4 раза больше чем остальных деревьев вместе взятых. Сколько всего саженцев посадили ребята, если лип было посаже… В семи аквариумах было поровну рыбок. Установили ещё два аквариума, и рыбок расселили так, чтобы во всех аквариумах, кроме одного, их стало поровну, а в одном — на 1 больше, чем в каждом из остальн… Учёный наблюдал с помощью микроскопа процесс деление клеток.
За первый час их число увеличилось в 3 раза, за второй раз увеличилось число клеток за два часа , если их первоначально было 25 штук ?

Мэтуэй | Популярные задачи

92
1 Найти точное значение
грех(30)
2 Найти точное значение грех(45)
3 Найти точное значение грех(30 градусов)
4 Найти точное значение грех(60 градусов)
5 Найти точное значение загар (30 градусов)
6 Найти точное значение угловой синус(-1)
7 Найти точное значение грех(пи/6)
8
Найти точное значение cos(pi/4)
9 Найти точное значение грех(45 градусов)
10 Найти точное значение грех(пи/3)
11 Найти точное значение арктан(-1)
12 Найти точное значение cos(45 градусов)
13 Найти точное значение cos(30 градусов)
14 Найти точное значение
желтовато-коричневый(60)
15 Найти точное значение csc(45 градусов)
16 Найти точное значение загар (60 градусов)
17 Найти точное значение сек(30 градусов)
18 Найти точное значение cos(60 градусов)
19 Найти точное значение cos(150)
20 Найти точное значение грех(60)
21 Найти точное значение cos(pi/2)
22 Найти точное значение загар (45 градусов)
23 Найти точное значение arctan(- квадратный корень из 3)
24 Найти точное значение csc(60 градусов)
25 Найти точное значение сек(45 градусов)
26 Найти точное значение csc(30 градусов)
27 Найти точное значение грех(0)
28 Найти точное значение грех(120)
29 Найти точное значение соз(90)
30 Преобразовать из радианов в градусы пи/3
31 Найти точное значение желтовато-коричневый(30)
32
35 Преобразовать из радианов в градусы пи/6
36 Найти точное значение детская кроватка(30 градусов)
37 Найти точное значение арккос(-1)
38 Найти точное значение арктан(0)
39 Найти точное значение детская кроватка(60 градусов)
40 Преобразование градусов в радианы 30
41 Преобразовать из радианов в градусы (2 шт. )/3
42 Найти точное значение sin((5pi)/3)
43 Найти точное значение sin((3pi)/4)
44 Найти точное значение тан(пи/2)
45 Найти точное значение грех(300)
46 Найти точное значение соз(30)
47 Найти точное значение соз(60)
48 Найти точное значение соз(0)
49 Найти точное значение соз(135)
50 Найти точное значение cos((5pi)/3)
51 Найти точное значение cos(210)
52 Найти точное значение сек(60 градусов)
53 Найти точное значение грех(300 градусов)
54 Преобразование градусов в радианы 135
55 Преобразование градусов в радианы 150
56 Преобразовать из радианов в градусы (5 дюймов)/6
57 Преобразовать из радианов в градусы (5 дюймов)/3
58 Преобразование градусов в радианы 89 градусов
59 Преобразование градусов в радианы 60
60 Найти точное значение грех(135 градусов)
61 Найти точное значение грех(150)
62 Найти точное значение грех(240 градусов)
63 Найти точное значение детская кроватка(45 градусов)
64 Преобразовать из радианов в градусы (5 дюймов)/4
65 Найти точное значение грех(225)
66 Найти точное значение грех(240)
67 Найти точное значение cos(150 градусов)
68 Найти точное значение желтовато-коричневый(45)
69 Оценить грех(30 градусов)
70 Найти точное значение сек(0)
71 Найти точное значение cos((5pi)/6)
72 Найти точное значение КСК(30)
73 Найти точное значение arcsin(( квадратный корень из 2)/2)
74 Найти точное значение загар((5pi)/3)
75 Найти точное значение желтовато-коричневый(0)
76 Оценить грех(60 градусов)
77 Найти точное значение arctan(-( квадратный корень из 3)/3)
78 Преобразовать из радианов в градусы (3 пи)/4 
79 Найти точное значение sin((7pi)/4)
80 Найти точное значение угловой синус(-1/2)
81 Найти точное значение sin((4pi)/3)
82 Найти точное значение КСК(45)
83 Упростить арктан(квадратный корень из 3)
84 Найти точное значение грех(135)
85 Найти точное значение грех(105)
86 Найти точное значение грех(150 градусов)
87 Найти точное значение sin((2pi)/3)
88 Найти точное значение загар((2pi)/3)
89 Преобразовать из радианов в градусы пи/4
90 Найти точное значение грех(пи/2)
91 Найти точное значение сек(45)
92 Найти точное значение cos((5pi)/4)
93 Найти точное значение cos((7pi)/6)
94 Найти точное значение угловой синус(0)
95 Найти точное значение грех(120 градусов)
96 Найти точное значение желтовато-коричневый ((7pi)/6)
97 Найти точное значение соз(270)
98 Найти точное значение sin((7pi)/6)
99 Найти точное значение arcsin(-( квадратный корень из 2)/2)
100 Преобразование градусов в радианы 88 градусов

math — Как вычислить квадратный корень в Python?

Вариант 1:

math. sqrt()

Модуль math из стандартной библиотеки имеет функцию sqrt для вычисления квадратного корня числа. Он принимает любой тип, который может быть преобразован в с плавающей запятой (включая int ) в качестве аргумента, и возвращает с плавающей запятой .

 >>> импорт математики
>>> math.sqrt(9)
3.0
 

Вариант 2: дробная экспонента

Степенной оператор ( ** ) или встроенный 9Функция 0907 pow() также может быть использована для вычисления квадратного корня. С математической точки зрения, квадратный корень из из равен из в степени 1/2 .

Степенной оператор требует числовых типов и соответствует правилам преобразования для двоичных арифметических операторов, поэтому в этом случае он вернет либо число с плавающей запятой , либо комплексное число .

 >>> 9 ** (1/2)
3. 0
>>> 9 ** .5 # То же самое
3.0
>>> 2** .5
1.4142135623730951
 

(Примечание: в Python 2 1/2 усекается до 0 , поэтому вам нужно принудительно использовать арифметику с плавающей запятой с помощью 1.0/2 или аналогичного. См. Почему Python дает «неправильный» ответ для квадрата. root?)

Этот метод можно обобщить до корня n-й степени, хотя дроби, которые не могут быть точно представлены в виде числа с плавающей запятой (например, 1/3 или любой другой знаменатель, не являющийся степенью двойки), могут привести к некоторой неточности:

 >>> 8** (1/3)
2.0
>>> 125** (1/3)
4.999999999999999
 

Пограничные случаи

Отрицательные и комплексные

Возведение в степень работает с отрицательными и комплексными числами, хотя результаты имеют небольшую неточность:

 >>> (-25) ** .5 # Должно быть 5j
(3,061616997868383e-16+5j)
>>> 8j ** .5 # Должно быть 2+2j
(2.0000000000000004+2j)
 

Обратите внимание на круглые скобки -25 ! В противном случае он анализируется как -(25**. 5) , потому что возведение в степень является более строго обязательным, чем унарное отрицание.

Между тем, math создан только для чисел с плавающей запятой, поэтому для x<0 math.sqrt(x) вызовет ValueError: math domain error , а для комплексного x - TypeError: невозможно преобразовать комплекс в число с плавающей запятой . Вместо этого вы можете использовать cmath.sqrt(x) , что более точно, чем возведение в степень (и, вероятно, будет быстрее):

 >>> import cmath
>>> cmath.sqrt(-25)
5j
>>> cmath.sqrt(8j)
(2+2к)
 

Precision

Оба варианта включают неявное преобразование в float , поэтому важным фактором является точность с плавающей запятой. Например:

 >>> n = 10**30
>>> х = п**2
>>> корень = х**.5
>>> п == корень
ЛОЖЬ
>>> n - root # насколько они удалены?
0,0
>>> int(root) - n # насколько далеко float от int?
19884624838656
 

Очень большие числа могут даже не поместиться в число с плавающей запятой, и вы получите OverflowError: int слишком большой для преобразования в число с плавающей запятой . См. предел Python sqrt для очень больших чисел? Пример Traceback (последний последний вызов): Файл "", строка 1, в TypeError: неподдерживаемые типы операндов для ** или pow(): 'decimal.Decimal' и 'float' >>> decimal.Decimal('9') ** decimal.Decimal('.5') Десятичный('3.000000000000000000000000000')

Между тем, math и cmath будут молча преобразовывать свои аргументы в float и complex соответственно, что может означать потерю точности.

десятичный также имеет свой собственный .sqrt() . См. также вычисление n-го корня с использованием десятичного модуля Python 3

. 5

SymPy

В зависимости от вашей цели может быть хорошей идеей отложить вычисление квадратных корней как можно дольше. SymPy может помочь.

SymPy — это библиотека Python для символьной математики.

 импорт Симпи
sympy. sqrt(2)
# => квадрат(2)
 

Сначала это кажется не очень полезным.

Но sympy может дать больше информации, чем числа с плавающей запятой или десятичные дроби:

 sympy.sqrt(8) / sympy.sqrt(27)
# => 2*кв.(6)/9
 

Точность не теряется. (√2)² по-прежнему целое число:

 s = sympy.sqrt(2)
секс 2
# => 2
тип(s**2)
#=> <класс 'sympy.core.numbers.Integer'>
 

Для сравнения, числа с плавающей запятой и десятичные числа вернут число, очень близкое к 2, но не равное 2:

 (2**0,5)**2
# => 2.00000000000000004
из десятичного импорта Decimal
(Десятичный ('2') ** Десятичный ('0,5')) ** Десятичный ('2')
# => Десятичный('1.999999999999999999999999999')
 

Sympy также понимает более сложные примеры, такие как интеграл Гаусса:

 from sympy import Symbol, Integrated, pi, sqrt, exp, oo
х = Символ ('х')
интегрировать (exp (-x ** 2), (x, -oo, oo))
# => квт(пи)
интегрировать (exp (-x ** 2), (x, -oo, oo)) == sqrt (pi)
# => Верно
 

Наконец, если требуется десятичное представление, можно запросить больше цифр, чем когда-либо потребуется:

 sympy. N(sympy.sqrt(2), 1_000_000)
# => 1.4142135623730950488016.........20441930161204
 

NumPy

 >>> импортировать numpy как np
>>> np.sqrt(25)
5,0
>>> np.sqrt([2, 3, 4])
массив([1.41421356, 1.73205081, 2. ])
 

docs

Отрицательный

Для отрицательных реалов возвращается нан , поэтому для этого случая доступно np.emath.sqrt() .

 >>> a = np.array([4, -1, np.inf])
>>> np.sqrt(а)
:1: RuntimeWarning: в sqrt обнаружено недопустимое значение
массив([ 2., нан, инф])
>>> np.emath.sqrt(а)
массив([ 2.+0.j, 0.+1.j, inf+0.j])
 

Еще один вариант, конечно, сначала преобразовать в комплекс:

 >>> a = a.astype(complex)
>>> np.sqrt(а)
массив([ 2.+0.j, 0.+1.j, inf+0.j])
 

0

Метод Ньютона

Наиболее простым и точным способом вычисления квадратного корня является метод Ньютона.

У вас есть число, из которого вы хотите вычислить квадратный корень ( число ), и у вас есть предположение о его квадратном корне ( оценка ). Оценка может быть любым числом больше 0, но число, имеющее смысл, значительно сокращает глубину рекурсивного вызова.

 new_estimate = (оценка + число/оценка) / 2
 

Эта строка вычисляет более точную оценку с этими двумя параметрами. Вы можете пройти new_estimate значение функции и вычислить другое new_estimate , которое является более точным, чем предыдущее, или вы можете сделать определение рекурсивной функции, подобное этому.

 def newtons_method(число, оценка):
    # Вычисление new_estimate
    new_estimate = (оценка + число/оценка) / 2
    печать (новая_оценка)
    # Базовый вариант: сравнение нашей оценки со значением встроенных функций
    если new_estimate == math.sqrt(число):
        вернуть Истина
    еще:
        вернуть newtons_method (число, новая_оценка)
 

Например, нам нужно найти квадратный корень из 30-х. Мы знаем, что результат находится между 5 и 6.

 newtons_method(30,5)
 

число равно 30, а оценка равна 5. Результат каждого рекурсивного вызова:

 5.5
5.477272727272727
5.4772255752546215
5.477225575051661
 

Последний результат — наиболее точное вычисление квадратного корня из числа. Это то же значение, что и у встроенной функции math.sqrt() .


Этот ответ был первоначально опубликован gunesevitan, но теперь удален.

6

Модуль Python Fraction и его класс Fraction реализуют арифметику с рациональными числами. Класс Fraction не реализует операцию извлечения квадратного корня, поскольку большинство квадратных корней являются иррациональными числами. Однако его можно использовать для аппроксимации квадратного корня с произвольной точностью, поскольку числитель и знаменатель дроби дроби являются целыми числами произвольной точности.

Следующий метод принимает положительное число x и количество итераций и возвращает верхнюю и нижнюю границы квадратного корня из x .

 из фракций импорт Фракция
защита sqrt(x, n):
    x = x, если isinstance (x, дробь), иначе дробь (x)
    верхний = х + 1
    для i в диапазоне (0, n):
        верхний = (верхний + x/верхний) / 2
    нижний = х / верхний
    если нижний > верхний:
        поднять ValueError("Проверка работоспособности не удалась")
    возврат (нижний, верхний)
 

Подробнее о реализации этой операции см. в ссылке ниже. Там же показано, как реализовать другие операции с верхними и нижними границами (хотя там видимо как минимум одна ошибка с операцией log ).

  • Даумас, М., Лестер, Д., Муньос, К., «Проверенные вычисления вещественных чисел: библиотека интервальной арифметики», arXiv: 0708.3721 [cs.MS], 2007.

В качестве альтернативы, используя Python math.isqrt , мы можем вычислить квадратный корень с произвольной точностью:

  • Квадратный корень из i в пределах 1/2 n от правильного значения, где i — целое число: Fraction(math. isqrt(i * 2**(n*2)), 2**н) .
  • Квадратный корень из i с точностью до 1/10 n правильного значения, где i — целое число: Fraction(math.isqrt(i * 10**(n*2)), 10* *н) .
  • Квадратный корень из x в пределах 1/2 n от правильного значения, где x кратно 1/2 n : Fraction(math.isqrt(x * 2**(n)), 2**n) .
  • Квадратный корень из x в пределах 1/10 n правильного значения, где x кратно 1/10 n : (н)), 10**н) .

В предыдущем i или x должно быть 0 или больше.

1

Отказ от ответственности: это для более специализированного варианта использования. Этот метод не может быть практичным во всех обстоятельствах.

Преимущества:

  • может находить целочисленные значения (т.е. какое целое число является корнем?)
  • нет необходимости преобразовывать в число с плавающей запятой, поэтому точность выше (это тоже можно сделать хорошо)

Я лично реализовал это для крипто CTF-вызова (атака кубического корня RSA), где мне нужно было точное целочисленное значение.

Общая идея может быть распространена на любой другой корень.

 def int_squareroot(d: int) -> tuple[int, bool]:
    """Попробуйте вычислить целочисленный квадратный корень и вернуться, если он точен"""
    влево, вправо = 1, (d+1)//2
    пока слева<справа-1:
        х = (левый+правый)//2
        если х**2 > д:
            влево, вправо = влево, х
        еще:
            влево, вправо = х, вправо
    вернуться влево, влево**2==d
 

РЕДАКТИРОВАТЬ:

Как также указал @wjandrea, ** этот код примера НЕ может вычислять **. Это побочный эффект того факта, что он ничего не конвертирует в числа с плавающей запятой, поэтому точность не теряется. Если корень является целым числом, вы получите его обратно. Если это не так, вы получите наибольшее число, квадрат которого меньше вашего числа. Я обновил код, чтобы он также возвращал логическое значение, указывающее, правильное значение или нет, а также исправил проблему, вызывающую бесконечный цикл (на что также указал @wjandrea). Эта реализация общего метода по-прежнему работает немного странно для меньших чисел, но больше 10 у меня не было проблем.

Преодоление проблем и ограничений этого метода/реализации:

Для меньших чисел вы можете просто использовать все остальные методы из других ответов. Обычно они используют числа с плавающей запятой, что может означать потерю точности, но для небольших целых чисел это вообще не должно означать проблем. Все те методы, которые используют числа с плавающей запятой, имеют одинаковый (или почти одинаковый) лимит.

Если вы все еще хотите использовать этот метод и получать результаты с плавающей запятой, должно быть тривиально преобразовать его для использования с плавающей запятой. Обратите внимание, что это снова приведет к потере точности, уникальному преимуществу этого метода по сравнению с другими, и в этом случае вы также можете просто использовать любой из других ответов. Я думаю, что версия метода Ньютона сходится немного быстрее, но я не уверен.

Для больших чисел, когда в игру вступает потеря точности с числами с плавающей запятой, этот метод может дать результаты, более близкие к фактическому ответу (в зависимости от того, насколько велик ввод). Если вы хотите работать с нецелыми числами в этом диапазоне, вы также можете использовать другие типы, например числа с фиксированной точностью в этом методе.

Редактировать 2, по другим ответам:

В настоящее время, и на самом деле, единственный другой ответ, который имеет аналогичную или лучшую точность для больших чисел, чем эта реализация, - это тот, который предлагает SymPy от Эрика Думинила. Эта версия также проще в использовании и работает с любым числом, единственным недостатком является то, что для нее требуется SymPy. Моя реализация свободна от каких-либо огромных зависимостей, если это то, что вы ищете.

9

Квадратный корень произвольной точности

Этот вариант использует операции со строками для преобразования строки, представляющей десятичное число с плавающей запятой, в int , вызывает math.isqrt для фактического извлечения квадратного корня, а затем форматирует результат как десятичная строка. math.isqrt округляет в меньшую сторону, поэтому все полученные цифры правильные.

Входная строка, num , должна использовать простой формат с плавающей запятой: нотация 'e' не поддерживается. num строка может быть простым целым числом, а ведущие нули игнорируются.

Аргумент цифр задает количество знаков после запятой в строке результата, т. е. количество знаков после запятой.

 из математического импорта isqrt
def str_sqrt (число, цифры):
    """ Квадратный корень произвольной точности
        num arg должен быть строкой
        Возвращает строку с `цифрами` после
        десятичная точка
        Написал PM 2Ring 2022. 01.26
    """
    int_part , _, frac_part = num.partition('.')
    число = целая_часть + дробная_часть
    # Определяем требуемую точность
    ширина = 2 * цифры - len(frac_part)
    # Обрезать или дополнить нулями
    num = num[:width], если ширина <0, иначе num + '0' * ширина
    s = ул (isqrt (целое (число)))
    если цифры:
        # Накладка, если необходимо
        s = '0' * (1 + цифры - длина (ы)) + s
        s = f"{s[:-цифры]}.{s[-цифры:]}"
    вернуть с
 
Тест
 print(str_sqrt("2.0", 30))
 
Выход
 1.414213562373095048801688724209
 

Для небольшого количества цифр быстрее использовать decimal.Decimal.sqrt . Около 32 цифр или около того, str_sqrt примерно с той же скоростью, что и Decimal.sqrt . Но при 128 цифрах str_sqrt в 2,2 раза быстрее, чем Decimal.sqrt , при 512 цифрах это в 4,3 раза быстрее, при 8192 цифрах это в 7,4 раза быстрее.

Вот действующая версия, работающая на сервере SageMathCell.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *