Fortran Coder

查看: 119|回复: 4

[数值问题] 矩阵乘法

[复制链接]

21

帖子

5

主题

0

精华

入门

F 币
106 元
贡献
66 点
发表于 2021-11-9 17:01:11 | 显示全部楼层 |阅读模式
[Fortran] 纯文本查看 复制代码
 DO iDegree = 0,Degree
            !RL06VI(:,iDegree+1) = RL06VI(:,iDegree+1)&
            !+((R+Zk)/a45)**(iDegree+2)*(Pressure0-Pressure1)/Gtheta
            RL06VI(:,iDegree+1) = RL06VI(:,iDegree+1) + ((R+Zk)/a45)**(iDegree+2)*(Pressure0-Pressure1)/Gtheta
        END DO



最后的RL06这里,除了a45是一个数字,其他的字幕都是代表一个(259200,1)的矩阵,这样的话实际是会报错的。

D:\01 AOD\AODFortran\xdw_CalAOD\xdw_CalAOD\xdw_TESTRL06VI.f90(197): error #6366: The shapes of the array expressions do not conform.
请教一下哪里的矩阵相乘出问题了。


回复

使用道具 举报

646

帖子

2

主题

0

精华

大宗师

F 币
3196 元
贡献
2001 点
发表于 2021-11-9 18:02:25 | 显示全部楼层
等号左边实际上是一维数组,如果右边是 (259200,1),那就是二维数组。

21

帖子

5

主题

0

精华

入门

F 币
106 元
贡献
66 点
 楼主| 发表于 2021-11-9 18:06:17 | 显示全部楼层
li913 发表于 2021-11-9 18:02
等号左边实际上是一维数组,如果右边是 (259200,1),那就是二维数组。

好的谢谢

21

帖子

5

主题

0

精华

入门

F 币
106 元
贡献
66 点
 楼主| 发表于 2021-11-9 19:58:14 | 显示全部楼层

把后面那一坨再写一个变量加起来就行了。

21

帖子

5

主题

0

精华

入门

F 币
106 元
贡献
66 点
 楼主| 发表于 2021-11-9 20:02:14 | 显示全部楼层
xxdw 发表于 2021-11-9 19:58
把后面那一坨再写一个变量加起来就行了。

[Fortran] 纯文本查看 复制代码
        DO iDegree = 0,Degree
            RL06VI_tmp =    ((R+Zk)/a45)**(iDegree+2)*(Pressure0-Pressure1)/Gtheta
            RL06VI(:,iDegree+1) = RL06VI(:,iDegree+1) + RL06VI_tmp(:,1) 
        END DO



这样就好了。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2021-12-3 02:25

Powered by Tencent X3.4

© 2013-2021 Tencent

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