2013-11-22 2 views
0

Interp1 (matlab의 선형 방법)에 대한 도움이 필요합니다. 문제는 다음과 같이 진행됩니다.matlab에서 선형 보간 계산시 범위 문제

나는 fx라는 함수 값을 가진 벡터를 가지고 있습니다.

f = @(xq)interp1(x, fx, xq); 
[~, x_t] = ode45(@(t,x)f(x), [0 1], 2); 

곳 값에서 온 XQ 않습니다

fx = 1.0e+03 * 

2.0500 
-0.0005 
-0.0005 
-0.0004 
-0.0003 
-0.0004 
-0.0005 
-0.0005 
-0.0006 
-0.0007 
-0.0008 
-0.0008 
-0.0009 
-0.0010 
-0.0011 
-0.0011 
-0.0012 
-0.0013 
-0.0013 
-0.0014 
-0.0015 
-0.0015 
-0.0016 
-0.0016 
-0.0017 
-0.0018 
-0.0018 
-0.0019 
-0.0019 
-0.0020 
-0.0020 
-0.0021 
-0.0022 
-0.0022 
-0.0023 
-0.0023 
-0.0024 
-0.0024 
-0.0025 
-0.0025 
-0.0026 
-0.0027 
-0.0027 
-0.0028 
-0.0028 
-0.0029 
-0.0029 
-0.0030 
-0.0030 
-0.0031 
-0.0031 
-0.0032 
-0.0032 
-0.0033 
-0.0033 
-0.0034 
-0.0034 
-0.0035 
-0.0035 
-0.0036 
-0.0036 
-0.0037 
-0.0037 
-0.0038 
-0.0038 
-0.0038 
-0.0039 
-0.0039 
-0.0040 
-0.0040 
-0.0041 
-0.0041 
-0.0042 
-0.0042 
-0.0043 
-0.0043 
-0.0043 
-0.0044 
-0.0044 
-0.0045 
-0.0045 
-0.0046 
-0.0046 
-0.0046 
-0.0047 
-0.0047 
-0.0048 
-0.0048 
-0.0048 
-0.0049 
-0.0049 
-0.0050 
-0.0050 
-0.0050 
-0.0051 
-0.0051 
-0.0051 
-0.0052 
-0.0052 
-0.0053 
-0.0053 
-0.0053 
-0.0054 
-0.0054 
-0.0054 
-0.0055 
-0.0055 
-0.0055 
-0.0056 
-0.0056 
-0.0056 
-0.0057 
-0.0057 
-0.0057 
-0.0057 
-0.0058 
-0.0058 
-0.0058 
-0.0059 
-0.0059 
-0.0059 
-0.0059 
-0.0060 
-0.0060 
-0.0060 
-0.0060 
-0.0061 
-0.0061 
-0.0061 
-0.0061 
-0.0062 
-0.0062 
-0.0062 
-0.0062 
-0.0062 
-0.0063 
-0.0063 
-0.0063 
-0.0063 
-0.0063 
-0.0063 
-0.0064 
-0.0064 
-0.0064 
-0.0064 
-0.0064 
-0.0064 
-0.0064 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0065 
-0.0064 
-0.0064 
-0.0064 
-0.0064 
-0.0064 
-0.0064 
-0.0064 
-0.0063 
-0.0063 
-0.0063 
-0.0063 
-0.0062 
-0.0062 
-0.0062 
-0.0062 
-0.0061 
-0.0061 
-0.0061 
-0.0061 
-0.0060 
-0.0060 
-0.0060 
-0.0059 
-0.0059 
-0.0059 
-0.0058 
-0.0058 
-0.0058 
-0.0057 
-0.0057 
-0.0056 
-0.0056 
-0.0055 
-0.0055 
-0.0054 
-0.0054 
-0.0053 
-0.0053 
-0.0052 
-0.0052 
-0.0051 
-0.0051 
-0.0050 
-0.0050 
-0.0049 
-0.0048 
-0.0048 
-0.0047 
-0.0047 
-0.0046 
-0.0045 
-0.0045 
-0.0044 
-0.0043 
-0.0042 
-0.0042 
-0.0041 
-0.0040 
-0.0039 
-0.0038 
-0.0038 
-0.0037 
-0.0036 
-0.0035 
-0.0034 
-0.0033 
-0.0032 
-0.0031 
-0.0030 
-0.0030 
-0.0029 
-0.0028 
-0.0027 
-0.0025 
-0.0024 
-0.0023 
-0.0022 
-0.0021 
-0.0020 
-0.0019 
-0.0018 
-0.0017 
-0.0015 
-0.0014 
-0.0013 
-0.0012 
-0.0010 
-0.0009 
-0.0008 
-0.0006 
-0.0005 
-0.0004 
-0.0002 
-0.0001 
0.0000 
0.0002 
0.0003 
0.0005 
0.0006 
0.0008 
0.0009 
0.0011 
0.0013 
0.0014 
0.0016 
0.0018 
0.0019 
0.0021 
0.0023 
0.0024 
0.0026 
0.0028 
0.0030 
0.0032 
0.0034 
0.0035 
0.0037 
0.0039 
0.0041 
0.0043 
0.0045 
0.0047 
0.0049 
0.0052 
0.0054 
0.0056 
0.0058 
0.0060 
0.0063 
0.0065 
0.0067 
0.0069 
0.0072 
0.0074 
0.0077 
0.0079 
0.0081 
0.0084 
0.0086 
0.0089 
0.0092 
0.0094 
0.0097 
0.0100 
0.0102 
0.0105 
0.0108 
0.0111 
0.0113 
0.0116 
0.0119 
0.0122 
0.0125 
0.0128 
0.0131 
0.0134 
0.0137 
0.0140 
0.0144 
0.0147 
0.0150 
0.0153 
0.0157 
0.0160 
0.0163 
0.0167 
0.0170 
0.0174 
0.0177 
0.0181 
0.0185 
0.0188 
0.0192 
0.0196 
0.0199 
0.0203 
0.0207 
0.0211 
0.0215 
0.0219 
0.0223 
0.0227 
0.0231 
0.0235 
0.0239 
0.0244 
0.0248 
0.0252 
0.0257 
0.0261 
0.0266 
0.0270 
0.0275 
0.0279 
0.0284 
0.0289 
0.0293 
0.0298 
0.0303 
0.0308 
0.0313 
0.0318 
0.0323 
0.0328 
0.0333 
0.0338 
0.0343 
0.0349 
0.0354 
0.0359 
0.0365 
0.0370 
0.0376 
0.0381 
0.0387 
0.0393 
0.0398 
0.0404 
0.0410 
0.0416 
0.0422 
0.0428 
0.0434 
0.0440 
0.0447 
0.0453 
0.0459 
0.0466 
0.0472 
0.0479 
0.0485 
0.0492 
0.0499 
0.0505 
0.0512 
0.0519 
0.0526 
0.0533 
0.0540 
0.0547 
0.0554 
0.0562 
0.0569 
0.0576 
0.0584 
0.0591 
0.0599 
0.0607 
0.0615 
0.0622 
0.0630 
0.0638 
0.0646 
0.0654 
0.0663 
0.0671 
0.0679 
0.0688 
0.0696 
0.0705 
0.0713 
0.0722 
0.0731 
0.0740 
0.0749 
0.0758 
0.0767 
0.0776 
0.0785 
0.0794 
0.0804 
0.0813 

