등식이 있습니다

 y = a + b Exp[-x/c] data = {{462.36, 8872}, {408.18, 8780}, {374.4, 8915}, {322.8, 8937}, {274.00, 8919}, {243.03, 911‌4}, {209.32, 9277}, {178.91, 9394}, {140.71, 9508}, {113.08, 9592}}; nlm = FindFit[data, y = a + b Exp[-x/c], {{a, 100}, {b, 100}, {c, 10}}, x] Show[ ListPlot[data, PlotStyle -> {Darker@Green, PointSize[0.03]}], Plot[y/. nlm, {x, 1, 600}]] 

위는 현재 모든 것이 작동하는 방식입니다. 그리고 그래프.

업데이트

실제로 거의 모든 작업을 수행했습니다. 내가 가진 유일한 문제는 데이터의 처음 2 개 지점과 줄의 시작 부분입니다. 실제로 그려지는 것은 그래프의 y 축 이전에 시작되므로 그래프를 보면 왼쪽으로 치우쳐 있습니다. 나는 이것을 오른쪽으로 다시 옮기기 위해 어떤 가치를 변경해야할지 이해하려고 노력하고 있으며 약간 고군분투하고 있습니다. 어떤 도움을 주시면 감사하겠습니다.

FindFit 함수에 어떻게 입력 할 수 있나요?

FindFit[data, model, parms]; 

내 데이터가 있습니다.이 데이터를 modelparams에 올바르게 가져 오는 방법을 알 수 없습니다. 데이터에 대해 저에게 주어진 eqaution은 “입력 방법을 모르거나 지수 곡선이 될 것임을 보여줄 수 없습니다.

댓글

  • 좋아, 여기에 내 질문이 있습니다. ' 대부분의 모든 것이 작동하도록했습니다. 내가 문제가있는 유일한 것은 X 축이 150에서 시작하고 내 첫 번째 점이 113에 있다는 것입니다. 문제가 보이면 y 축 뒤에 플롯됩니다. 그래서 x 축을 초기화하는 방법이 있습니까?
  • 업데이트 된 질문은 제가 생각하는 플롯 범위를 설정하는 것에 관한 것입니다. 이 경우 수동으로 설정하면 가장 잘 작동합니다. PlotRange-> {{0, 800}, {8000, 11000}}을 ListPlot에 넣습니다.

답변

NonlinearModelFit를 사용하는 것이 좋습니다.

data = {{0, 10}, {1, 5}, {3, 2}, {5, 1}, {6, 0}, {7, 0}}; nlm = NonlinearModelFit[data, a + b Exp[-x/c], {a, b, c}, x] Show[Plot[nlm[x], {x, 0, 7}] ,ListPlot[data, PlotStyle -> {Darker@Green, PointSize[0.03]}] ] 

여기에 이미지 설명 입력

매개 변수를 보려면 nlm["BestFitParameters"] 가져 오기

{a-> 0.100889, b-> 9.76356, c-> 1.62293}

업데이트

@ george2079 팁으로 새 테스트 데이터를 사용하면 다음과 같은 이점이 있습니다.

data = {{462.36,8872},{408.18,8780},{374.4,8915},{322.8,8937}, {274.00,8919},{243.03,9114},{209.32,9277},{178.91,9394}, {140.71,9508},{113.08,9592}}; nlm=NonlinearModelFit[data, a + b Exp[-x /c], {{a, 100}, {b, 100}, {c, 10}},x] Show[ListPlot[data, PlotStyle -> {Darker@Green, PointSize[0.03]}] ,Plot[nlm[x],{x,1,600}] ] 

여기에 이미지 설명 입력

댓글

  • 비선형 모델을 플롯으로 가져 오는 데 문제가있어 구문 오류가 발생합니다. ListPlot이 마음에 들지 않는 부분이라고 생각합니다.
  • 문제에 샘플 데이터를 추가하여 테스트 할 수 있습니다.
  • @Bill 대신 질문을 수정합니다. usi의 ng 댓글.
  • 원래 질문에 사용하려는 데이터와 기능을 추가했습니다. 어떤 제안이라도 대단히 감사하겠습니다.
  • 잘 작동합니다. 내가 가진 유일한 문제는 실제로 라인을 표시하는 것입니다. 플롯 할 데이터를 얻지 만 실제로 곡선을 그릴 수는 없습니다. ' 내가 뭘 잘못하고 있는지 알 수 있습니다.

Answer

이 경우 FindFit 및 NonlinearModelFit은 잘 맞으면 매개 변수에 대한 적절한 시작 값을 제공해야합니다.

data = {{462.36, 8872}, {408.18, 8780}, {374.4, 8915}, {322.8, 8937}, {274.00, 8919}, {243.03, 9114}, {209.32, 9277}, {178.91, 9394}, {140.71, 9508}, {113.08, 9592}} FindFit[data, a + b Exp[-x /c], {a, b, c}, x] 

(* 오류 검색의 단계 크기가 허용 오차보다 작아졌습니다. .. *)

FindFit[data, a + b Exp[-x /c], {{a, 100}, {b, 100}, {c, 10}}, x] 

(* {a-> 8692.35, b-> 1910.19, c-> 161.513} *)

잘 어울립니다. 그래픽을 게시 할 수 없어서 죄송합니다.

어떻게 시작 값을 결정합니까? 나는 표현을 플로팅하고 꽤 가까워 질 때까지 손으로 상수를 가지고 놀았다. 그것이 만족스럽지 않다면 죄송합니다.하지만 mathematica가 완전 자동 방식으로 할 수있는 것 이상의 데이터 피팅에 대한 약간의 기술이 있습니다.

댓글

  • 실제로 코드를 그래프로 표시했지만 여전히 왜곡 된 그래프가 표시됩니다. 모든 아이디어.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다