Мне интересно, что это за сбой. По сути, у вас просто есть функция g(theta)
с
g(theta) = sum(i, f(x[i],theta))/10 - 20
Я предполагаю, что x - это данные.
Итак, мы могли бы сделать:
from scipy.optimize import root_scalar
from random import uniform, seed
from math import exp
def f(x_i, theta):
return exp(x_i * theta)
def g(theta, x):
s = 0
for x_i in x:
s += f(x_i,theta)
return s/10 - 20
def solve():
n = 10
seed(100)
x = [uniform(0,1) for i in range(n)]
print(x)
res = root_scalar(g,args=x,bracket=(0,100))
print(res)
solve()
Я вижу:
[0.1456692551041303, 0.45492700451402135, 0.7707838056590222, 0.705513226934028, 0.7319589730332557, 0.43351443489540376, 0.8000204571334277, 0.5329014146425713, 0.08015370917850195, 0.45594588118356716]
converged: True
flag: 'converged'
function_calls: 16
iterations: 15
root: 4.856897057972411