나는 다음과 같이 보간을 계산하기에 전에 X 축

x = [0.00111:0.0111:5]; 

내가 도움을 얻었다 값이?

이 ODE를 해결 한 후 일부 NaN 값이 나타납니다. 나는 왜 그런지 이해하지 못한다. 나는 fx 값과 x 값이 정확하거나 그렇지 않을 수도 있다고 믿는다. fx의 값은 고정되어 있으므로 x의 값을 여러 번 변경했지만 어떤 모양으로도 바뀌 었습니다.

왜 NaN 값을 얻고 있으며이를 해결할 수 있습니까? 범위 밖입니까?

저는 이것이 여러분 중 많은 사람들에게 가장 흥미롭고 도전적인 질문이 아니라는 것을 알고 있습니다. 그러나 저는 정말로 도움이 될 것입니다. :)

미리 감사드립니다. 보간 함수 f에 ODE45 후

내 결과 :

x_t = 
2.0000 
1.8696 
1.7382 
1.6081 
1.4810 
1.3584 
1.2412 
1.1304 
1.0262 
0.9290 
0.8388 
0.7555 
0.6788 
0.6084 
0.5440 
0.4853 
0.4319 
0.3834 
0.3395 
0.2999 
0.2643 
0.2323 
0.2038 
0.1784 
0.1559 
0.1360 
0.1186 
0.1035 
0.0903 
0.0788 
0.0688 
0.0601 
0.0523 
0.0452 
    NaN 
    NaN 
    NaN 
    NaN 
    NaN 
    NaN 
    NaN 
    NaN 
    NaN 
    NaN 
    NaN 
    NaN 
    NaN 
    NaN 
    NaN 
    NaN 

답변

1

그래서 당신이없는이 기능 핸들 같은 보간을합니다. xq은 f 값을 보간 할 x 값입니다. 그래서 예를 들어이있는 경우 :

x = [1 2 3]; 
fx = [0 4 8]; 

다음 선형 보간법을 사용하여, x==1.5에 대한 올바른 f2 것 (즉 1.512 (x 값)의 중간이다, 그래서 그것의로 우리는 2를 얻을 수 04 (fx 값) 사이의 중간 방법)

