2016-05-12 3 views
0

Я решаю большие системы уравнений, но имею доступ к матрице jacobian.Передача дополнительных аргументов якобиану в scipy.optimize.root

Я решил использовать scipy.optimize.root (открыт для других предложений), где я могу передать якобиан в качестве дополнительного вызываемого. Единственная проблема заключается в том, что мой якобиан содержит дополнительные константы, например.

В этом примере у, г должна быть решена, и к является постоянной

import scipy.optimize 

def fun(x, k): 
    [y, z]= x 

    return [k*y**2 + z**2 - 25, k*z*y ] 

def jacobian(x, k): 
    [y, z] = x 

    j = [[2*k*y, 2*z], 
     [ k*z, k*y]] 

    return j 

solution = scipy.optimize.root(fun, [x1, x2], jaco=(jacobian, value_for_k)) 
+0

вы можете ввести k, используя 'functools.partial'. https://docs.python.org/3/library/functools.html#functools.partial – cel

ответ

2

Используйте root(..., args=(value,)), чтобы найти корень fun(x,value)==0 при фиксированном value. Обратите внимание, что args должен быть кортежем, даже если одноэлементный.

Смежные вопросы