我正在针对问题的根源进行割线处理。
我的问题: 我正在使用While,因此该过程不会进行x次迭代,而在while循环中,我使用了if条件,当满足条件时,它将返回根值(p)。 如果没有更新,它将返回“找不到根,超过了迭代次数”。 事实是,我正在找到一个根,但我还返回了“ No root”消息。
例如,我运行脚本,然后得到: 无根 无根 无根 根:[Number]
目标: 仅返回根目录一次,否则仅返回一条消息“ No root”
试图在if条件内添加一个新的变量“ root”,以便在满足条件时该值现在是一个新变量。
我不知道可能是由于这个原因。
**While** i<=iter
p=p1-q1*((p1-p0)/(q1-q0));
**if** abs(p-p1)<tol
root=p;
disp('root:')
disp(root)
return
**endif**
i=i+1;
p0=p1
q0=q1
p1=p
q1=f(p);
disp("no root")
**endwhile**
我需要输入以下两个信息之一,即“ No root”消息或root:[Number]
当时我同时收到两条消息。
谢谢
答案 0 :(得分:2)
您需要将显示内容移出循环,并从循环中移出break
,而不是return
。
root = nan; % preallocate as if there is no root
while i<=iter
p=p1-q1*((p1-p0)/(q1-q0));
if abs(p-p1)<tol
root=p;
break
end
i=i+1;
p0=p1
q0=q1
p1=p
q1=f(p);
end
if isnan(root)
disp("no root")
else
disp('root:')
disp(root)
end