그러나 나는 ode45를 올바르게 사용하지 않는 것으로 생각합니다. 함수를 전달할 때는 보간법이 아닌 미분 방정식이 필요합니다. 그러나 관찰의 뭉치는 D.E.가 아닙니다. D.E.에 대한 해결책이라면. 그래서 나는 당신이 당신의 문제를 다시 생각해야하고 D.E. 당신은 그것에 대해 더 많은 정보를 풀거나 다른 것을 게시하려고합니다.

+0

안녕하세요. @ 문제 해결에 도움이되는 정보가 부족하여 사과드립니다. 나는 내 문제를 더 잘 설명하려고 노력할 것이다. 내 FX는 실제로 ODE입니다. 일반적으로 우리는 x_dot = f (x)를 쓰지만, 필자의 경우에는 함수 f (x)가 명시 적이지 않다. 방금 함수 값 (fx)이 있습니다. x_dot (명시 적으로 지정됨) 및 테스트 솔루션에 대한 테스트 기능이 있습니다. 나는 metamodel (x_dot의 RHS의 근사치)을 발견했다. 이 메타 모델은 x의 ODE와 이산 함수 인 fx입니다. 질문이 명확 해지기를 바랍니다. 기꺼이 더 많은 정보가 필요합니다. –

+0

한 번만 더 : D 나는 많은 수의 점이 없으며 함수 값을 열 벡터로 제공합니다. –

+0

@SergioSarmiento 당신은 (이론적으로) 그것을 손으로 해결할 수 있습니까? 나는 그렇게 생각하지 않을 것이다. 나는 ode45에 전달하기 위해 함수형으로'f'가 필요할 것이라고 확신한다. 단지 문서의 예제를 보라. – Dan

1

나는 귀하의 첫 번째 질문에 대답 할 수 있습니다. 이것은 MATLAB 워드 프로세서에서 수행된다

VQ = interp1은 (X는 V는 XQ)의 선형 보간을 이용 특정 질의 포인트에 1-D 함수의 보간 된 값을 반환한다. 벡터 x는 샘플 포인트 인 을 포함하고, v는 대응하는 값인 v (x)를 포함한다. 벡터 xq에는 쿼리 포인트의 좌표가 포함됩니다.

'xq'의 'q'는 '쿼리'를 나타냅니다.MATLAB에 모든 함수 점 (x, f(x))을 말한 다음, 함수 일 때 x = xq 일 때 무엇이 ​​될지 물어보십시오.

그래서 핸들 함수 f은 "당신은 내게 xq를 주며, 나는 보간법을 사용할 수있는 한 최선을 다할 것입니다."라고 말합니다. interp1은 3 대신 1 개의 인수 만 필요로합니다.

두 번째 질문 (NaN)은 다음을 수행하여 T이 무엇인지 알려주실 수 있습니까?

[T, x_t] = ode45(@(t,x)f(x), [1,2], 2); 
+0

안녕하세요 @rangu 답변 해 주셔서 감사합니다. 내가 요청한 T 값을 추가했습니다. NaN이 나타나는 이유는 무엇입니까? –

+0

죄송합니다. 우리는 T가 필요 없다고 생각합니다.'f'는'x = [0.00111, 5]'범위에서만 정의되기 때문에 ode45는 그 범위를 넘어서 통합 될 수 있습니다. 죄송합니다. 지금은 더 이상 도와 드릴 수 없습니다. – rangu

0

내 문제에 대한 답변을 얻었습니다. 기능 fx (내가 말하고있는 기능도 내가 벡터가 생각이 난 함수 값을 가지고 있기 때문에입니다)는 ODE의 내 오른쪽에 단지 근사 다음과 같이이 간다 :

x_dot = f(x) 

f은 벡터 또는 스칼라 함수가 될 수 있으며 선형 또는 비선형 ODE가 될 수 있습니다.

fx is ~= f(x) %an approximation to the originally function. 

이 fx는 f(x)의 메타 모델이라고합니다. 즉, fx은 실제 모델의 단순화 된 모델입니다. 내가 fx을 보간하고 ODE 해결 될 때 이러한 이유로 :

[~, x_t] = ode45(@(t,x)f(x), [0 1], 2); 

초기 값의 따라, 일부 값은 메타 모델의 솔루션의 도메인 내에서 거짓말을하고,이 경우, 나는 진정한 가치를 얻을 것이다 x_t입니다. 일부 값이 메타 모델이 정의 된 바깥으로 이동하면 NaN이 표시됩니다. 위의 경우. 그럼에도 불구하고이 값은 메타 모델의 도메인 외부에 있지만 실제 모델의 도메인 외부는 아니므로 솔루션이 존재하지만 내 범위를 벗어 났음을 의미합니다! 내가 전에 얻은 답에 많은 감사드립니다!