循环并不终止它继续下去

1视图(30天)
马哈茂德·Chawki
马哈茂德·Chawki 2023年5月20日
回答: 艾伦 2023年5月20日
明确的变量
关闭所有
clc
= (1 1 2;1 2 4;1 2 5];
x = [1;2;3);
错误= 0.000001;
Diff = 1(大小(x));
iterCount = 0;
虽然Diff >错误
x1 = (A * x);
Diff =规范(abs (x1 x));
x = x1. / (x1 (1,1));
iterCount = iterCount + 1;
结束
1评论
图像分析
图像分析 2023年5月20日
你不需要我们来调试代码。这需要太长时间。你能做到自己一旦你采取这个简短的培训:

登录置评。

答案(1)

艾伦
艾伦 2023年5月20日
目前尚不清楚为什么你初始化 Diff 作为一个向量谁大小等于 x 。你第一次计算后 Diff 使用 规范 函数,它变成了一个标量值谁大小是一个元素。同时, Diff 收敛于18.6918在大约六个迭代和假设值低于你所定义的 错误 变量。假设你正试图确定当Diff迭代之间的差异小于误差,尝试一些类似如下。同时,安全的做法是在while循环添加一个额外的休息,比如最大迭代次数(下面)或失效时间超过一个定义的限制。
= (1 1 2;1 2 4;1 2 5];
x = [1;2;3);
Diff = 1;
prevDiff = 0;
错误= 1 e-6;
iterCount = 0;
麦克斯特= 1 e5;
iterCount <麦克斯特& & abs (Diff-prevDiff) >错误
x1 = (A * x);
prevDiff = Diff;
Diff =规范(abs (x1 x));
x = x1. / (x1 (1,1));
iterCount = iterCount + 1;
结束

类别

找到更多的在循环和条件语句帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!