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
[55496] Re:해결했습니다.
장성호 [nasilso] 2209 읽음    2008-12-19 12:49
해결되셨다니 다행입니다.


예전에 딱 한 번  수학많이 들어가는 프로젝트 한 적 있는데

그때 이놈의 보간법 때문에 골머리 앓았었었죠

수년이 지나니  기억이 가물가물 하네요...

...


김정모 님이 쓰신 글 :
: 첨부파일로 올리는 이미지 참고하시구요.
: 우선 해결 방법은 이렇습니다.
: 이전에 올린 엑셀파일은 미분한번만 한거구요
: 미분을 한번 더해서 처리할수 있더군요
: 하지만 제가 올려드린 데이터를 X축 값을 1씩 증가하면서 계산해서는
: 안되구요
: 대략 10정도의 차이를 두고 계산했습니다.
: 물론 2차 미분할때도 마찬가지구요
: Y(n+10) - Y(n) 으로 얻어진 값을 일단 취한 다음
: 이걸 다시 같은 방법으로 2차 미분한 결과를 첨부해서 올리는 이미지에서 확인하실수 있습니다.
: 도움주신분들 정말정말 감사하구요..
: 특히 장성호님.. 감사합니다.
: 혹시 서울 홍대쪽에 오실일 있으시면 저한테 연락해주세요..
: 찐하게 밥한끼 + 알파.. 제가 쏘겠습니다.
: 감사합니다.
:
:
: 장성호 님이 쓰신 글 :
: : 그쪽 분야의  전문가도 아니고 , 일도 제대로 해본적이 없으니..
: : 그냥 의견으로만 들으십시요
: :
: :
: :
: : 보간법이란
: :
: :    
: :     여러개의 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차 미분을 이용하여 그래프 그리는 방법좀. 장성호 2339 2008/12/18
55480         Re:Re:2차 미분을 이용하여 그래프 그리는 방법좀. 김동욱 3059 2008/12/18
55481             Re:Re:Re:2차 미분을 이용하여 그래프 그리는 방법좀. 장성호 2105 2008/12/18
55488                 Re:Re:Re:Re:2차 미분을 이용하여 그래프 그리는 방법좀. 김정모 1973 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:해결했습니다. 장성호 2209 2008/12/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.