2017-04-05 31 views
2

일부 암시 적 함수에 일부 테스트 데이터를 맞추려고합니다.암시 적 함수에 대한 FindFit - mathematica

나는 eliptical 방정식 f (x, y) = a에 몇 개의 매개 변수를 맞추고 싶습니다. 여기서 a는 알려진 변수입니다. 내 테스트 데이터와 함수는 더 복잡하지만 변수보다 많은 데이터 요소가 있습니다. 나는 f (x) = y와 같은 명시적인 형식으로 맞추고 싶지 않은 방정식을 변환 할 수 없습니다. 따라서 기본적인 아이디어를 얻기 위해 몇 가지 코드를 첨부했습니다.

Test = {{0, 1}, {0.1, 0.9}, {1.1, 0}}; 

Ftest = a*x^2 + b*y^2 

FindFit[Test, Ftest == 2, {a, b}, {x, y}]; 

그러나 이것은 오류로 이어진다 좌표의 수 (1) 2 \ 변수의 수와 동일하지 않다. >>

당신은 최소 제곱 최소화로이 문제를 제기 할 수

답변

1

:

data = {{0, 1}, {0.1, 0.9}, {1.1, 0}} 
Ftest[x_, y_] := a*x^2 + b*y^2 
fit = FindMinimum[ Total[(Ftest @@@ data - 2)^2] , {a, b}] 
ContourPlot[ (Ftest[x, y] /. fit[[2]]) == 2 , {x, 0, 1.5}, {y, 0, 
    1.5}, Epilog -> {Red, Point /@ data}] 

enter image description here

당신은 y를 위해 해결해야 할 당신이와 끝까지 맞춤 기능을 사용할 수 :

fit = NonlinearModelFit[data, Sqrt[2 - a*x^2]/Sqrt[b], {a, b}, x] 

Plot[fit[x], {x, 0, 1.2}, Epilog -> {Red, Point /@ data}, 
AspectRatio -> 1] 

enter image description here