2014-05-22 3 views
0

필자는 newton 방법을 사용하여 최소한의 기능을 검색 할 수있는 코드를 작성했습니다. 나는 플로팅 결과에 약간의 문제가있다. 결과적으로 나는 연결점이 아니라는 점을 알았지 만 같은 색깔로 연결된 점의 음모를 얻고 싶습니다. 누군가 내 코드에 어떤 문제가 있다고 말할 수 있습니까?플롯을 사용하여 점을 연결하는 방법

x = [[-1;-1],[-0.8;-0.8],[-0.6;-0.6],[-0.4;-0.4],[-0.2;-0.2],[0;0],[0.2;0.2],[0.4;0.4],[0.6;0.6],[0.8;0.8],[1;1]]; 
eps = [0.1, 0.01, 0.001, 0.0001]; 

f = @(x) x(1).^2 - 2.1*x(1).^4 + (x(1).^6)/3 + x(1)*x(2) - 4*x(2).^2 + 4*x(2).^4; 

for i=1:length(x) 
% axis([0 0.001 0 100]) 
    colorVec = hsv(12); 

    hold on; 
    for e=1:length(eps) 
     %fprintf('Starting point: %2.1f, %2.1f\n', x(:,i)); 
     %fprintf('Tollerance: %1.3f\n', eps(e)); 
     [r, iters] = NewtonMethod(f, x(:,i), eps(e), 100); 
     plot(eps(e), iters, '-s', 'Color', colorVec(i,:)) 
    end 
    hold off; 

    xlabel('Tollerance') 
    ylabel('Number of iterations') 
    title('Title') 
end 

는 그림 관련 : plot

+1

현재, 각 지점에 대해 한 번 플롯을 요구하고있다. 한 줄에 속한 모든 점들을 하나의 벡터로 묶어 한 번에 그려 봅니다. – Daniel

+0

어느 지점에 연결 하시겠습니까? 같은 x와 다른 eps? 아니면 같은 eps와 다른 x? – nhowe

답변

0

가 여기에 다니엘의 코멘트 다음, 그것을 할 수있는 방법은 다음과 같습니다

x = [[-1;-1],[-0.8;-0.8],[-0.6;-0.6],[-0.4;-0.4],[-0.2;-0.2],[0;0],[0.2;0.2],[0.4;0.4], [0.6;0.6],[0.8;0.8],[1;1]]; 
eps = [0.1, 0.01, 0.001, 0.0001]; 

f = @(x) x(1).^2 - 2.1*x(1).^4 + (x(1).^6)/3 + x(1)*x(2) - 4*x(2).^2 + 4*x(2).^4; 

iters = zeros(length(x),length(eps)); 
for i=1:length(x) 
    colorVec = hsv(12); 

    hold on; 
    for e=1:length(eps) 
     %fprintf('Starting point: %2.1f, %2.1f\n', x(:,i)); 
     %fprintf('Tolerance: %1.3f\n', eps(e)); 
     [r, iters(i,e)] = NewtonMethod(f, x(:,i), eps(e), 100); 
    end 
    hold off; 

    xlabel('Tolerance') 
    ylabel('Number of iterations') 
    title('Title') 
end 
% choose one of these: 
plot(iters); 
plot(iters'); 
관련 문제