Автоматический поиск коэффициентов

Привет всем. Стоит задача аппроксимировать экспериментальные данные L(T) теоретической функцией L(theta, Const, T). Теоретическая функция задана в виде интеграла, который легко считается через integrate(), но в интеграле есть неизвестные коэффициенты, поэтому задача усложняется. Методом подбора можно вычислить эти коэффициенты, задав максимальный и минимальный пороги вектора-столбца значений theta, затем подставляя эти значения в теоретическую функцию в integrate(). Чтобы найти нужный коэффициент берется eps = summ( | L^2 эксп - L^2 теор | ). Нужный коэффициент лежит при min(eps), в кривой L^2 эксп. Собственно, пытался решить эту задачу и видимо где-то запутался, прошу помочь с этим.

PythonВыделить код

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
39
40
41
42
43
44
45
46
47
48

-- coding: utf-8 --
import numpy
from scipy import integrate
from numpy import exp
#import numpy as np
 
 
def debay(temp, lambd_exp, theta=1):
    def f(x):
        return 1  ((1 / theta)3)  ( (x3) / (exp(x) - 1))
 
    theta_mas = []
    const_mas = []
    theta_min = 50
    theta_max = 200
    const_min = 0.000010
    const_max = 0.000040
    N = 50
    Q = numpy.zeros((N, N))
    E = numpy.zeros((N, N))
 
    for i in range(N):
        theta_mas.append((((theta_max - theta_min) / N)  i) + theta_min)
        const_mas.append((((const_max - const_min) / N)  i) + const_min)
 
    for i in temp:
        for j in range(N):
            for k in range(N):
                Q[j][k] = ((const_mas[k]9i4)integrate.quad(f, 0, theta_mas[j] / i)[0])
 
    theory_lambd = numpy.zeros(())
 
    for k in lambd_exp:
        for j in range(Q):
            for i in range(Q):
                E[j][i] = (sum(Q[j][i]  2 - k  2)[0])
                theory_lambd[j][i] = Q[j][i]
 
    minE = E[0][0]
    minW = numpy.zeros(())
 
    for i in range(E):
        for j in range(E):
            if E[i][j] < minE:
                 minE = E[i][j]
                 minW = theory_lambd[i][j]
 
    return minW