循环并不终止它继续下去
1视图(30天)
显示旧的评论
明确的变量
关闭所有
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日
目前尚不清楚为什么你初始化
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;
结束