То, что вы спрашивали, было очень трудно понять без некоторого базового форматирования.Это совсем не ясно: if feval(fun,xa)*feval(fun,xb)>0
.Однако обычно feval
просто вызывает функцию fun
с входными аргументами xa
в первом случае и xb
во втором.Поэтому feval(fun,xa)*feval(fun,xb)>0
просто вычисляет два фекалии, а затем умножает их, проверяя, что результат положительный.Зачем ему проверять, что xa
, xb
> 0, поскольку вы не просили Октаву сделать это?
xperiod=[xperiod;[xa,xb]];
выдаст ошибку времени выполнения.xperiod=1
.xa=2
, xb=3
, поэтому [xa,xb]
- это матрица (1x2): [2,3].Однако ;
вставляет новую строку, поэтому [xperiod;[xa,xb]];
пытается создать матрицу из двух строк, с первой строкой [1]
и второй [2,3]
.Это приведет к ошибке, поскольку в каждой строке и каждом столбце должно быть одинаковое количество элементов.