Python에서 Fsolve 사용
이 기사에서는 fsolve
를 사용하여 Python에서 솔루션을 찾는 방법을 살펴봅니다. 또한 특정 종류의 결과에 도달하기 위해 언제 어떻게 사용할 수 있는지 더 잘 이해하기 위해 사용되는 시나리오와 일부 샘플 코드를 탐색할 것입니다.
fsolve
가 무엇이고 왜 사용되는지 이해하는 것으로 시작하겠습니다.
Python의 fsolve
함수
방정식은 데이터 과학의 뿌리이며 데이터 과학자, 수학자, 화학 엔지니어 및 의사가 매일 처리하는 다양한 시나리오를 이해하는 데 도움이 됩니다. 이제 컴퓨터가 우리의 일상에 와닿으면서 더 큰 규모의 방정식을 순차적으로 푸는 것이 점점 더 어려워지고 있습니다.
Python의 fsolve
를 사용하면 이러한 전문가와 다른 사람들이 Python 라이브러리가 제공하는 다양한 모듈을 사용하여 이러한 방정식을 쉽게 풀 수 있습니다. fsolve
는 본질적으로 비선형 방정식의 근을 반환하는 SciPy 모듈입니다.
다양한 시나리오에 대해 fsolve
가 제공하는 다양한 매개변수가 있습니다. 온라인에서 사용할 수 있는 SciPy 문서에서 직접 쉽게 찾을 수 있습니다.
fsolve
의 전체 매개변수 목록은 다음과 같습니다.
예제 코드:
scipy.optimize.fsolve(
func,
x0,
args=(),
fprime=None,
full_output=0,
col_deriv=0,
xtol=1.49012e-08,
maxfev=0,
band=None,
epsfcn=None,
factor=100,
diag=None,
)
SciPy 문서에서 모든 매개변수에 대한 자세한 설명과 각 매개변수에 대한 설명을 찾을 수 있습니다. 그러나 간략하지만 이해하기 쉬운 매개 변수 요약을 살펴보겠습니다.
모수 | 설명 |
---|---|
func , 호출 가능 f(x, *args) |
이것은 본질적으로 하나 이상의 벡터 인수를 취하고 인수와 동일한 길이의 값을 반환하는 함수에 대한 설명입니다. |
x0 , ndarray |
이 인수는 f(x)=0 함수의 근에 대한 초기 추정치가 무엇인지를 나타냅니다. |
args , 튜플(선택 사항) |
이들은 함수에 필요할 수 있는 추가 인수입니다. |
fprime , 호출 가능 f(x, *args) (선택 사항) |
이것은 함수의 자코비 행렬의 추정값을 행의 미분과 함께 계산하는 함수입니다. |
full_output , 부울(선택 사항) |
조건이 충족되거나 True인 경우 선택적 출력 값을 반환합니다. |
col_deriv , 부울(선택 사항) |
이 인수를 통해 Jacobian 함수가 열 아래로 도함수를 계산하는지 여부를 지정합니다. SciPy 문서에 따르면 전치 작업이 없기 때문에 더 빠릅니다. |
xtol , float(선택 사항) |
이 인수를 사용하면 함수가 두 개의 연속 반복 값 사이의 상대적 오류의 최대 xtol 을 기반으로 계산을 종료할 수 있습니다. |
maxfev , int(선택 사항) |
이는 함수에 대한 최대 호출 수를 정의합니다. |
밴드 , 튜플(선택 사항) |
fprime 이 None 으로 설정된 경우입니다. Jacobi 행렬은 인수가 행렬 내의 부대각선과 슈퍼대각선의 수를 포함하는 2-시퀀스로 설정된 경우 밴딩된 것으로 간주됩니다. |
epsfcn , float(선택 사항) |
fprime 이 None 으로 설정된 경우 이 인수에는 야코비 행렬의 순방향 차이를 근사화하는 데 적합한 단계 길이가 포함됩니다. epsfcn 이 기계 정밀도보다 작은 경우 함수의 상대 오류는 기계 정밀도 순서로 간주됩니다. |
계수 , float(선택 사항) |
이 인수는 초기 단계 범위를 결정하며 (0.1, 100) 사이여야 합니다. |
diag , 시퀀스(선택 사항) |
이러한 N-양수 항목은 변수의 배율 인수 역할을 합니다. |
fsolve
함수를 사용하여 Python에서 솔루션 찾기
지금쯤 알 수 있듯이 fsolve
는 다양한 시나리오에서 다양한 비선형 방정식에 사용할 수 있습니다. 몇 가지 간단한 코드 샘플을 살펴보고 fsolve
를 사용하는 방법을 더 잘 파악해 보겠습니다.
시작점이 -0.2인 방정식 x+2cos(x)
의 근 찾기
예제 코드:
from math import cos
import scipy.optimize
def func(x):
y = x + 2 * cos(x)
return y
y = scipy.optimize.fsolve(func, 0.2)
print(y)
이 코드에서는 Python의 방대한 math
라이브러리에서 cos
함수를 가져오고 scipy
(fsolve
의 소스)에서 optimize
를 가져옵니다. 다음으로 방정식을 정의하고 func
메서드의 y
에 저장합니다.
방정식이 올바르게 초기화된 후 fsolve
를 사용하여 방정식을 포함하는 (func)
메소드를 호출하기만 하면 됩니다. 두 번째 인수에서 방정식의 시작점을 정의합니다.
결과는 변수 y
에 저장되고 출력을 위해 인쇄됩니다.
코드 출력:
[-1.02986653]
시작점 0과 2로 방정식 풀기
예제 코드:
from math import cos
import scipy.optimize
def func(x):
y = [x[1] * x[0] - x[1] - 6, x[0] * cos(x[1]) - 3]
return y
x0 = scipy.optimize.fsolve(func, [0, 2])
print(x0)
이 코드에서는 Python의 math
및 scipy
라이브러리에서 cos
및 scipy.optimize
를 가져와 코드 1과 동일한 단계를 따릅니다. func
라는 메서드에서 방정식을 정의하여 다음 단계로 계속 진행합니다.
그런 다음 이 메서드를 fsolve
함수의 인수라고 부르고 두 개의 시작점 0과 2를 제공한 다음 x0
이라는 변수에 저장 및 인쇄합니다.
코드 출력:
[6.49943036 1.09102209]
시작점 0.3에서 방정식 4sin(y)-4
의 근 찾기
예제 코드:
from math import sin
import scipy.optimize
def func(y):
x = 4 * sin(y) - 4
return x
x = scipy.optimize.fsolve(func, 0.3)
print(x)
이 예제 코드에서는 cos
대신 math
라이브러리에서 sin
을 가져옵니다. 코드 구조는 위의 예제와 동일하게 유지되며 fsolve
에 대해 scipy.optimize
를 가져온 다음 func
메서드 내에서 방정식을 정의합니다.
fsolve
에서 시작점 0.3을 사용하여 이 메서드를 인수라고 합니다. 결과 값은 변수 x
에 저장되고 출력을 위해 인쇄됩니다.
코드 출력:
[1.57079633]
이 기사에서 우리는 fsolve
가 비선형 방정식의 근을 찾는 데 사용된다는 것과 fsolve
가 취할 수 있는 다양한 종류의 매개변수 및 각 매개변수에 대해 배웠습니다. 또한 fsolve
의 작업 예제를 살펴보고 코드에서 어떻게 사용할 수 있는지 연구했습니다.
fsolve
가 솔루션 도출에 어떻게 사용되는지에 대한 이론과 실제 코드 샘플을 살펴보았으므로 이제 fsolve
의 작업을 더 자세히 살펴보기 위해 자신만의 코드를 생성할 시간입니다.
이 기사가 fsolve
를 사용하여 Python에서 문제를 해결하는 방법을 이해하는 데 도움이 되기를 바랍니다.
My name is Abid Ullah, and I am a software engineer. I love writing articles on programming, and my favorite topics are Python, PHP, JavaScript, and Linux. I tend to provide solutions to people in programming problems through my articles. I believe that I can bring a lot to you with my skills, experience, and qualification in technical writing.
LinkedIn