2016-01-30 4 views
-1

Я пытаюсь написать сценарий в matlab, который использует метод биссекции, чтобы найти 0 точку функции. Когда я запускаю код, я получаю ошибку «Недостаточно входных аргументов»Ошибка Matlab, метод деления пополам

е является функцией ввода, является нижним пределом и Ь есть верхний предел

function bisection(f,a,b) 
    if f(a)*f(b)<0 
    for i=1:100 
     c=(a+b)/2; 
     if f(c)>0 
      b=c; 
     else 
      a=c; 
     end 
    end 
    end 
    c 
    f(c) 
+0

Какие аргументы ввода вы используете и как вы называете эту функцию? – Daniel

+0

Я сделал функцию f3 (x^2-5x + 1), поэтому мой вход был делением пополам (f3,0,100) – mark

+0

Вы пытаетесь определить 'bisection'? Где ваши выходные аргументы? –

ответ

0
bisection(@f3,0,100) 

Называйте это с a function handle, оператор @.

f3 = @(x)(x^2-5x+1); 
a=0; 
b=100; 
bisection(@f3,a,b) 
+0

Благодарим вас за ответ. Если я попытаюсь определить функцию с помощью дескриптора, я получаю сообщение об ошибке «Неожиданное выражение MATLAB», если я попытаюсь запустить его по вашему предложению в верхней строке. Я получаю сообщение об ошибке «Неопределенная функция или переменная» c « – mark

+0

любая идея, как я могу исправить это? – mark

+0

@mark Является ли 'f (a) * f (b) <0'? Если нет, то вы никогда не будете ударять по циклу' for' и никогда не будете присваивать значение 'c'. почему 'c' не определено. – beaker

Смежные вопросы