Fortran Coder

查看: 1315|回复: 7
打印 上一主题 下一主题

[求助] 迭代计算跳出条件

[复制链接]

5

帖子

1

主题

0

精华

新人

F 币
25 元
贡献
11 点
跳转到指定楼层
楼主
发表于 2023-10-27 17:23:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教大佬,现在用迭代算法计算一个二维数组的值,如何设置调制循环的条件呢?条件是本次的结果和上次的结果之差小于设定的值。需要数组的每个结果都满足这个条件
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

166

帖子

2

主题

1

精华

大师

Vim

F 币
1005 元
贡献
482 点

规矩勋章

沙发
发表于 2023-10-27 20:04:43 | 只看该作者
[Fortran] 纯文本查看 复制代码
if(all(abs(a-a_old)<eps))exit

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

评分

参与人数 1F 币 +3 收起 理由
fcode + 3 赞一个!

查看全部评分

5

帖子

1

主题

0

精华

新人

F 币
25 元
贡献
11 点
板凳
 楼主| 发表于 2023-10-30 09:54:38 | 只看该作者
Transpose 发表于 2023-10-27 20:04
[mw_shl_code=fortran,true]if(all(abs(a-a_old)

谢谢大佬指点。

5

帖子

1

主题

0

精华

新人

F 币
25 元
贡献
11 点
地板
 楼主| 发表于 2023-10-30 10:43:12 | 只看该作者
An array-valued argument is required in this context.   [ALL]这个错误是什么原因造成的

评分

参与人数 1F 币 +1 收起 理由
fcode + 1 给出必要代码

查看全部评分

250

帖子

2

主题

0

精华

宗师

F 币
1731 元
贡献
872 点

规矩勋章

5#
发表于 2023-10-30 14:17:30 | 只看该作者
if(minval(abs(a-a_old)<eps))exit
这种也可以

5

帖子

1

主题

0

精华

新人

F 币
25 元
贡献
11 点
6#
 楼主| 发表于 2023-10-30 14:21:04 | 只看该作者
if(all(abs(T(r,c,1)-T(r,c,2))<=eps)) exit,使用了这段代码,就报了上面这个错误

2015

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1572 元
贡献
676 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

7#
发表于 2023-10-30 17:14:13 | 只看该作者
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

5

帖子

1

主题

0

精华

新人

F 币
25 元
贡献
11 点
8#
 楼主| 发表于 2023-10-30 17:26:55 | 只看该作者
fcode 发表于 2023-10-30 17:14
T(r,c,1)-T(r,c,2) 是一个数,而不是多个数(一个数组),不能使用 all。
你是不是想写 if(all(abs(T(:,:, ...

哦,好的,原来这样。多谢多谢
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-1 07:20

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表