Fortran Coder

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

[求助] 矩阵运算编译问题求助

[复制链接]

50

帖子

24

主题

0

精华

大师

F 币
1154 元
贡献
475 点
跳转到指定楼层
楼主
发表于 2022-9-26 13:36:46 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
尊敬的FORTRAN老师,您好!
    有编译运行较大型矩阵操作合集程序一则, 过程中有疑问,无法进行下去,求助解决,盼复!谢谢!
  9970 |         lambda(i) = 2.0D+00* * ( i - 1 )
      |                              1
Error: Invalid character in name at (1)
上述的错误在哪里? 如何更正?
main.f90:14167:40:

14236 |             a(i,j) = - dot
      |            1
Error: The function result on the lhs of the assignment at (1) must have the pointer attribute.
main.f90:4680:36:

上述是哪里出错?!什么意思?如何更正?

33901 |       data a_save /0.002025462963002D+06, &
      |          1
Error: DATA statement at (1) has more values than variables

main.f90:33927:41:

34014 |       data a_save /0.075953934362606D+00,  0.139678536121698D+00, &
      |          1
Error: DATA statement at (1) has more values than variables
main.f90:34087:43:

上述两句(独立)的意思是不是给出的数据值太多,个数大于多于定义指定的·个数?!

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

50

帖子

24

主题

0

精华

大师

F 币
1154 元
贡献
475 点
8#
 楼主| 发表于 2022-9-29 08:25:10 | 只看该作者
收到,谢谢
回复

使用道具 举报

250

帖子

2

主题

0

精华

宗师

F 币
1731 元
贡献
872 点

规矩勋章

7#
发表于 2022-9-28 17:06:39 | 只看该作者
要是不能给完整的代码,可以自己把没问题的部分删除,再编译看看错误出在哪
a(i,j)没声明直接当数组用肯定不行

50

帖子

24

主题

0

精华

大师

F 币
1154 元
贡献
475 点
6#
 楼主| 发表于 2022-9-27 11:59:01 | 只看该作者

矩阵操作运算合集编译问题续二

按老师提示, 请教如下: 盼复,谢谢!

问题1:                                                        附近程序行I
********************************************
main.f90:14225:12:

14225 |             a(i,j) = 0.0D+00
      |            1
Error: Unclassifiable statement at (1)
main.f90:17595:35:

      subroutine eulerian_inverse ( n, a )

      do j = 1, n

        do i = 1, n

          if ( i .lt. j ) then

14225            a(i,j) = 0.0D+00

          else if ( i .eq. j ) then

            a(i,j) = 1.0D+00

          else if ( j .lt. i ) then

            dot = 0.0D+00
            do k = j, i - 1
              dot = dot + b(i,k) * a(k,j)
            end do
            a(i,j) = - dot

          end if

        end do

      end do

      return
      end


***********************************************
问题2:                                                            附件程序行II
***********************************************
main.f90:14237:12:

14237 |             a(i,j) = - dot
      |            1
Error: The function result on the lhs of the assignment at (1) must have the pointer attribute.

      subroutine eulerian_determinant ( n, determ )

      implicit none

      double precision determ
      integer n

      determ = 1.0D+00

      return
      end
      subroutine eulerian_inverse ( n, a )

      do j = 1, n

        do i = 1, n

          if ( i .lt. j ) then

            a(i,j) = 0.0D+00

          else if ( i .eq. j ) then

            a(i,j) = 1.0D+00

          else if ( j .lt. i ) then

            dot = 0.0D+00
            do k = j, i - 1
              dot = dot + b(i,k) * a(k,j)
            end do
14237            a(i,j) = - dot

          end if

        end do

      end do

      return
      end
      subroutine exchange ( m, n, a )


      implicit none

      integer m
      integer n

      double precision a(m,n)
      integer i
      integer j

      do j = 1, n
        do i = 1, m
          if ( i + j .eq. n + 1 ) then
            a(i,j) = 1.0D+00
          else
            a(i,j) = 0.0D+00
          end if
        end do
      end do

      return
      end


50

帖子

24

主题

0

精华

大师

F 币
1154 元
贡献
475 点
5#
 楼主| 发表于 2022-9-27 11:07:29 | 只看该作者
收到! 谢谢!
回复

使用道具 举报

2022

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1598 元
贡献
689 点

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

地板
发表于 2022-9-26 17:11:08 | 只看该作者
lambda(i) = 2.0D+00* * ( i - 1 )
两个乘号表示乘方时,不可分开,中间不可有空格。

data a_save /0.075953934362606D+00,  0.139678536121698D+00, &
建议放弃 data 语句。具体还要看 a_save 的定义,以及续行后的代码内容。

2022

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1598 元
贡献
689 点

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

板凳
发表于 2022-9-26 17:08:38 | 只看该作者
编译错误先看第一个,后面的无视。

错误提示有时候需要结合上下文才能判断。建议给出第一个错误所在行的附近20行代码。

50

帖子

24

主题

0

精华

大师

F 币
1154 元
贡献
475 点
沙发
 楼主| 发表于 2022-9-26 13:49:37 | 只看该作者

矩阵操作运算较大型合集编译问题继续一

FORTRAN老师您好,
    另有疑问求助,以便编译继续进行下去:
main.f90:14225:12:14225 |             a(i,j) = 0.0D+00      |            1Error: Unclassifiable statement at (1)
什么意思?! 如何纠正?! 盼复! 谢谢!
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-11-24 00:43

Powered by Tencent X3.4

© 2013-2024 Tencent

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