Fortran Coder

查看: 10866|回复: 6
打印 上一主题 下一主题

[线性代数] 求解线性方程组

[复制链接]

38

帖子

7

主题

0

精华

熟手

F 币
218 元
贡献
134 点

规矩勋章

跳转到指定楼层
楼主
发表于 2014-4-17 19:33:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[Fortran] 纯文本查看 复制代码
SUBROUTINE SLBSI(A,B,D,N,MS,NX,MX)
DIMENSION A(NX,MX),B(NX),D(MX)
N1=N-1
DO K=1,N1
   C=A(K,1)
   K1=K+1
   IF((ABS(C)-0.000001).LE.0)THEN
   WRITE(6,2)K
2  FORMAT('*****SINGULARITY IN ROW',I5)
   STOP
   ELSE
   NI=K1+MS-2
   L=MIN(NI,N)
   DO J=2,MS
   D(J)=A(K,J)
   ENDDO
   DO J=K1,L
      K2=J-K+1
   A(K,K2)=A(K,K2)/C
   ENDDO
   B(K)=B(K)/C

   DO I=K1,L
   K2=I-K1+2
   C=D(K2)
   DO J=I,L
   K2=J-I+1
   K3=J-K+1
   A(I,K2)=A(I,K2)-C*A(K,K3)
   ENDDO
   B(I)=B(I)-C*B(K)
   ENDDO
ENDIF
ENDDO

IF((ABS(A(N,1))-0.000001).LE.0)THEN
WRITE(6,7)K
7     FORMAT('*****SINGULARITY IN ROW',I5)
STOP
ELSE
B(N)=B(N)/A(N,1)
DO I=1,N1
   K=N-I
   K1=K+1
   NI=K1+MS-2
   L=MIN(NI,N)
   DO J=K1,L
   K2=J-K+1
   B(K)=B(K)-A(K,K2)*B(J)
   ENDDO
ENDDO
ENDIF
RETURN
END




一个解线性方程组的程序,不知道有没有大神有空帮我看看,这是一个有限元的子程序,整个程序已经可以计算,但是结果就是不对,是一个 解二维等带宽矩阵的程序吧,数学学得不行


HJstatic.DAT

368 Bytes, 下载次数: 4

输入数据

HJstatic.f90

7.13 KB, 下载次数: 4

RESULT.TXT

2.87 KB, 下载次数: 0

输出数据,错的

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

136

帖子

3

主题

0

精华

版主

F 币
1964 元
贡献
1677 点

帅哥勋章管理勋章爱心勋章新人勋章热心勋章元老勋章

沙发
发表于 2014-4-17 19:51:14 | 只看该作者
如果单纯给代码,咱们没法给您看,没有任何说明,没有任何算法原理

最好给出输入文件,别人才好测试你的程序是否正确

38

帖子

7

主题

0

精华

熟手

F 币
218 元
贡献
134 点

规矩勋章

板凳
 楼主| 发表于 2014-4-17 19:55:13 | 只看该作者
aliouying 发表于 2014-4-17 19:51
如果单纯给代码,咱们没法给您看,没有任何说明,没有任何算法原理

最好给出输入文件,别人才好测试你的程 ...

恩,第一次发帖问问题,见谅哦,整体的代码有几百行,发上来也没人愿意看吧,这个应该是一个单独的方程组,所以想单独拿出来,看来也不行,我把代码和输入文件发附件您帮看看行吗?

38

帖子

7

主题

0

精华

熟手

F 币
218 元
贡献
134 点

规矩勋章

地板
 楼主| 发表于 2014-4-17 19:58:22 | 只看该作者
求解结果,位移,轴力,合力几乎都是错误的

136

帖子

3

主题

0

精华

版主

F 币
1964 元
贡献
1677 点

帅哥勋章管理勋章爱心勋章新人勋章热心勋章元老勋章

5#
发表于 2014-4-17 20:55:49 | 只看该作者
麦田守望者 发表于 2014-4-17 19:55
恩,第一次发帖问问题,见谅哦,整体的代码有几百行,发上来也没人愿意看吧,这个应该是一个单独的方程组 ...

我说的输入文件的意思是指矩阵,不是其他,不要拿专业的东西,能碰到同一个专业且热心帮你解决的可能性很小,应该从纯数学或者fortran程序的角度上描述问题

38

帖子

7

主题

0

精华

熟手

F 币
218 元
贡献
134 点

规矩勋章

6#
 楼主| 发表于 2014-4-18 23:04:18 | 只看该作者
aliouying 发表于 2014-4-17 20:55
我说的输入文件的意思是指矩阵,不是其他,不要拿专业的东西,能碰到同一个专业且热心帮你解决的可能性很 ...

嗯,还是谢谢你了,那样的话我还得考虑下怎么描述

136

帖子

3

主题

0

精华

版主

F 币
1964 元
贡献
1677 点

帅哥勋章管理勋章爱心勋章新人勋章热心勋章元老勋章

7#
发表于 2014-4-19 10:22:31 | 只看该作者
麦田守望者 发表于 2014-4-18 23:04
嗯,还是谢谢你了,那样的话我还得考虑下怎么描述

如果这个程序是以前别人写的,而且是对的,那么肯定是你的矩阵组装的时候或者单元矩阵有问题
一般解方程组的这些代码是公用的,经过测试了的

如果非要检查,可以把矩阵的行号、列号、非零值 输出来,然后用matlab或者其他的求解器来对比,看求解方程组是否有问题,仅仅给定这个代码,没有算法,那是真心不好检查,只能自己猜测的事情没人愿意干。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-11-22 12:16

Powered by Tencent X3.4

© 2013-2024 Tencent

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