Daha sonra scipy nsolve işleviyle çözülecek bir dizi denklemde birleştirilecek bir işlev oluşturmak istiyorum. Böyle bir işlev oluşturmak isteyen:Python'da dinamik olarak bir lambda işlevi oluşturun
xi + Xı + 1 + xi + 3 = 1
olan değişken sayısı bileşenlerin sayısına bağlı olacaktır.
f = lambda x: x[0] + x[1] - 1
3 için: fonksiyon argüman içinde bir dizi denecek
f = lambda x: x[0] + x[1] + x[2] - 1
I bileşenleri belirtmek:
def my_func(components):
for component in components:
.....
.....
return f
Örneğin, eğer 2 bileşenden Bunu yapmanın bir yolunu bulamıyorum. Bu fonksiyonu olarak bu şekilde yapabilmek için var, diğer fonksiyonlar nsolve birlikte çözülmesi gereken:
x0 = scipy.optimize.fsolve(f, [0, 0, 0, 0 ....])
Herhangi bir yardım
Teşekkür mutluluk duyacağız!
ben tamamen benim yapmaya çalıştığım şey bu açıklayacağız bunu yapmanın en iyi yolu olan emin değilim beri:
-Ben daha sonra olmasını iki işlevi oluşturmak için çalışıyor nsolved:
bu yüzden bir işlev Teste oluşturmak istiyorum ([bileşenlerin listesi]) beni dönebilmek Bu iki denklem (Psat (T), bileşene bağlı olarak çağırabileceğim bir işlevdir ve P bir sabittir (değer = 760)).
Örnek:
teste(['Benzene','Toluene'])
döndürür:
xBenzene + xToluene = 1
xBenzene psát ('Benzen') + xToluene psát ('Toluen') = 760
numaralı telefon numarası:
teste(['Benzene','Toluene','Cumene'])
bu döndürür:
xBenzene + xToluene + xCumene = 1
xBenzene psát ('Benzen') + xToluene psát ('Toluen') + xCumene * psát ('Kümen') = 760
Tüm bu x değerleri, hesaplayabileceğim ve özetleyebileceğim bir listeye dönüşen bir şey değildir. Onlar sistemde sahip olduğum bileşenlerin bir fonksiyonu olarak yaratılan değişkenlerdir ...
f = lambda *x: sum(x) - 1
Ama bu gerçekten istediğiniz buysa emin değil:
Umut bu olurdu bu
Bir lambda kullanmayın? – Ryan
Bu bir [XY problemi] gibi kokuyor (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Tam olarak ne yapmaya çalışıyorsunuz, bu, lambda işlevini dinamik olarak oluşturmanın cevabın bir parçası olduğunu veya sadece yinelemek yerine bileşenlerin sayısını değiştirmenin cevabın bir parçası olduğunu düşünmenizi sağlar? Muhtemelen bunu yapmanın daha iyi bir yolu vardır. – abarnert
Ayrıca, bu tür soruları soran birçok kişi, lambda işlevleri hakkında özel bir şey olduğunu düşünmektedir. Yok. "Lambda işlevi" diye bir şey bile yoktur. Bir fonksiyon, 'lambda' veya 'def' tarafından tanımlanan bir işlevdir. – abarnert