C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[55493] Re:Re:Re:Re:Re:Re:Re:2차 미분을 이용하여 그래프 그리는 방법좀.
장성호 [nasilso] 2308 읽음    2008-12-19 12:17
그쪽 분야의  전문가도 아니고 , 일도 제대로 해본적이 없으니..
그냥 의견으로만 들으십시요



보간법이란

   
    여러개의 data가 있는데..
  
    특정 지점( 대게 data들의 중간에 )의 data가 없을경우

    그 지점의 값을 유추해 내는 알고리즘이라 할수 있습니다.

    님께서 제시한 값은
    x값이 없다고 했는데... 그렇다면 x값이 1씩 균등하게 증가한다고 보면...

    보간법이 적용되는 것은   0.3  , 0,7 등    data가 없는 지점의 값을 찾고자 하는것이죠


    라그랑제 , 스플라인,  뉴튼 보간법등은 ..
    
    주어진 점(데이타)를 모두 지나가는 n차의 방정식을 구해서
    특정지점( data가 없는지점)의 값을 구해주는 방법입니다.

원하는 형태의 곡선을 그리려면..
   
    ; 솔찍히 정확히 님께서 원하는 곡선의 형태가 정확히 이해를 못했습니다.

    ;  그냥 자연스러운 곡선을 원한다고 생각하겟습니다.
    ;  그러기 위해선 정확히 데이타에 근거하여 곡선을 그리면 안되구..

       데이타를 분석해서.. 적당히 빼거나 , 중간값을 추가해(선형보간) 서..
       그려야 할것입니다.
  
   1) 먼저  기존의 방식대로 차이값을 구한다음에...

   2) 적당히 데이타를 조작합니다.
       * 특정 값이 여러개가 나오면    시작할때 1개  ,  끝날때 1개를  남기고 중간엔 빼버립니다.
       * 그리고 값이 급격히 변하면   적당히 중간값을 몇개 넣어줍니다.

   3) 그리고 보간법을 적용해서 그려봅니다.
       인터넷에서 보간법을 검색해보세요
       생각건데 님께서 원하시는것은 베지어 곡선에 가깝지 않나 하는 생각이 듭니다.

       참조

       베지어 스플라인 http://blog.naver.com/daroobil?Redirect=Log&logNo=58151178
                                http://www.gamedev.net/reference/articles/article888.asp

                                http://blog.naver.com/ivory82?Redirect=Log&logNo=40021101433

       라그랑제 http://blog.naver.com/duru1024?Redirect=Log&logNo=70038308328

       3차 스플라인  http://blog.naver.com/duru1024?Redirect=Log&logNo=70038335230
       상차분           http://blog.naver.com/duru1024?Redirect=Log&logNo=70038335209

       뉴튼               http://blog.naver.com/y12133?Redirect=Log&logNo=120029451723

             



   

