Fortran Coder

标题: 迭代计算跳出条件 [打印本页]

作者: jggtgm    时间: 2023-10-27 17:23
标题: 迭代计算跳出条件
请教大佬,现在用迭代算法计算一个二维数组的值,如何设置调制循环的条件呢?条件是本次的结果和上次的结果之差小于设定的值。需要数组的每个结果都满足这个条件

作者: Transpose    时间: 2023-10-27 20:04
[Fortran] 纯文本查看 复制代码
if(all(abs(a-a_old)<eps))exit

其中all是内置函数,作用于一个逻辑型数组,如果所有元素为真则返回真,否则为假

作者: jggtgm    时间: 2023-10-30 09:54
Transpose 发表于 2023-10-27 20:04
[mw_shl_code=fortran,true]if(all(abs(a-a_old)

谢谢大佬指点。
作者: jggtgm    时间: 2023-10-30 10:43
An array-valued argument is required in this context.   [ALL]这个错误是什么原因造成的
作者: necrohan    时间: 2023-10-30 14:17
if(minval(abs(a-a_old)<eps))exit
这种也可以
作者: jggtgm    时间: 2023-10-30 14:21
if(all(abs(T(r,c,1)-T(r,c,2))<=eps)) exit,使用了这段代码,就报了上面这个错误
作者: fcode    时间: 2023-10-30 17:14
jggtgm 发表于 2023-10-30 14:21
if(all(abs(T(r,c,1)-T(r,c,2))

T(r,c,1)-T(r,c,2) 是一个数,而不是多个数(一个数组),不能使用 all。
你是不是想写 if(all(abs(T(:,:,1)-T(:,:,2))<eps) then


作者: jggtgm    时间: 2023-10-30 17:26
fcode 发表于 2023-10-30 17:14
T(r,c,1)-T(r,c,2) 是一个数,而不是多个数(一个数组),不能使用 all。
你是不是想写 if(all(abs(T(:,:, ...

哦,好的,原来这样。多谢多谢




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2