fortran程序设计题
发布网友
发布时间:2022-04-22 16:51
我来回答
共2个回答
热心网友
时间:2023-09-20 17:37
这是1L所说的彭国伦97书中所附光盘上的源代码,采用Gauss_Jordan法求解线性方程组,[3 2 1] [a] [6]
[2 1 -1] * [b] = [2]
[1 -4 5] [c] [2]
可做相应更改。
以前我也没太注意Fortran求解方程组的问题,感谢1L,我这里只是随手之劳,所以楼主若是满意就把分给1楼:
mole LinearAlgebra
implicit none
contains
! Gauss_Jordan法
subroutine Gauss_Jordan(A,S,ANS)
implicit none
real :: A(:,:)
real :: S(:)
real :: ANS(:)
real, allocatable :: B(:,:)
integer :: i, N
N = size(A,1)
allocate(B(N,N))
! 保存原先的矩阵A,及数组S
B=A
ANS=S
! 把B化成对角线矩阵(除了对角线外,都为0)
call Upper(B,ANS,N) ! 先把B化成上三角矩阵
call Lower(B,ANS,N) ! 再把B化成下三角矩阵
! 求解
forall(i=1:N)
ANS(i)=ANS(i)/B(i,i)
end forall
return
end subroutine Gauss_Jordan
! 输出等式
subroutine output(M,S)
implicit none
real :: M(:,:), S(:)
integer :: N,i,j
N = size(M,1)
! write中加上advance="no",可以中止断行发生,使下一次的
! write接续在同一行当中.
do i=1,N
write(*,"(1x,f5.2,a1)", advance="NO") M(i,1),'A'
do j=2,N
if ( M(i,j) < 0 ) then
write(*,"('-',f5.2,a1)",advance="NO") -M(i,j),char(64+j)
else
write(*,"('+',f5.2,a1)",advance="NO") M(i,j),char(64+j)
end if
end do
write(*,"('=',f8.4)") S(i)
end do
return
end subroutine output
! 求上三角矩阵的子程序
subroutine Upper(M,S,N)
implicit none
integer :: N
real :: M(N,N)
real :: S(N)
integer :: I,J
real :: E
do I=1,N-1
do J=I+1,N
E=M(J,I)/M(I,I)
M(J,I:N)=M(J,I:N)-M(I,I:N)*E
S(J)=S(J)-S(I)*E
end do
end do
return
end subroutine Upper
! 求下三角矩阵的子程序
subroutine Lower(M,S,N)
implicit none
integer :: N
real :: M(N,N)
real :: S(N)
integer :: I,J
real :: E
do I=N,2,-1
do J=I-1,1,-1
E=M(J,I)/M(I,I)
M(J,1:N)=M(J,1:N)-M(I,1:N)*E
S(J)=S(J)-S(I)*E
end do
end do
return
end subroutine Lower
end mole
! 求解联立式
program main
use LinearAlgebra
implicit none
integer, parameter :: N=3 ! Size of Matrix
real :: A(N,N)=reshape( (/1,2,3,4,5,6,7,8,8/),(/N,N/) )
real :: S(N)=(/12,15,17/)
real :: ans(N)
integer :: i
write(*,*) 'Equation:'
call output(A,S)
call Gauss_Jordan(A,S,ANS)
write(*,*) 'Ans:'
do i=1,N
write(*,"(1x,a1,'=',F8.4)") char(64+i),ANS(i)
end do
stop
end program
热心网友
时间:2023-09-20 17:37
彭国伦,Fortran95书本,第452页。对于你这个方程,讲解很详细了。
自己去看看。
书可以上新浪爱问共享下载。追问打上来吧,我没那书,打上来130分给你
求fortran90程序设计语言高手,帮忙做几道题,谢谢!! 1。一个数列,它的...
1.a(1),a(2),a(3)提前赋值,然后 do i=1,17 a(i+3)=a(i)+a(i+1)+a(i+2)enddo 2.integer a(50,4)a=0 l=1 do i=1,50 do j=1,50 v1=i**2+j**2 do k=1,50 if (v1==k**2) then if ( all(a(:,4)/=i*j*k) ) then a(l,1)=i a(l,2)=j a(...
编程(Fortran语言) 命题作业求解答
对题目的源代码进行了一点修改。1、用循环代替了goto语句,更符合结构化编程习惯。2、将读取的x转赋给r,使得分解二进制的运算不影响到x的值。3、增加了输出的语句,用等式直观表达十进制到二进制的结果。4、将二进制的位数增加到integer*4,即32位。供您参考。附:fortran程序代码和运行实例 ...
下面这些Fortran95程序设计的程序问题能给出编程语言!
1:请写一个可以让用户输入圆形半径,兵计算,输出这个圆形面积的程序!(请自行设计出输出格式)2:目次物理考试的的考题太难,老师决定调整全体学生的成绩,调整的公式是把原成绩开... 1:请写一个可以让用户输入圆形半径,兵计算,输出这个圆形面积的程序!(请自行设计出输出格式)2:目次物理考试的的考题太难,老师决定调整...
fortran程序设计的题,求高手帮忙!!!
编写一个程序 ,计算day of ... 2013-12-04 fortran实现mpi执行有错,跪求高手帮忙! 1 2014-04-10 fortran运行提示error M6201:math-**... 1 2012-05-01 fortran程序没错,但是不出数据啊!求高手帮忙调试!可加... 2013-05-13 求fortran语言高手帮忙编译数值积分的程序?电脑是win... 2012-03-01 ...
程序设计基础:Fortran 95目录
1.1 程序设计基础与语言发展:探讨编程概念和Fortran语言历史。1.2 Fortran 95特性:语言的核心特性和革新之处。1.4 编程入门:理解程序设计的基本概念。1.5 编译环境设置:如使用Compaq Visual Fortran 6.5的安装和上机步骤。习题1:巩固理论知识。第2章 - 编程基础要素:2.1 数据类型与格式:字符...
Fortran95/2003程序设计内容简介
例题详尽展示了理论在实际中的应用,而测验则帮助读者检验学习成果。通过阅读和实践,读者不仅能掌握Fortran,还能在解决实际的科学计算问题中锻炼技能。总的来说,《Fortran95/2003程序设计(第3版)》是所有希望借助Fortran进行计算的读者的理想选择,无论是初学者还是进阶者,都能从中获益良多。
fortran编程
program mainimplicit noneINTEGER(4),PARAMETER::N=20integer(4) ::s(N),iinteger(4):: breal(8)::x,averdo i=1,20call random_number(x)s(i)=x*100enddoCALL fun(s,b,AVER,N)WRITE(*,100)AVER,b100 FORMAT("平均数是",F13.5,/,"与平均数最接近且比平均数小的是:",I3)READ...
Fortran程序设计基础
Fortran程序设计基础内容精简 第三章,Fortran程序设计基础 程序结构与输出 Program main !程序开始 Write(*,*)”Hello” !主程序代码输出 Stop !程序结束标记 End !主程序代码结束 声明与数据类型 Integer (kind=4) a !长整型数据声明 Real (kind=4) a !单精度浮点型声明 格式化输出 Write(*,*)...
用fortran怎么编程?
代码如下。算法见绿色字体注释。附:计算示例
FORTRAN简单程序
在Fortran中,`program`关键字用于声明程序的开始。print *,'hello world'这一行是程序的核心,`print`语句用于向标准输出设备输出文本。`*`代表输出的任何内容都是格式化的,而字符串 `'hello world'`即是要输出的文字。end `end`关键字用于程序的结束,声明了程序的完整范围。总结而言,此Fortran90...