김정모 님이 쓰신 글 :
: ㅠㅠ 위에 글에도 올렸듯이 X(n+1) - X(n)은 항상 1입니다.
: 그렇다보니 Y(n+1) - Y(n)값만 입력이 된겁니다. 당연히 소숫점은 있을래야 있을수 없는 상황입니다.
:
:
: 크레브 님이 쓰신 글 :
: : 제 생각엔 엑셀에서 기울기 그래프는 제대로 나온것 같은데
: : 엑셀에 입력하신 값이 정수형이라 그런것 같습니다.
: : 소숫점 아래자리까 정확한 값을 입력하시면
: : 기울기 그래프가 좀 부드러운 곡선이 될듯하네요
: :
: :
: : 김정모 님이 쓰신 글 :
: : : 감사합니다. 성호님 알려주신덕에 이제 개념은 잡았습니다.
: : : 그런데 아직도 문제가 해결되지는 않더군요
: : : 죄송하지만 다시 한번 여쭤보겠습니다.
: : : 제가 말씀 드렸듯이 X축값은 없습니다.
: : : 무조건 처음 들어오는 데이터부터 1,2,3,4,5....
: : : 이런식으로 늘어납니다.
: : : 그러니까 아래 기울기 구하는 공식에서 X(n+1) - X(n)은 항상 1이 되겠죠
: : : 그럼 Y(n+1) - y(n)을 구하는것만 가능한데
: : : 어쨌거나 기울기값은 Y값으로 구해집니다.
: : : 그런데 생각대로 그려지지는 않더군요
: : : 제가 올려드린 그래프의 실제 데이터를
: : : 엑셀로 입력해서 챠트를 그려봤습니다.
: : : 첨부파일로 올려드리는 파일을 열어보시면 첫번째가 그래프 A열 데이터로
: : : 그린겁니다. 순수한 들어오는 값 그대로 그린겁니다.
: : : B열 데이터는 성호님 말씀 공식대로 기울기 값을 엑셀에서 계산해서
: : : 넣은 겁니다. 이걸로 그린 챠트는 두번째 입니다.
: : : 보시면 아시겠지만 챠트가 이상합니다.
: : : 마지막으로 세번째 챠트는 구해진 기울기 값을 다시한번 또 기울기를 구해서
: : : 그려봤습니다.
: : : 역시나 이상합니다.
: : : 어째서 그런걸까요?
: : : 다시한번 부탁 드립니다.
: : : 자꾸 귀찮게 해드려서 죄송합니다.
: : :
: : :
: : :
: : :
: : : 장성호 님이 쓰신 글 :
: : : : 일정한 시간 간격에 , 데이터가 충분하다면 그렇게 하는게 훨씬 좋을것 같네요
: : : :
: : : : 다음과 같이 연속적으로 데이타가 들어온다고 가장하고
: : : :
: : : : ......      {X(n-1) , Y(n-1)}     ,   {X(n) , Y(n) }  , {  X(n+1) , Y(n+1) } ....
: : : :
: : : :
: : : : X(n) 과 X(n+1) 사이의 기울기는?
: : : :
: : : :                             Y(n+1) - Y(n)
: : : : 기울기  A(n)  =   ----------------
: : : :                              X(n+1) - X(n)
: : : :
: : : :
: : : : 미분 좌표값은 =    {   X(n) + ( X(n+1) - X(n) ) / 2   ,   A(n)   }
: : : :
: : : :
: : : : 뭐 저런식으로 값을 구해서 선을 그리면...  계산 간단하고 ... 좋을것 같네요
: : : :
: : : : .......
: : : :
: : : : 김동욱 님이 쓰신 글 :
: : : : : 데이터 양이 충분하다면 굳이 보간법을 쓸 필요가 없을듯 한데요 ^^;
: : : : :
: : : : : 시간에 따라 지속적으로 처리해줘야 한다면 보간법은 사족일듯 싶습니다.
: : : : :
: : : : : 시간 간격이 일정하다면 간단하게 빼기를 하면 미분이 되니까요 ㅋㅋ
: : : : :
: : : : : f(n + 1) - f(n)   <= 이거면 충분할것 같은데요.
: : : : :
: : : : : 정확한 값을 원한다면 시간도 고려해야겠지만 그래프만 그린다면 간단하게 하는것이 좋겠군요
: : : : : 
: : : : : 장성호 님이 쓰신 글 :
: : : : : : 이건 순전히 제 생각입니다.
: : : : : : 관련 일이나 전공지식도 없으니 참조만 하세요
: : : : : :
: : : : : :
: : : : : :
: : : : : : 음 들어오는 데이타는 이산이잖아요
: : : : : : 그걸 직선으로 연결해도 연결되는 지점에서 각도가 팍 꺽기나까 .. 미분가능한 곡선이 안되겠죠?
: : : : : :
: : : : : : 즉 먼저 들어오는 데이타를 받아서 그걸 미분가능한 방정식으로 만들어야 할것 같습니다.
: : : : : : 이때 보간법이라는걸 사용합니다.
: : : : : :
: : : : : : 보간법에는 여러가지가 있는데...
: : : : : :
: : : : : : 점과 점을 직선으로 연결하는것은 선형보간 ==> 근데 이건 모든x 값에 대해 미분은 불가능하구..
: : : : : :
: : : : : : 그밖에  라그랑제 , 뉴튼 , 스플라인 등의 보간 법이 있습니다.
: : : : : : 위 보간법도 여러가지로 또 나눠지구요
: : : : : : 전부다 미분가능한 것은 아닙니다
: : : : : :
: : : : : :
: : : : : : 만약 보간법으로 방정식을 구했다면...
: : : : : :
: : : : : : F(x) = aX^n + bX^(n-1) ..... + val ;
: : : : : :
: : : : : : 기울기는 한번만 미분하면 되니까..
: : : : : :
: : : : : : f'(x) = a*n*X^(n-1) ....
: : : : : :
: : : : : :
: : : : : :
: : : : : : 여튼 제말은 보간법이라는걸 적용해보시면 어떨까 하는 생각입니다.
: : : : : :
: : : : : : 그럼
: : : : : :
: : : : : :
: : : : : : 김정모 님이 쓰신 글 :
: : : : : : : 첨부된 그림중 위에 그래프처럼 데이터가 날아옵니다.
: : : : : : : 이걸 아래 그림처럼 미분해서 가속도 형태의 그래프로 표현하고자 합니다.
: : : : : : : 수학적 지식이 부족하다보니 도움이 필요합니다.
: : : : : : : 위의 그래프 데이터 형은 단순히 1차원 배열형태로 들어옵니다.
: : : : : : : 그래프를 그리는 방법은 각종 챠트 컴포넌트를 이용하던지 아님 직접 그릴 예정인데
: : : : : : : x축 값은 일정한 간격이지만 y축 값을 계산하는 방법이 궁금합니다.
: : : : : : : 부드러운 그래프 표현을 위해서는 Laplacian of Gaussian Filter를 이용하라고 하던데
: : : : : : : 구현 방법이 궁금합니다. 어떤 내용이든 관계 없습니다. 도움주시면 정말 감사하겠습니다

+ -

관련 글 리스트
55468 2차 미분을 이용하여 그래프 그리는 방법좀. 김정모 1676 2008/12/18
55470     Re:2차 미분을 이용하여 그래프 그리는 방법좀. 장성호 2340 2008/12/18
55480         Re:Re:2차 미분을 이용하여 그래프 그리는 방법좀. 김동욱 3060 2008/12/18
55481             Re:Re:Re:2차 미분을 이용하여 그래프 그리는 방법좀. 장성호 2105 2008/12/18
55488                 Re:Re:Re:Re:2차 미분을 이용하여 그래프 그리는 방법좀. 김정모 1974 2008/12/19
55489                     Re:Re:Re:Re:Re:2차 미분을 이용하여 그래프 그리는 방법좀. 크레브 4575 2008/12/19
55490                         Re:Re:Re:Re:Re:Re:2차 미분을 이용하여 그래프 그리는 방법좀. 김정모 1686 2008/12/19
55493                             Re:Re:Re:Re:Re:Re:Re:2차 미분을 이용하여 그래프 그리는 방법좀. 장성호 2308 2008/12/19
55495                                 해결했습니다. 김정모 2960 2008/12/19
55496                                     Re:해결했습니다. 장성호 2210 2008/12/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.