ВУЗы и колледжи

Написал программу для вышмата, но Pycharm не хочет выдавать результат. в чём моя ошибка?

Сам вопрос : Пусть (a, b) – координаты случайной точки в квадрате K= {(a, b): |a|<1, |b|<1}.Найти вероятность того, что корни уравнения x2 + ax + b = 0
а) действительны; б) положительны.

'''python
import random

def probability(a, b):
"""
This function takes in the coordinates of a point (a, b) and returns the probability that the roots of
the equation x^2 + ax + b = 0 are valid and positive.
"""
count_valid = 0 # For counting the number of valid roots
count_positive = 0 # For counting the number of positive roots
n = 100000 # Number of iterations for Monte Carlo simulation

for i in range(n):
# Generating random numbers within (-1, 1) for a and b
x = random.uniform(-1, 1)
y = random.uniform(-1, 1)

# Checking if the point (x, y) satisfies the condition of being inside the square K
if abs(x) < 1 and abs(y) < 1:

# Calculating the discriminant
disc = (a**2) - (4 * b)

# Checking if the roots are valid and positive
if disc >= 0:
count_valid += 1
root1 = (-a + ((a**2) - (4 * b))**0.5) / 2
root2 = (-a - ((a**2) - (4 * b))**0.5) / 2
if root1 > 0 and root2 > 0:
count_positive += 1

# Calculating the probabilities
prob_valid = count_valid / n
prob_positive = count_positive / count_valid

return prob_valid, prob_positive

# Testing the function for a=1, b=-1
prob_valid, prob_positive = probability(1, -1)
print(f"The probability that the roots of x^2 + ax + b = 0 are valid: {prob_valid}")
print(f"The probability that the roots of x^2 + ax + b = 0 are positive: {prob_positive}")
'''
Indira Utebaeva
Indira Utebaeva
139
В вашем коде есть небольшая ошибка, которая приводит к тому, что функция не возвращает никакого результата. Для исправления этой ошибки вы должны переместить строки с вычислением вероятностей и выводом результата за пределы цикла for.

Вот исправленный код:

python
Copy code
import random

def probability(a, b):
"""
This function takes in the coordinates of a point (a, b) and returns the probability that the roots of
the equation x^2 + ax + b = 0 are valid and positive.
"""
count_valid = 0 # For counting the number of valid roots
count_positive = 0 # For counting the number of positive roots
n = 100000 # Number of iterations for Monte Carlo simulation

for i in range(n):
# Generating random numbers within (-1, 1) for a and b
x = random.uniform(-1, 1)
y = random.uniform(-1, 1)

# Checking if the point (x, y) satisfies the condition of being inside the square K
if abs(x) < 1 and abs(y) < 1:

# Calculating the discriminant
disc = (a**2) - (4 * b)

# Checking if the roots are valid and positive
if disc >= 0:
count_valid += 1
root1 = (-a + ((a**2) - (4 * b))**0.5) / 2
root2 = (-a - ((a**2) - (4 * b))**0.5) / 2
if root1 > 0 and root2 > 0:
count_positive += 1

# Calculating the probabilities
prob_valid = count_valid / n
prob_positive = count_positive / count_valid

return prob_valid, prob_positive

# Testing the function for a=1, b=-1
prob_valid, prob_positive = probability(1, -1)
print(f"The probability that the roots of x^2 + ax + b = 0 are valid: {prob_valid}")
print(f"The probability that the roots of x^2 + ax + b = 0 are positive: {prob_positive}")
Светлана Губаева
Светлана Губаева
343
Лучший ответ