2016-09-29 3 views
1

저는 C++의 방정식 시스템을 풀고 싶습니다. 해결사를 제공하는 도구/패키지가 있습니까? 내 시스템은 다음과 같습니다.C++을 사용하여 비선형 방정식 시스템을 해결합니다.

(x-a)^2 + (y-b)^2 = d1 
(x-c)^2 + (y-d)^2 = d2 

이 경우 나는 a, .., d, d1, d2를 알고 있습니다.

저는 (a, b, d = 0, c는 0이 아닌) 특별한 경우를 알고 있지만 모든 경우에 해답을 원합니다.

아무 생각 없습니까?

+0

'blas' 또는'lapack' ... – malat

+0

C++에서 ^는 제곱 연산자이며 제곱 연산자가 아닙니다. –

+0

@StackDanny'^'는 (우선 순위는 낮지 만) 오버로드 될 수 있습니다. 그는 작업 순서에 중괄호를 사용하고 있지만, 포장해야하므로'((x-a)^2) + ((y-b)^2) = d1'처럼 보입니다. – George

답변

2

비선형 방정식을 풀기위한 일반적인 지원이 필요하면 Ceres, PetSC, dlib 모두 C++에서 설명하는 문제를 해결할 수있는 비선형 해법을 사용합니다. 비록 당신이 훨씬 더 Matlab 에서이 유형의 작품이나 심지어 파이썬의 scipy에 대한 더 나은 지원을 찾을 가능성이 높습니다. 특히 성능에 정말로 관심이 없으며 소규모 방정식 만 쉽게 풀어야합니다. 필요한 모든 사용자가 등록한 시스템을 해결하는 경우

는 단순한 폐쇄 형 해결책이 : EQ1에서

  1. 빼기 EQ2 및 [S1]
  2. 대체품 X를, X = F (y)를 표현 식 중 하나로 F (Y)와
  3. 대체품 Y 다시 Y에 대한 해결로 [S1] × I는 "수치 조리법 '을 읽어 제안
+0

http://ab-initio.mit.edu/wiki/index.php/NLopt –

2

를 찾는. 이 책에는 방정식 풀이에 대한 장이 있으며, 서문은 일반적으로 모든 주제에 대해 간단한 용어로 매우 잘 보입니다. 수치 적으로 방정식을 풀면 많은 세부 정보를 얻을 수 있으며 세부 정보를 처리하지 않고도 모든 패키지를 사용하면 문제가 발생할 수 있습니다 (또는 느려지거나 불충분 할 수 있음).