Fortran Coder

查看: 6973|回复: 4
打印 上一主题 下一主题

[数值问题] 矩阵乘法

[复制链接]

24

帖子

7

主题

0

精华

熟手

F 币
143 元
贡献
88 点
跳转到指定楼层
楼主
发表于 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.
请教一下哪里的矩阵相乘出问题了。


分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

24

帖子

7

主题

0

精华

熟手

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

好的谢谢

24

帖子

7

主题

0

精华

熟手

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

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

24

帖子

7

主题

0

精华

熟手

F 币
143 元
贡献
88 点
地板
 楼主| 发表于 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, 2024-11-1 07:53

Powered by Tencent X3.4

© 2013-2024 Tencent

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