| 查看: 1691 | 回复: 5 | ||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | ||
[求助]
关于应用fortran编写高斯消去法程序来求解方程组的问题
|
||
|
关于应用fortran编写高斯消去法程序来求解方程组的问题。 应用高斯消去法来求解方程组的fortran编程,我自己可以编写,但如果方程的系数矩阵不便,而右边的解矩阵发生了同样的变化,怎样才能通过循环,来求这个方程组的所有解。 我当时在高斯消去法上加了个循环,但是在变换右边解矩阵时,出现了如下错误,怎么解决? E:\machao reactor\assitance\restart\one.f90(399) : Error: A constant or named constant is required in this context. [IM] ImCmplx(Row,j)=(Im(j),0) Im(j)我想表达的意思是每次循环对应的的右边的解矩阵。j是高斯消去法循环的次数。 |
» 猜你喜欢
职称评审没过,求安慰
已经有41人回复
回收溶剂求助
已经有7人回复
硝基苯如何除去
已经有3人回复
A期刊撤稿
已经有4人回复
垃圾破二本职称评审标准
已经有17人回复
投稿Elsevier的Neoplasia杂志,到最后选publishing options时页面空白,不能完成投稿
已经有22人回复
EST投稿状态问题
已经有7人回复
毕业后当辅导员了,天天各种学生超烦
已经有4人回复
求助文献
已经有3人回复
三无产品还有机会吗
已经有6人回复
» 本主题相关价值贴推荐,对您同样有帮助:
【求助】用最小二乘法求解线性方程组的Fortran代码
已经有4人回复
【求助】用fortran求解大型线性方程组时出现的错误【已解决】
已经有11人回复

pippi6
铁杆木虫 (著名写手)
工程和科学数值计算咨询
- 应助: 413 (硕士)
- 贵宾: 0.002
- 金币: 7116.5
- 散金: 15
- 红花: 63
- 帖子: 1639
- 在线: 798.9小时
- 虫号: 2469437
- 注册: 2013-05-14
- 专业: 计算数学与科学工程计算
5楼2013-06-06 17:02:08
pippi6
铁杆木虫 (著名写手)
工程和科学数值计算咨询
- 应助: 413 (硕士)
- 贵宾: 0.002
- 金币: 7116.5
- 散金: 15
- 红花: 63
- 帖子: 1639
- 在线: 798.9小时
- 虫号: 2469437
- 注册: 2013-05-14
- 专业: 计算数学与科学工程计算
2楼2013-06-05 15:54:26
|
十分感谢您的回答,相信用您的程序肯定可以实现此功能,因为我只是注重fortran程序实现我的功能,不知您是否有时间,帮忙修改下我的这块程序。 !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ SUBROUTINE ICGaussA(ICmplx,NumT,NumI,MInd,R,Im) !复数的高斯消去法(用来求包封电流或层电流) IMPLICIT NONE INTEGER NumT,NumI !总包封数或层数 COMPLEX ICmplx(NumT,NumI) !复数电流值,待输出量 REAL MInd(NumT,NumT) !包封或层的互感矩阵 REAL R(NumT) !包封或层的电阻向量 REAL Im(NumI) COMPLEX MZ[ALLOCATABLE](:, !电压阻抗矩阵COMPLEX TZ[ALLOCATABLE](:, !电流阻抗矩阵COMPLEX ImCmplx[ALLOCATABLE](:, !右端复数电流向量COMPLEX Temp,Sum !中间变量 INTEGER Row,Col,Num !行号和列号 INTEGER ME !主元 INTEGER i INTEGER j REAL,PARAMETER: mga=314.159REAL,PARAMETER::pai=3.14159 ALLOCATE(TZ(NumT,NumT)) ALLOCATE(MZ(NumT,NumT)) ALLOCATE(ImCmplx(NumT,NumT)) DO j=1,NumI DO Row=1,NumT DO Col=1,NumT IF(Row==Col) THEN MZ(Row,Col)=CMPLX(R(Row),omga*MInd(Row,Col)) ELSE MZ(Row,Col)=CMPLX(0,omga*MInd(Row,Col)) END IF END DO END DO DO Row=1,NumT IF(Row==NumT) THEN DO Col=1,NumT TZ(Row,Col)=CMPLX(1,0) END DO ELSE DO Col=1,NumT TZ(Row,Col)=MZ(Row,Col)-MZ(Row+1,Col) END DO END IF END DO DO Row=1,NumT IF(Row==NumT) THEN ImCmplx(Row,j)=(Im(j),0) ELSE ImCmplx(Row,j)=(0,0) END IF END DO DO Row=1,NumT ME=Row DO i=Row+1,NumT IF(ABS(TZ(i,Row))>ABS(TZ(ME,Row))) THEN ME=i END IF END DO DO i=1,NumT Temp=TZ(ME,i) TZ(ME,i)=TZ(Row,i) TZ(Row,i)=Temp END DO Temp=ImCmplx(Row,i) ImCmplx(Row,i)=ImCmplx(ME,i) ImCmplx(ME,i)=Temp DO Col=Row+1,NumT TZ(Col,Row)=TZ(Col,Row)/TZ(Row,Row) DO i=Row+1,NumT TZ(Col,i)=TZ(Col,i)-TZ(Col,Row)*TZ(Row,i) END DO ImCmplx(Col,j)=ImCmplx(Col,j)-TZ(Col,Row)*ImCmplx(Row,j) END DO END DO ICmplx(NumT,j)=ImCmplx(NumT,j)/TZ(NumT,NumT) DO Row=NumT-1,1,-1 Sum=ImCmplx(Row,j) DO Num=Row+1,NumT Sum=Sum-TZ(Row,i)*ImCmplx(i,Num) END DO ICmplx(Row,j)=Sum/TZ(Row,Row) END DO END DO DEALLOCATE(MZ) DEALLOCATE(TZ) DEALLOCATE(ImCmplx) RETURN END SUBROUTINE !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |

3楼2013-06-06 08:59:26
pippi6
铁杆木虫 (著名写手)
工程和科学数值计算咨询
- 应助: 413 (硕士)
- 贵宾: 0.002
- 金币: 7116.5
- 散金: 15
- 红花: 63
- 帖子: 1639
- 在线: 798.9小时
- 虫号: 2469437
- 注册: 2013-05-14
- 专业: 计算数学与科学工程计算
4楼2013-06-06 17:00:51













回复此楼
!电压阻抗矩阵
mga=314.159