Je prends un cours de calcul numérique et nous n'avons pas besoin de connaître la programmation de scilab, sauf la très basique, qui est enseignée dans un livret, puisque la classe est principalement théorique. Je lisais le livret et j'ai trouvé ce code Scilab destiné à trouver la racine d'une fonction par la méthode de la bissection. Le problème est, je ne peux pas trouver un moyen de le faire fonctionner. J'ai essayé de l'appeler avec bissecao(x,-1,1,0.1,40)
mais cela n'a pas fonctionné. L'erreur que je suis arrivé était:Questions de base sur scilab
at line 3 of function bissecao (E:\Downloads\bisseccao3.sce line 3)
Invalid index.
Comme je doute fortement que le code lui-même ne fonctionne pas, et j'ai essayé de chercher tout ce que je pouvais apercevoir qui semblait mal, en vain, je suppose que je suis probablement l'appeler mal, en quelque sorte.
Le code est le suivant:
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
où f est une fonction (je suppose), a et b sont les limites de l'intervalle dans lequel nous serons itération, TOL est la tolérance à laquelle la le programme se termine près d'un zéro, et N est le nombre maximum d'itérations.
Toute aide sur la façon de faire cette course est grandement appréciée.
Votre journal d'erreur ne correspond pas à moi: l'appel de '' bissecao' impliquent x' comme premier paramètre, non défini dans votre question.Veuillez le définir clairement: vouliez-vous dire la fonction d'identité? – PTRK