2013-12-16 2 views
0

이진 메서드에 대한 프로그램을 작성하려고하지만 함수를 올바르게 정의하고 스크립트를 실행하는 방법을 완전히 이해하지 못하고 있습니다. Google 검색 및 유튜브 비디오 및 MATLAB 튜토리얼을이 제품에서 보았습니다.하지만 이해가 가지 않습니다.MATLAB - 함수를 올바르게 정의하고 스크립트를 실행 중입니다.

function [f] = Bisection(a,b,Nmax,TOL) 
f(x)= x^3 - x^2 + x; 
i=1; 
BisectA=f(a); 
while i <= Nmax 
    p=a+(b-a)/2; 
    BisectP=f(p); 
    if BisectP == 0 || (b-a)/2 < TOL   
     disp('p'); 
    end 
    i=i+1; 
    if BisectA*BisectP > 0 
     a=p; 
     BisectA=BisectP; 
    else 
     b=p; 
    end 
end 
disp('Method failed after num2str(Nmax) iterations, Nmax=', Nmax); 

때 I을 :

코드 ... 난 내 코드를 제시하면 여기에 누군가가 나를 도울 수 있기를 바랍니다, 나는뿐만 아니라 무엇입니까 오류 메시지는 내가 볼 것으로 예상해야하는지 내가가 'X'를 정의하는 방법을 을 알아낼 수 없습니까

??? Undefined function or variable 'x'. 
Error in ==> Bisection at 2 
f(x)= x^3 - x^2 + x; 

?? :이 코드를 실행, 나는 오류 메시지가 또한 하나 이상의 함수를 만들어야합니까? 나는 그들 모두를 하나의 파일로 갖고 싶습니다.

감사합니다.

답변

1

x이 실제로 정의되지 않았기 때문에 오류가 발생합니다. you'r 인수로 x를 취하는 anonymous function을 만들려고하면이 같은 것을 할 거라고 : 당신이 나중에처럼

f = @(x)x.^3-x.^2+x; 

은 그럼 당신은 f(a)를 호출 할 수 있습니다. 또 다른 잠재적 인 문제는 Bisection 함수가 f을 반환한다는 것입니다. 함수 핸들을 반환 하시겠습니까?

+0

로 주요 기능을 정의합니다. 내 함수가 f.h를 반환하지 않겠다고 제안 하시겠습니까? – Anonymous

0
f = @(x)(x.^3 - x.^2 + x); 

는 내가 어떤 기능 핸들 수단을 이해 확실하지 않다

function [f0] = Bisection(@f,a,b,Nmax,TOL) 
관련 문제