Scipy MELHESQ

Scipy MELHESQ
Scipy é uma biblioteca de pitão de código aberto que oferece soluções para problemas matemáticos e científicos. Ele é construído sobre Numpy, estendendo a funcionalidade, fornecendo ferramentas adicionais para computação de matriz e estrutura de dados especializada.

A ampla gama de comandos de alto nível permite ao usuário visualizar e transformar os dados. Um dos comandos ou funções na biblioteca de otimização do SCIPY é o MELINGSQ (). A função MinElSq () utiliza o método de minimização menos quadrado.

Neste artigo, faremos com que você aprenda sobre a função MENLESQ (); Sua sintaxe, como funciona, e forneceremos alguns exemplos úteis que o ajudarão a entender como implementar a função MENLESQ (). Passe por este artigo se você é novo no conceito de Scipy MELHESQ e deseja aprender sobre isso.

Qual é a sintaxe da função MENLESQ ()?

A função MinElSq () minimiza a soma do quadrado de um conjunto de equações. É usado para resolver um problema de menos quadrado não linear. O círculo.MENLESQ () tem a seguinte sintaxe:

# Scipy.otimizar.MENLESQ (F, X, ARGS = (), df = Nenhum, FullOutput = 0, Coliberive = 0, F-Tol = 1.49012E-08, X-TOL = 1.49012E-08, G-TOL = 0.0, max-fev = 0, eps-fcn = nenhum, fac = 100, dia = nenhum)

Os parâmetros da função MENLESQ () são descritos da seguinte forma: o parâmetro 'f' é chamável, ele assume o argumento 'n' vetor e retorna o número de ponto flutuante 'm'. É importante que 'm> = n' e não deva retornar nans nans.

O parâmetro 'x' especifica o ponto de partida para a minimização. O parâmetro 'args' é um valor de tupla usado para colocar qualquer argumento extra necessário para a função e é um parâmetro opcional. O 'DF' é outro parâmetro chamável usado para calcular o jacobiano da função com derivados através das linhas. Também é um parâmetro opcional.

O 'FullOutput' é um parâmetro opcional e retorna todas as saídas opcionais. O 'Collerive' é um parâmetro bool opcional que especifica a função jacobiana que calcula derivados nas colunas. O 'F-Tol' é um parâmetro de flutuação opcional usado para apresentar o erro relativo desejado na soma dos quadrados.

O 'X-Tol' é outro parâmetro de flutuação opcional usado para apresentar o erro relativo desejado na solução aproximada. O 'G-Tol' é um parâmetro opcional usado para apresentar a ortogonalidade entre colunas jacobianas e vetores de função em um número de ponto flutuante. O 'max-fv' especifica o número máximo de chamadas para a função; No entanto, é um parâmetro opcional.

O 'EPS-FCN' especifica o comprimento desejável da etapa para a distância direta da função. O 'FAC', um parâmetro opcional, determina a etapa inicial ligada e, finalmente, o último parâmetro opcional 'dia' serve como um fator de escala para as variáveis.

Abaixo, estaremos elaborando o uso da função MENLESQ () com a ajuda de exemplos simples e diretos.

Exemplo 1:

Começaremos com um exemplo muito simples e básico para que você não fique confuso no começo e pare de ler mais. Este é o programa direto que ajudará você a entender a funcionalidade do método MENLESQ ().

Vamos ver o código abaixo. Observe que o código é executado no colaboratório. O colaboratório é um intérprete de python de código aberto usado para implementar e executar programas Python. É uma ferramenta gratuita e disponível abertamente no repositório do Google. Você pode baixar facilmente o .Arquivo de extensão PY após implementar e executar seu programa em um caderno de colaboração e posteriormente executar em qualquer outro intérprete Python como Jupyter ou Spyder.

de Scipy.Otimize o importação pelo menosq
Def Func_One (ABC):
Retornar 33*(ABC-2) ** 1+3
Imprimir (MELINGSQ (FUNC_ONE, 0))

Vamos ver a saída abaixo:

Exemplo 2:

Neste exemplo, apresentaremos o jacobiano da função de erro usando a função de algopia para explicar o uso da função MENLESQ (). Aqui, você pode ver que as bibliotecas são importadas primeiro, o que é importante para a execução do código.

Então, criamos as matrizes NP indicadas como 'y_data' e 'val'. Depois disso, definimos três funções e passamos os valores necessários para eles. E, finalmente, os valores estimados e o número total de chamadas feitas pela função são exibidas como você pode ver nas linhas finais do programa de código.

