MATLAB二分法求根时精度增加,无法显示结果但是仍可绘图. 5

源代码如下。在第16行把精度改为10^(-5)时,可以输出结果,也可绘图。但是为10^(-6)时,不能输出结果,但是依旧可以绘图。这是什原因?f=inline('t^3-... 源代码如下。在第16行把精度改为10^(-5)时,可以输出结果,也可绘图。但是为10^(-6)时,不能输出结果,但是依旧可以绘图。这是什原因?

f = inline ('t^3 - t^2 - t - 1', 't');
a = 1;
b = 2;
r = 0;
i = 2;
x = [1, 2];
y = [f(1), f(2)];
while i <= 20
i = i + 1;
a1 = f(a);
b1 = f(b);
t = (a + b) / 2;
c = f(t);
x = [x t];
y = [y c];
if (c == 0)|((b - a)/2 < 10^(-6))
str = sprintf('The root is P%d, %f', i, t);
disp (str)
r = 1
elseif c * b1 < 0
a = (a + b) / 2;
elseif a1 * c < 0
b = (a + b) / 2;
end
if r == 1
break;
end
end
scatter(x, y, 10, 'b', 'filled')
L = cell(1, i);
for j = 1:i
L{j} = num2str(j);
end
for j = 1:i
text(x(j) + 0.01, y(j) + 0.01, L{j});
end
展开
 我来答
中国人看好中国
2014-10-28 · TA获得超过3354个赞
知道小有建树答主
回答量:1197
采纳率:33%
帮助的人:682万
展开全部
当你将精度改为10^(-6)时,精度要求更高了,比原先的精度提高了一个数量级,按照二分法迭代求解,要迭代更多的次数才能在更加逼近解的邻域内找到一个当前误差允许的数值解,你可以在这段程序里的第19行设置断点然后步进就可以发现,i从1循环到20都没有出现(c == 0)||((b - a)/2 < 10^(-6))的情况,这个时候一种情况是你可以降低数值解的精度,比如说选择一个比10^(-6)大的值来作为精度;另一种情况是增加迭代次数,当迭代次数足够大,肯定可以找到当前误差允许的数值解

把迭代次数改为22就可以了,第八行:while i <= 20,把20改成22
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
匿名用户
2014-10-27
展开全部
没clear all吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式