2013-08-29 2 views
-1

나는 다항식 y = 0.230 + -0.046*x + -0.208*x^2을가집니다. (X, Y)에서 다른 선을 자르는이 선에 대한 수직선을 계산하고 싶습니다.다항식 선에 대한 방정식을 계산하는 방법

+0

가능한 중복 [어떻게 내가 선분의 법선 벡터를 계산합니까?] (http://stackoverflow.com/questions/1243614/how-do-i-calculate-the-normal-vector-of-a 라인 세그먼트) – Schorsch

+1

또는 [Matlab의 한 점에서 법선 벡터를 찾는 방법] (http://stackoverflow.com/questions/17324936/how-to-find-the-normal- 벡터에서-A-점 - 온 - 어 - 커브 -에 - MATLAB)이 @Schorsch – Schorsch

+0

가 인정 하듯이 기본적인 수학 문제이지만, 그 링크가 완벽한 솔루션, 그것의 절반 만 ... –

답변

0
%Example data 
    x=0:0.1:10; 
    y = 0.230 + -0.046*x + -0.208*x.^2 ;  
    plot(x,y); 

%Find the tangent and normals at all points 
    dy = [0 diff(y)./diff(x)]; 
    py = -1./dy; 

%Choose a point 
    n = 60; 
    X = x(n); 
    Y = y(n); 
    hold on 
    plot(X, Y, 'or') 

%Find the equation of the straight line normal to that point. You can do this in one step (yn = py(n)*(x - X) + Y) but I've done it in two to illustrate where this comes from 
    c = Y - py(n)*X; 
    yn = py(n)*x + c; 
    plot(x, yn, 'g') 
+1

귀하의 파생 요구 사항을 제공하지 않습니다 수정 :'dx = x (2) -x (1); py = -dx./dy;' –

+1

@TheHard 고마워, 나는 그것을 고쳤다. 이제'dy'는'diff (y) ./diff (x)'를 사용하여 찾을 수 있습니다. – Dan

+0

안녕하세요. 시도해주세요. 감사합니다.이 게시물을 끝내기 위해 더 많은 질문을 드리겠습니다. xy는 <1x101 double > horizontal [link] (http://pro.ellip6.com/SebastienForum/Tab1.jpg) 그리고 나의 것은 수직입니다 [link] (http://pro.ellip6.com/SebastienForum/Tab2.jpg) 어떻게 변환합니까? 광산에서 귀하의 코드로 수정하거나 코드를 수정하십시오. 감사합니다 당신 – user2724407

1

다른 방법으로는 그리 어려운 것은 아니지만 분석 결과를 계산하는 것입니다. 는 (당신은을위한 상징적 인 도구 상자를 사용할 수 있지만, 당신의 머리에 앉아 NN 할 것) :

%Example data 
x=0:0.1:10; 
y = 0.230 + -0.046*x + -0.208*x.^2 ; 
plot(x,y); 

%Find the tangent and normals at all points (*edited*) 
slope = (-0.046 + -2*0.208*x); 
py = -1./slope;   % <-- modified from Dan's expression 
          %  to use analytical derivative 


%Choose a point 
n = 60; 
X = x(n); 
Y = y(n); 
hold on 
plot(X, Y, 'or') 

% Copying @Dan: Find the equation of the straight line normal to that point. You can do this in one step (yn = py(n)*(x - X) + Y) but I've done it in two to illustrate where this comes from 
c = Y - py(n)*X; 
yn = py(n)*x + c; 
plot(x, yn, 'g') 
axis tight equal 

당신이 정말로 직교 곡선을 가지고 있는지 axis equal 또한이 예에서는 좋은 생각이다 사용. 의

+0

덕분에 내 방정식 X가 높은 순서가 당신이 경우^3와 X^4, 나는 seconde 주문 나를 위해 잘 작동 코드를 수정하는 방법... – user2724407

+1

@ user2724407 다항식의 분석 * 미분 (기울기)을 계산하고 변수'기울기 '를 입력하여 편집 한 부분을 대신 사용해야합니다. –

+0

감사합니다. 발견 된 방정식으로 두 배의 배열에서 플롯 된 다른 곡선과 교차점을 찾고 싶습니다. – user2724407