关于h(x)的函数没有放上去
利用这个程序算出的结果始终是右端点值(无论怎么改变右端点值都是直接输出)
请问这样是端点取值的问题还是函数有问题
你好,弦截法需要每次判断根洛在哪个区间,你这里没有判断,我给你加上了,然后b这个参数我给你去掉了,因为没必要:
function y=xjf(h, x1, x2, eps, n)
x(1)=x1;
x(2)=x2;
i=2;
while (abs (h(x(i)))>eps && i<n) %这里要换成h(x(i)),b是定值不方便,这里直接把b去掉了
x(i+1)=x(i)-h(x(i))*(x(i)-x(i-1))/(h(x(i))-h(x(i-1)));
%这里要有个判断,因为有了x(i+1),
% 把原先的区间分成了两部分即[x(i-1),x(i+1)]和[x(i+1), x(i)],根在哪个部分要根据
% h(x(i-1))、h(x(i+1))、h(x(i))之间的符号来判断
if(h(x(i+1))*h(x(i))>0)%如果根不在[x(i+1), x(i)]区间
x(i) = x(i-1);% 那么肯定在[x(i-1),x(i+1)]区间,不妨令x(i)=x(i-1),那么还是保证了根在[x(i+1), x(i)]区间
end
i=i+1;
end
y=x(i);
end
现在你可以计算啦,
有帮助还请题主给个采纳支持一下答主哦,非常感谢