2017-12-08 2 views
0

a, b, c의 값을 찾고 싶습니다.fsolve를 사용하여 3 개의 비선형 방정식을 풀어 냄

from scipy.optimize import fsolve 
def equations(p): 
    a,b,c = p 
    return (a*np.log10([-b])+c, a*np.log10([100-b])+c-100, a*np.log10([80-b])+c-20) 

a,b,c = fsolve(equations, (1, 1, 1)) 

print(a,b,c) 
> print(a,b,c) 

오류 : : fsolve 다음 'FUNC'인수의 입출력 형상 사이의 불일치가 'equations'.Shape 될 (3)해야하지만, 그것은 (3, 1이 나에게 오류를 범).

답변

0

방정식에 대괄호 []을 사용할 수 없습니다. 그것들은 파이썬에서 특별한 의미가 있습니다. 수학 연산의 순서를 적용하려면 둥근 괄호를 사용해야합니다. 다음 코드는 오류를 없애기는하지만 fsolve이 시스템 용 솔루션으로 수렴하지 않기 때문에 더 많은 작업을해야합니다. b에 대한 초기 추측은 1이지만 다음은 log10(-b)입니다. 음수의 로그는 정의되지 않습니다.

import numpy as np 
from scipy.optimize import fsolve 
def equations(p): 
    a,b,c = p 
    return (a*np.log10(-b)+c, a*np.log10(100-b)+c-100, 
     a*np.log10(80-b)+c-20) 

a,b,c = fsolve(equations, (1, 1, 1)) 

print(a,b,c) 

시스템에 종이를 적어두면 다음 3 가지 방정식이 있습니다. 두 번째와 세 번째의 첫 번째 식에 대입

, 동시에 사실 일 수

위의 두 식으로 남겨진다. 따라서 시스템에는 아무런 대답이 없습니다.

+0

고맙습니다. 어떻게 해결할 수 있습니까? –

관련 문제