importar numpy como np
De importação ccepy otimize
Algpy de importação como ALG
y_data = np.Array ([0.2387, 0.1214, -0.0321, 0.2456, 0.6453, 0.4578, 0.2214, 0.2814, 0.2774, 0.5671, 0.4454, 0.6743, 0.1109, 0.1543, 0.0203, 0.1286, 0, 0, 0])
val = np.Array ([58., 78, 109, 118, 129, 141, 165, 176, 178, 265, 246, 265, 272, 288, 299, 301, 344, 356, 332]))
Def Func (P, Val):
Retornar P [0] + (P [1] -p [0]) * ((1/(1 + ALG.exp (-p [2]*(val-p [3])))) + (1/(1 + alg.exp (p [4]*(val -p [5]))) -1)
def error_func (p, val, y):
Retornar Func (P, Val) -y
def jac_error_func (p, val, y):
AP = ALG.Utpm.init_jacobian (P)
Alg de retorno.Utpm.Extract_jacobian (ERROR_FUNC (AP, VAL, Y))
adivinhe = np.Array ([0, Max (y_data), 0.1, 120, -0.1, 250])
p2, c, informações, msg, sucesso = otimizar.MENLESQ (ERROR_FUNC, adivinhe, args = (val, y_data), dfun = jac_error_func, full_output = 1)
print ('A estimativa da função MENLESQ () é:', P2, sucesso)
Print ('Número total de chamadas da função são:', info ['nfev']))

Quando você executa o código fornecido, você poderá ver a seguinte saída.

Exemplo 3:

O uso básico da função de minimização pelo MENLESQ () é o ajuste da curva. Este é o ponto em que uma técnica de modelo parametrizada é usada para ajustar os valores numéricos.

No exemplo a seguir, mostraremos como modelar a curva de ajuste de dados e verificar as diferenças no encaixe. Estamos usando duas equações para definir dois tipos de funções para se encaixar. As equações podem ser alteradas; portanto, se você quiser usar suas equações, basta substituir a equação fornecida por suas equações e está pronto para ir.

Dessa forma, você pode entender melhor e observar a diferença de ajuste. Veja o código fornecido abaixo:

de Scipy.Otimize o importação pelo menosq
importar matplotlib.Pyplot como mtb
um = Array ([6, 8, 11, 4, 2, 3, 6, 8, 5, 7,8, 11, 14]))
Dois = Array (Range (Len (um)))
def func_one (param, um, dois):
ABC, XYZ, ABZ = param [0], param [1], Aram [2]
output = dois labiratórios • um •• 2+xyz • um+abzi
Retorno Saída
def func_two (param, um, dois):
ABC, XYZ, ABZ = param [0], param [1], param [2]
saída = dois- (abc*um ** 3+xyz*um+abz)
Retorno Saída
param = [0, 0, 0]
output_two = MEINCESQ (FUNC ONE, param, (um, dois))
ABC, XYZ, ABZ = output_two [0] [0], output_two [0] [1], output_two [0] [2]
yfit1 = abc*um ** 2+xyz*um+abz
output_two = MEINCESQ (func_two, param, (um, dois)) abc, xyz, abz = output_two [0] [0], output_two [0] [1], output_two [0] [2]
yfit2 = abc*um ** 3+dois*um+abz
mtb.plot (um, dois, 'bo', label = "y-originat")
mtb.plot (um, yfitl, color = "preto", etiqueta = "y = ox^24-bx+c")
mtb.plot (um, yfit2, color = "vermelho", etiqueta = "y = ox^24-b+c")
mtb.xlabel ('x')
mtb.ylabel ('y')
mtb.Legenda (loc = 'Best', FancyBox = True, Shadow = True)
mtb.grade (verdadeira)
mtb.mostrar()

A saída do acima é dada abaixo:

Conclusão

Neste artigo, apresentamos detalhes sobre a função MENLESQ (). Vimos a sintaxe do MENLESQ () com a explicação de cada parâmetro necessário e opcional em detalhes. A função MinElSq () retira 12 parâmetros dos quais 2 são parâmetros obrigatórios e os 10 restantes são parâmetros opcionais.

Além disso, como usar a função MENLESQ () também é mencionado com exemplos. O primeiro exemplo é muito simples e básico e explica o uso básico da função, enquanto os outros dois exemplos explicam a funcionalidade complexa da função MENLESQ ().