#octave #gnu
Вопрос:
Я пытаюсь написать программу для поиска root в GNU octave
%this is program to calculate root of Non linear differential eqn
display('you can change function in bsfun.m')
a=input("enter maximum valuet");
b=input("entr minimum valuet");
e=input("enter tolerencet");
if (bsfun(a)*bsfun(b)>0)
display("you have not assumed right values")
endif
while ((b-a)>e)
c=(b a)/2; %find middile point
disp c
if (bsfun(c)==0) %check middile point is the root
break
elseif (bsfun(a)*bsfun(c)<0) % Decide the side to repeat the steps
b=c;
else
a=c;
endif
end
fprintf("The root is %fn",c);
где
%bisection Function
function out = bsfun(x)
out = (x.^2) (2.1*x)-8.82;
но это не работает
Я новичок в программировании
, также есть любой способ определить определяемую пользователем функцию в первой программе(без создания отдельного файла, как в c)
Комментарии:
1. Проблема решена Поставьте abs(b-a)
2. как
a>b
,b-a
всегда отрицательно, поэтому вы должны были использоватьa-b
. Вы также должны добавить элемент управления, который действительноa>b
3. да, это была глупая ошибка