2014-04-24 2 views
0

x가 1이 될 때 한계를 찾으려는 행렬 값 함수가 있습니다.Matlab에서 행렬 값 함수를 추정하는 방법은 무엇입니까?

따라서이 예제에서는 세 개의 행렬 v1-3이 있는데, [0.85, 0.9, 0.99]. 지금 내가하는 일은 다음과 같습니다.

for i=1:101 
for j = 1:160 
    v_splined = spline([0.85,0.9,0.99], [v1(i,j), v2(i,j), v3(i,j)], [1]); 
end 
end 

더 효율적인 방법이 있어야합니다. 특히 곧 충분히 빨리 v가 4-5 차원 벡터가 될 상황에 직면하게 될 것입니다.

감사합니다.

답변

0

면책 조항 : 순진의 외삽이 위험한 사업이다, 당신의 자신의 위험

에서 그렇게 여기 위험한 사업이며, 일반적으로 권장되지 내가 추정하는 스플라인을 사용하여

  1. 을 말할거야. x = 1 근처에서 함수의 동작에 대해 아는 것이 있습니까?
  2. 3 점만있는 경우 3 점을 통해 스플라인을 피팅하는 것보다 2 차 다항식 (포물선)을 사용하는 것이 더 나을 것입니다. (그렇지 않으면 좋은 이유가없는 한).
  3. 포물선 (또는 더 많은 점을 가질 때보다 높은 보간 다항식)을 사용하려면 코드를 벡터화하고 Lagrange 또는 Newton 다항식을 사용하여 아마도 당신에게 좋은 속도를 줄 것입니다 외삽.
  4. 보간 다항식을 사용하면 더 많은 점을 가진 고차 다항식에 쉽게 일반화됩니다. 그러나 고차 보간 다항식은 도메인 끝 부분에서 심하게 진동하는 경향이 있기 때문에 외삽 법을 훨씬 더 위험하게 만듭니다.

당신이 포물선을 형성 라그랑주 다항식을 사용하려면이, 당신의 결과가 주어진다 :

v_splined = v1*(1-.9)*(1-.99)/((.85-.9)*(.85-.99)) ... 
      +v2*(1-.85)*(1-.99)/((.9-.85)*(.9-.99)) ... 
      +v3*(1-.85)*(1-.9)/((.99-.85)*(.99-.9)); 

내가 왼쪽이, - 유엔 단순화는 라그랑주 다항식에서 제공하는 방법을 볼 수 있지만, 명백하게 단순화하는 것이 쉽습니다. 또한 이것은 루프의 필요성을 제거합니다.

+0

안녕하세요 덕, thnx 도움. 다음은 귀하의 질문에 대한 답변입니다 : –

+0

다음은 질문에 대한 답변입니다. (1) x = 1 근처에서 NLS (2)의 단 하나 솔루션이므로 행렬의 값 중 일부가 무한대 (수학적으로 말하면) 나는 왜 포물선으로의 외삽을 "강요"못하는지입니다. 더 많은 포인트를 생성 할 수 있지만 0.995보다 작을 것입니다. 여기서 시뮬레이션은 이미 중단되어 있습니다. –

+0

포물선을 사용하지 않더라도 스플라인 함수는 3 차 다항식을 "강제"합니다. 또한 x = 1에서 더 많은 점을 추가하면 x = 1 근처의 스플라인 동작에 상대적으로 거의 영향을주지 않으며 외삽 법은 1에 가장 가까운 세 점과 선택한 경계 조건 (예 : 자연스러운, 매듭, 처진 경사). x = 1 근처의 기능적 행동에 대한 어떤 지식이 없으면 무엇을 제안해야할지 모르겠습니다. –

관련 문제