불필요한 극한값을 추가하지 않는 보간 방법

올리비에에 세르

이 질문은 절반은 프로그래밍이지만 절반은 수학입니다. 부드러운 곡선을 유지하면서 "선형 보간에 가깝게"머무르는 불필요한 극값을 추가하지 않고 곡선으로 점 집합을 보간하고 싶습니다.이 공식이 모호하다는 것을 알고 있지만 예제를 통해 더 명확하게 시작하기를 바랍니다. 다음 코드와 결과를 살펴 보겠습니다.

#! /usr/bin/python

import numpy as np
from scipy.interpolate import interp1d
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.spines['left'].set_position('zero')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position('zero')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')

list_points=[(-3,0.1),(-2,0.15),(0,4),(2,-6),(4,-2),(7,-0.15),(8,-0.1)]
(xp,yp)=zip(*list_points)
fun=interp1d(xp,yp,kind='cubic')

xc=np.linspace(min(xp),max(xp),300)

plt.plot(xp,yp,'o',color='black',ms=5)
plt.plot(xc,fun(xc))
fun2=interp1d(xp,yp,kind='linear')
plt.plot(xc,fun2(xc))

plt.show()

보간

여기서 우리는 5 개의 극값이있는 동안 두 개의 극값 (약 x ~ 0 및 x ~ 2) 만있는 보간을 예상했을 것입니다. 손으로 부드러운 곡선으로 포인트를 연결하도록 요청하면 대부분의 사람들이 그릴 것입니다. 이 목표를 달성하는 방법이 있습니까 (파이썬에서).

업데이트 : xfig에는 곡선이 지정된 지점을 정확히 통과하지 못하는 불편 함과 함께 가까운 것 ( "대략적인 스플라인 그리기"라고 함)이 있습니다. 지정된 점을 정확히 통과하는 곡선을 선호하지만 더 나은 솔루션을 모르는 사람이 있으면 xfig 방법을 환영합니다.

워렌 베 케서

정확히 같지는 않지만 (?) 귀하의 질문은 this 와 유사 하므로 동일한 답변이 유용 할 것입니다. 단조 보간기를 사용해 볼 수 있습니다. PchipInterpolator의 클래스는 (당신이 짧은 별명으로 참조 할 수있는 pchip)에서 scipy.interpolate사용할 수 있습니다. pchip포함을 사용하여 만든 곡선이있는 스크립트 버전은 다음과 같습니다 .

import numpy as np
from scipy.interpolate import interp1d, pchip
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.spines['left'].set_position('zero')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position('zero')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')

list_points = [(-3,0.1),(-2,0.15),(0,4),(2,-6),(4,-2),(7,-0.15),(8,-0.1)]
(xp,yp) = zip(*list_points)
fun = interp1d(xp,yp,kind='cubic')

xc = np.linspace(min(xp),max(xp),300)

plt.plot(xp,yp,'o',color='black',ms=5)
plt.plot(xc,fun(xc))
fun2 = interp1d(xp,yp,kind='linear')
plt.plot(xc,fun2(xc))

p = pchip(xp, yp)
plt.plot(xc, p(xc), 'r', linewidth=3, alpha=0.6)

plt.show()

생성되는 플롯은 다음과 같습니다.

  • 검은 색 점 : 원본 데이터
  • 녹색 선 : 선형 보간
  • 파란색 선 : 큐빅 스플라인 보간
  • 빨간색 선 : pchip 보간

음모

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Scipy 희소 행렬에 불필요한 0을 삽입하지 않는 방법

분류에서Dev

불필요한 업데이트를 방지하는 방법

분류에서Dev

Float는 불필요한 공간을 추가합니다.

분류에서Dev

emgu cv로 불필요한 줄을 제거하는 방법

분류에서Dev

불필요한 기록을 제거하는 방법

분류에서Dev

Linux에서 불필요한 파일을 정리하는 방법

분류에서Dev

불필요한 파일을 정리하는 방법

분류에서Dev

CSS에서 버튼 사이의 불필요한 공간을 제거하는 방법

분류에서Dev

Devise : 확인 가능한 이메일을 보내지 만 당분간 확인을 요구하지 않는 방법

분류에서Dev

불필요한 주석을 추가하지 않고 특정 완료 작업을 수행하는 방법은 무엇입니까?

분류에서Dev

불필요한 필드가있는 DTO 작성 방지

분류에서Dev

