Fortran Coder

查看: 7996|回复: 8
打印 上一主题 下一主题

[原创] matrix乘法

[复制链接]

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
608 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

楼主
发表于 2015-3-27 19:51:38 | 显示全部楼层
在这个论坛,代码可以自动高亮。Fortran 语法内的函数和关键字都会自动高亮。

matmul 高亮显示了,说明这是一个语法内的函数。矩阵相乘是被语法支持的。

c = matmul( a , b ) 不需要写代码就能实现。

整理代码的合集,一直也是我们的愿望。楼主如果有好的代码,可以在主站投稿,审核以后就可以显示在主站了。

http://fcode.cn/contribute.php

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
608 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2015-3-27 20:03:49 | 显示全部楼层
没事,你直接发论坛吧。有好东西,站长会转到主站去的。

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
608 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

板凳
发表于 2015-3-27 20:54:45 | 显示全部楼层
用 Module 可以很方便地使用函数(不需要传递数组大小)

[Fortran] 纯文本查看 复制代码
Module MatMulMod
  Implicit None
contains

  Function mat_mul(a, b) result( c )
    Real a(:,:) , b(:,:)
    Real c( size(a,dim=1) , size(b,dim=2) )
    Integer i, j, k
    c = 0.0
    Do i = 1, size(a,dim=1)
      Do j = 1, size(b,dim=2)
        Do k = 1, size(a,dim=2)
          c(i, j) = c(i, j) + a(i, k) * b(k, j)
        End Do
      End Do
    End Do
  End Function mat_mul
  
  Subroutine output(a)
    Real a(:,:)
    Integer i , n    
    Character (Len=100) :: for = '(??(1X, es13.6))'
    n = size( a , dim = 1 )
    Write (for(2:3), '(i2.2)') n
    !Open (21, Status='unknown', File='c.dat') ! your result is here
    Do i = 1, n
      Write (*, for) a(i,:)      
      !Write (21, for ) a(i,:)
    End Do
    !Close( 21 )
  End Subroutine output

End Module MatMulMod

Program matrix
  use MatMulMod
  Implicit None
  Integer n
  Parameter (n=2) ! remember setup dimension first!!!
  Real :: a(n, n), b(n, n), c(n, n)
  a = reshape([1,2,3,4],[2,2]) ; b=reshape([2,3,4,5],[2,2])
  !Open (11, Status='unknown', File='a.DAT')
  !Read (11, *) c
  !Open (12, Status='unknown', File='b.DAT')
  !Read (12, *) b
  c = mat_mul(a, b)
  Write (*, *) 'Your new matrix looks like: '
  Call output(c)
  c = matmul(a,b)
  Call output(c)
End Program matrix
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-18 10:52

Powered by Tencent X3.4

© 2013-2024 Tencent

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