高斯消元法(Fortran)
高斯消元法(FORTRAN)
代码如下
program Guass1
real,dimension(:,:),allocatable::arr
real,dimension(:),allocatable::x
real a
integer i,j,k,n
!输入、输出数列
write(*,*)'请输入需要计算的系数矩阵的大小n='
read*,n
allocate(arr(n,n+1))
allocate(x(n))
write(*,*)'请以列为主次序依次输入增广矩阵(系数矩阵:常系数矩阵)\n'c
read*,arr
do i=1,nwrite(*,*) arr(i,:)
end do
write(*,*)'高斯消元法\n'c
!高斯消元法
do k=1,n-1 !K代表目前消元列数do i=k+1,n !i代表行a=arr(i,k)/arr(k,k)do j=k,n+1 !j代表列arr(i,j)=arr(i,j)-a*arr(k,j)enddoenddo
enddo
!输出消元后矩阵
do i=1,nwrite(*,*) arr(i,:)
end do!回带消元
x(n)=arr(n,n+1)/arr(n,n)do i=n-1,1,-1 !hanga=0do j=n,i+1,-1 !liea=a+arr(i,j)*x(j)enddox(i)=(arr(i,n+1)-a)/arr(i,i)
enddowrite(*,*) x! 100 format(1x,'arr(',i2,',',i2,')=',f8.2)
! 200 format(1x,f6.2)
pause
end
总结
高斯消元法算法看着简单,但是用程序语言把整个算法写出来还是花了很大的力气的。计算的结果也存在数值计算误差。后面再慢慢找误差存在的具体原因,初步判断是因为计算过程中存在舍入误差。
感觉编写中比较难的一点是对每一列的消元过程的逻辑顺序的思考,开始一直以为只需要用两个循环就够了,实际上有三个循环,第一个是对消元列需要一个循环,然后对每一列进行消元时由于需要对每一个方程中的每一项进行加减,所以需要一个行循环,一个列循环。循环中每个变量的计算也需要考虑使用什么循环变量来表示对应的矩阵元素。
程序有一些可供改进的空间,大家看见了可以简单改一改。
高斯消元法(Fortran)相关推荐
- Fortran 高斯消元法
@[TOC] Fortran 高斯消元法 Fortran 高斯消元法 最近是学习使用Fortran 95进行一些科学计算的代码编程,看了宋志叶老师所著<科学计算与工程>,磨练一些Fortr ...
- matlab sskf,[转载]fortran语言常用函数
3. 编程语言结构 abort 中止计算或循环 break 终止最内循环 case 同 select 一起使用 continue 将控制转交给外层的 for或 while循环 else 同 if一起使 ...
- 将Tensor核心引入标准Fortran
将Tensor核心引入标准Fortran 调优的数学库是从HPC系统提取最终性能的一种简单而可靠的方法.但是,对于寿命长的应用程序或需要在各种平台上运行的应用程序,为每个供应商或库版本调整库调用可能是 ...
- linux执行命令段错误,Linux运行fortran程序 出现段错误(segmentation fault)
在Windows下编译运行fortran程序时,没有问题 ,运行时出现堆栈错误,只要在CVF里修改一下扩大内存设置: MAIN MENU: Project ===> Setting ===> ...
- matlab中的expotest,提高Fortran矩阵指数性能(Expokit比Matlab、Python慢)
我正在进行一个模拟,其中的瓶颈是执行大量复杂的双精度矩阵指数运算,我发现Fortran(Expokit)对于小矩阵很好,但对于较大的矩阵,它的性能比Matlab或Python差.在 我在下面包含了一个 ...
- .Net(c#) 通过 Fortran 动态链接库,实现混合编程
c# 与 Fortran 混合编程解决方案主要有两种: 1. 进程级的交互:在 Fortran 中编译为控制台程序,.Net 调用(System.Diagnostics.Process),然后使用 P ...
- CUDA FORTRAN编译器
支持CUDA FORTRAN的编译器目前只有一种:PGI编译器!不用怀疑,你没的选. 原文发布时间为: 2016-12-7 19:16:53 原文由:LGZ 发布,版权归属于原作者 本文来自云栖社区 ...
- 这些代码改变了科学界:从Fortran、arXiv到AlexNet
转自:机器之心 2019 年,「事件视界望远镜」团队拍下了第一张黑洞照片.这张照片并非传统意义上的照片,而是计算得来的--将美国.墨西哥.智利.西班牙和南极多台射电望远镜捕捉到的数据进行数学转换.该团 ...
- 窥透Fortran的方方面面
窥透Fortran的方方面面 --<Fortran权威指南> Fortran 是英文 FORmula TRANslator 的缩写,译为"公式翻译器",是世界上最早出现 ...
最新文章
- “Python来玩微信跳一跳”教程(问题总结)
- 微软的最高市值是多少?
- 【译】Construction of a Plasma Chain 0x1
- 更新MYSQL生成日历表,支持跨年份 存储过程
- 云原生分布式应用运行时 Dapr 在阿里的实践
- 【软件领域知识整理】贵金属交易的K线图解释(二)
- outlook 让附件在正文中显示 (REF rich リッチ)
- cms运行php,迅睿CMS 主程序运行之后
- 爬虫之Beautiful Soup库入门
- matlab 拟合瑞利分布公式_概率论3「学生成绩转化」为正态分布和偏态分布的方法...
- 比特率和波特率的区别
- python基础之列表函数(10)
- python毕业设计 基于django框架企业公司网站系统毕业设计设计与实现
- Day10.事件下(学习日记10)
- springmvc接收请求参数(springmvc教程二)
- 计算机第一次开机进行重要设置很慢,为什么电脑第一次开机后总会自动关机,第二次开...
- 安全架构-HTTP协议幂等性
- ORB-SLAM3 IMU(李群)+Frame+KeyFrame+MapPoint
- 浪潮nf5220服务器做系统,【浪潮NF5220参数】浪潮NF5220系列服务器参数-ZOL中关村在线...
- 卡尔曼滤波原理和Matlab以及python代码实现