Math domain error python что это
Перейти к содержимому

Math domain error python что это

  • автор:

Ошибка в python: ValueError: math domain error

Ошибка в восьмой строке. Именно там вычисляется квадратный корень из дискриминанта, неотрицательность которого не была проверена. Очевидно, это и приводит к ошибке, т.к. классический sqrt из модуля math не работает с комплексными числами.

Простейшим решением будет переписать Ваш код так:

from math import sqrt p = input("Введите x (ax2+bx+c) :") a = float (input("Введите число :")) b = float (input("Введите число :")) c = float( input("Введите число :")) D = b*2 - 4*a*c print(D) assert(D >= 0) x1 = -b - sqrt(D)/2*a x2 = -b + sqrt(D)/2*a print(x1) print(x2) 

assert() проверяет условие в скобках и, если оно ложно, вызывает исключение AssertionError .

Если же работа с комплексными числами всё же входит в Ваши планы, решение будет ещё более простым: замените модуль math на cmath . Этот модуль также содержит функцию sqrt , однако поддерживает работу с комплексными числами.

Math domain error

Выдает ошибку при компиляции math domain error
Выдает ошибку при компиляции(math domain error) на 8 строчке где acos from math import.

Math domain error
import math def fact(a): f = 1 for i in range(1,a+1): f *= i return f n =.

Ошибка math domain error
Здравствуйте, выполнял задание для решения функции, вроде как нашел ее область определения и.

ValueError: math domain error
import math x = -4 step = 1 while x < 4.5: y = 5 * math.cos(3*x) + 6 * (math.sqrt(x**2.

Math domain error

В строчке с summ += выдаёт ошибку, я пытался возвести в степень через экспоненту, но потом допёр, вся ошибка в этих самых экспонентах, но когда я возвожу в степень как обычно n**k выдаёт какой-то непонятный результат, на Паскале программа работает отлично

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
var x1, n: integer; x, summ, p: real; function fact(a: integer): integer; var f: integer; begin f := 1; for var i:=1 to a do f := f * i; fact := f; end; begin writeln('Введите число n: '); readln(n); x := 0; x1 := 1; summ := 0; while x < x1 do begin for var k:=1 to ((n+1) div 2) do summ := summ + (((exp(ln(-1)*k)*fact((2*(n - k))))/fact(k)*fact(n-k)*fact(n-2*k))*exp(ln(x)*(n-2*k))); p := (1/(exp(ln(2)*n))); writeln(p:4:2); summ := 0; x := x + 0.1; end; end.

Если n < 0 то в питоне всё работает, но выдаёт все нули, однако, без ошибки

Выдает ошибку math domain error

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

Остальные ответы

У вас ошибка! Двойной знак умножить не существует, строка может выглядеть так (без учета того, что вы там имели ввиду под » ** «) : log (3 * a * 2 — 25 * a * x + 8 * x * 2 + 1) / log (10)

MaratПрофи (604) 6 лет назад
Это степень обозначается на Питоне)))

Permanent Polymorphism Studio Профи (770) В таком случае замените запись, т. к. новый питон ее явно не поддерживает)

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

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