2014-01-13 2 views
1

저는 비선형 방정식 시스템을 풀기 위해 MATLAB의 fsolve 함수를 사용하고 있습니다. 두 변수가있는 두 개의 비선형 방정식이 있습니다. (x,y);Matlab : Fsolve 함수와 모든 가능한 루트

두 변수의 가능한 모든 근원을 찾으려고합니다. 나는 fsolve이 하나의 루트만을 제공한다고 언급했다. 방정식에 대해 모든 뿌리를 얻는 방법은 무엇입니까? 다음과 같이

내 코드 :

function F = fun(guess) 
    x = guess(1); 
    y = guess(2); 

    F = [2*x -y - exp(-x)); 
     -x + 2*y - exp(-y) ]; 
end 

호출 기능 : 당신이 더 검색 할 필요가 없습니다

guess = [-5 -5] 
fsolve(@fun,guess); 
+1

[이 질문 (http://stackoverflow.com/questions/16809744/equivalent-to-roots-for-non-polynomials-in-matlab)을 확인하십시오. 제 2 입력 변수와 제 3 입력 변수를 변경하여 [Rody 's answer] (http://stackoverflow.com/a/16809955/2338750)를 수정할 수 있다고 생각합니다. –

답변

0

, 단 하나의 루트가 있다는 것을 증명한다. 제 식

, 제 방정식

-x + 2·y - exp(-y) = 0 
⇒ x = 2·y - exp(-y) 

대체 x : y 만의 함수

2·x - y - exp(-x) = 0 
⇒ 2·(2y-exp(-y)) - y - exp(-(2y-exp(-y)) = 0 

. 표준 계산법은이 수치가 단조롭게 증가하고 f(y)이 음수로 시작하고 y=-∞에서 음수를 나타내며 양수가 y=+∞임을 나타냅니다. 그 결과는 대체 방법을 사용할 때와 같습니다. 이것은 두 방정식에 단 하나의 동시 루트가 있음을 의미합니다.

QED.

+0

이것은 단지 예입니다 ... 나는 8 번과 6 번을 가진 두 개의 비선형 방정식을 다루고 있습니다 ... 두 방정식은 복잡하기 때문에 쓰지 않았습니다. 어쨌든; 내 질문은 : 가능한 모든 비선형 방정식의 뿌리를 찾으려면 fsolve 사용할 수 있습니까!. 그리고 그렇지 않다면; 그러한 비선형 방정식을 풀 수있는 대체 방법은 무엇입니까? – CS2013

+1

@ CS2013 : 그렇다면 미래에 더미 방정식을 사용한다는 의견도 포함 시키십시오.당신은 * 당신의 문제였습니다. –

+0

@ CS2013 : 어쨌든 방정식이 2 개 밖에없는 경우에도 유사한 것을 할 수 있습니다 (기호 형 수학 도구 상자를 사용하기 시작할지라도). 1 방정식을 다른 방정식으로 풀면 그 함수의 근원을 찾을 수 있습니다. 다른 방법으로도 해보십시오. 두 가지 공통점은 답입니다. –

0

fsolve는 글로벌 해석자가 아닙니다. 글로벌 알고리즘 (예 : 유전자 알고리즘 및 시뮬레이트 된 어닐링)이 있지만 반환 된 솔루션이 모든 최소화 도구를 포함한다는 것을 보장하기 위해 무한한 시간 동안 실행해야합니다. 한편, 다른 모든 최적화 솔버는 로컬이므로 로컬 최소화 도구가 반환된다는 것을 보증합니다.

또한 반환 된 솔루션이 전역 또는 로컬 최소화 도구인지 여부를 알지 못하고 일반적으로 문제가있는 루트의 수를 결정할 방법이 없습니다. 따라서 기본적으로 잘 알려진 2 가지 경우를 제외하고 원하는 것을 수행 할 방법이 없습니다.

1) 문제가 볼록하면 전역 최소화 도구가없는 로컬 최소화 도구가 없습니다. fsolve가 반환 한 모든 것이 전역 최소화 기가됩니다. 또한이 최소화 기는 거의 항상 고유합니다. 예외적으로 기술적으로는 무한한 수의 솔루션이 존재할 수 있지만 모두 특정 비행기와 같이 연결됩니다. 연결되지 않은 한정된 개수의 구별되는 최소화 기가 존재할 수 없습니다.

2) 다항식은 우리가 유일하게 결정할 수있는 뚜렷한 수의 뿌리를 가지고 있습니다.

관련 문제