R에서 불필요한 for 루프를 피하는 방법

분류에서Dev

불필요한 수직 공간 추가

분류에서Dev

리소스 사전을 처리하여 불필요한 개체를 생성하지 않도록하는 방법

분류에서Dev

position : absolute가있는 요소 사이의 불필요한 간격

분류에서Dev

불필요한 보석을 설치하는 번 들러

분류에서Dev

Windows 7에서 불필요한 기능과 추가 기능을 제거하는 방법은 무엇입니까?

분류에서Dev

추가 후 불필요한 HTML을 제거하는 방법은 무엇입니까?

분류에서Dev

후크가있는 컴포넌트에서 불필요한 렌더링을 방지하는 방법

분류에서Dev

WITH ROLLUP으로 가져 오는 불필요한 값을 제거하고 대신 TOTAL을 추가하는 방법은 무엇입니까?

분류에서Dev

장고 형태로 불필요한 필드를 설정하는 방법

분류에서Dev

열 정렬을 유지하면서 쉘의 테이블 출력에서 불필요한 공간을 제거하는 방법은 무엇입니까?

분류에서Dev

nd 배열에서 불필요한 배열을 모두 제거하는 방법

분류에서Dev

CssLess 보간을 달성하는 더 간단한 방법

분류에서Dev

큰 구조체 간의 불필요한 복사 방지

분류에서Dev

과도한 불필요한 메모리 사용으로부터 grep을 방지하는 방법

분류에서Dev

불필요한 정보 만 반환하는 Google Sheets API

분류에서Dev

JPA-다 대다 관계를 쿼리하는 동안 불필요한 조인을 방지하는 방법

분류에서Dev

불필요한 기록을 추가하는 Ember 데이터

Related 관련 기사

  1. 1

    Scipy 희소 행렬에 불필요한 0을 삽입하지 않는 방법

  2. 2

    불필요한 업데이트를 방지하는 방법

  3. 3

    Float는 불필요한 공간을 추가합니다.

  4. 4

    emgu cv로 불필요한 줄을 제거하는 방법

  5. 5

    불필요한 기록을 제거하는 방법

  6. 6

    Linux에서 불필요한 파일을 정리하는 방법

  7. 7

    불필요한 파일을 정리하는 방법

  8. 8

    CSS에서 버튼 사이의 불필요한 공간을 제거하는 방법

  9. 9

    Devise : 확인 가능한 이메일을 보내지 만 당분간 확인을 요구하지 않는 방법

  10. 10

    불필요한 주석을 추가하지 않고 특정 완료 작업을 수행하는 방법은 무엇입니까?

  11. 11

    불필요한 필드가있는 DTO 작성 방지

  12. 12

    R에서 불필요한 for 루프를 피하는 방법

  13. 13

    불필요한 수직 공간 추가

  14. 14

    리소스 사전을 처리하여 불필요한 개체를 생성하지 않도록하는 방법

  15. 15

    position : absolute가있는 요소 사이의 불필요한 간격

  16. 16

    불필요한 보석을 설치하는 번 들러

  17. 17

    Windows 7에서 불필요한 기능과 추가 기능을 제거하는 방법은 무엇입니까?

  18. 18

    추가 후 불필요한 HTML을 제거하는 방법은 무엇입니까?

  19. 19

    후크가있는 컴포넌트에서 불필요한 렌더링을 방지하는 방법

  20. 20

    WITH ROLLUP으로 가져 오는 불필요한 값을 제거하고 대신 TOTAL을 추가하는 방법은 무엇입니까?

  21. 21

    장고 형태로 불필요한 필드를 설정하는 방법

  22. 22

    열 정렬을 유지하면서 쉘의 테이블 출력에서 불필요한 공간을 제거하는 방법은 무엇입니까?

  23. 23

    nd 배열에서 불필요한 배열을 모두 제거하는 방법

  24. 24

    CssLess 보간을 달성하는 더 간단한 방법

  25. 25

    큰 구조체 간의 불필요한 복사 방지

  26. 26

    과도한 불필요한 메모리 사용으로부터 grep을 방지하는 방법

  27. 27

    불필요한 정보 만 반환하는 Google Sheets API

  28. 28

    JPA-다 대다 관계를 쿼리하는 동안 불필요한 조인을 방지하는 방법

  29. 29

    불필요한 기록을 추가하는 Ember 데이터

뜨겁다태그

보관