2017-09-19 1 views
0

나는 수치적인 미적분 수업을 듣고 있으며, 대부분이 이론적이기 때문에 소책자를 통해 배운 매우 기본적인 것을 제외한 모든 Scilab 프로그래밍을 알 필요가 없습니다. 나는 소책자를 읽고 있었고이 실례 코드는 절개 방법을 통해 기능의 근원을 찾는 것을 발견했습니다. 문제는 작동하도록 만드는 방법을 찾을 수 없다는 것입니다. 나는 bissecao(x,-1,1,0.1,40)으로 전화를 걸려고했으나 작동하지 않았습니다. 내가 가진 오류가 있었다 : 내가보기 엔 코드 자체가 작동하지 않는 것을 의심으로Scilab에 대한 기본적인 질문

at line  3 of function bissecao (E:\Downloads\bisseccao3.sce line 3) 

Invalid index. 

, 나는 아무 소용이 잘못 보였다 내가 발견 할 수 무엇을 검색했는데, 나는 아마 나는 것 같아요 어떻게 든 그것을 잘못하고있다.

코드는 다음

function p = bissecao(f, a, b, TOL, N) 
i = 1 
fa = f(a) 
while (i <= N) 
    //iteraction of the bissection 
    p = a + (b-a)/2 
    fp = f(p) 
    //stop condition 
    if ((fp == 0) | ((b-a)/2 < TOL)) then 
    return p 
    end 
    //bissects the interval 
    i = i+1 
    if (fa * fp > 0) then 
    a = p 
    fa = fp 
    else 
    b = p 
    end 
    end 
error ('Max number iter. exceded!') 
endfunction 
f는 함수 (I 추측), A 및 B는 우리가 순회 될 것이다 간격의 한계이다이다

는 TOL이 허용되는 상기 프로그램은 0에 가깝게 끝나고, N은 iteraction의 최대 수입니다.

이 실행 방법에 대한 도움을 주시면 감사하겠습니다.

+0

귀하의 오류 로그 내 일치하지 않습니다 '의 전화는'당신의 질문에 정의되지 않은 첫 번째 매개 변수로 x'을 포함 bissecao'.명확하게 정의하십시오 : 신원 기능을 의미 했습니까? – PTRK

답변

1

당신의 bissecao 기능을 가진 유일한 오류가 return에 대한 호출입니다 bissecao

에 오류 : 함수의 실행을 중지 return 함수에서

, [x1,..,xn]=return(a1,..,an) 함수의 실행을 중지가와 로컬 변수 ai을 호출 환경에 xi 이름으로 지정합니다.

따라서 인수없이 (출력을 입력하여) 함수를 종료하고 p를 반환해야합니다. y1 = return(p)으로 전화하면 기능이 종료되고 py1에 저장됩니다.

부모/호출 스크립트/함수 (가능한 부작용)의 변수 값을 변경하지 않으려면 함수에 return 형식이 아닌 인수를 사용하는 것이 좋습니다. 대화식 pause 디버깅시

인수 형태는 더 유용 일시 정지 모드에서

, 그것은 낮은 수준으로 복귀 할 수있다. [x1,..,xn]=return(a1,..,an)은 하위 레벨로 돌아가서 변수 ai을 호출 환경에 xi이라는 이름으로 지정합니다.

문제 bissecao 호출에

오류가 귀하의 호출에 의해 올 수 있습니다 : bissecao(x,-1,1,0.1,40) 당신이 x을 정의하지 않았기 때문에. 그냥 함수를 만들어이 문제를 해결하면 문제를 해결할 수 :

function y=x(t) 
    y=t+0.3 
enfunction 
x0=bissecao(x,-1,1,0.1,40) // changed 'return p' to 'return' 
disp(x0) // gives -0.3 as expected 

+0

'x (t)'의 정의에서'x' 대신't'를 써야하지 않습니까? – luispauloml

+0

@luispauloml 그것을 잊어 버렸습니다. 고쳤다. – PTRK

관련 문제