首页/文章/ 详情

Fortran知识 | 还在使用reshape函数?

5月前浏览5325

本文摘要(由AI生成):

计算机内存虽然是一维的,但在处理多维数组时,不同的编程语言会采用不同的存储顺序。Fortran语言即遵循列优先原则。旧版Fortran使用reshape函数来定义二维数组,虽然功能强大但不够直观。然而,新Fortran语法标准通过简洁的方式改进了二维数组的表达,使得代码更加直观易读,类似于MATLAB的语法风格。例如,对于单元刚度矩阵的描述,如果使用新Fortran语法,代码可能更加清晰,具体实现将直接按行或列赋值,充分利用了新语法的直观性。这种改进不仅提高了代码的可读性,也降低了编程的复杂性。


计算机内存是一维的,在存储多维数组时,有些语言按行优先原则,有些语言按列优先原则。Fortran语言就属于按列优先原则。

Fortran语言用reshape函数描述一个二维数组,比如下面的二维数组

用reshape可表示为:

 A = reshape( (/ 1,5,2,6 /), (/2,2/) )  !注意列优先原则

这看起来有些繁琐,阅读代码方便不如MATLAB那样直观。新的Fortran语法标准采用了简洁的方式来表达二维数组

A(1,:) = [ 1, 2 ] 

A(2,:)  = [ 5, 6 ]

较新版本的Intel编译器支持这种语法。这种表达的优势在于所见即所得,阅读代码方便,和MATLAB一样。

下面是一个描述单元刚度矩阵的代码片段,如果用新语法该怎么写代码呢?





来源:数值分析与有限元编程
MATLAB
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-04-01
最近编辑:5月前
太白金星
本科 慢慢来
获赞 4粉丝 8文章 317课程 0
点赞
收藏
作者推荐

矢量的一些应用(一)

本文摘要(由AI生成):本文探讨了微积分在描述物理变量中的应用,特别是与牛顿力学相关的重要应用。微积分能够处理矢量的微分,对于理解速度和加速度的几何意义具有重要作用。文章详细解释了速度矢量的组成,并指出其在径向和切向两部分的表达。此外,文章还介绍了使用基底表示法来简化速度和加速度的计算,这在实际应用中非常方便。微积分的运用不仅在力学中有重要作用,同时也对数学本身产生了深远的影响。量和微积分一样因牛顿力学的发展而应运而生,无论是对于力学和其他学科都有许多必不可少的应用,就是对数学本身也取得相当多的成就。下面就谈谈一些比较重要的应用:(一)描述物理变量在经典牛顿力学中,位置、速度、加速度以及所谓的力都是矢量,因此为了叙述经典的牛顿第二定律,必须要先给出矢量的微分。因为速度矢量 V =dr/dt,如图1所示,注意 r =r*r0,其中 r 为 r 的长度,而 r0 为 r 的单位矢量。所以 V =(dr/dt)r0 +(dr0/dt)r但由图可知, (dr0/dt) =(dθ/dt)θ0因此 V =(dr/dt)r0 +(dθ/dt)rθ0,而 θ0 是 r0 的横向(即与其正交)矢量的单位矢量。由此可见,速度矢量是由径向和切向两部分组成的。这样的写法对于理解速度和加速度的几何意义的作用比较明显,但对于计算显然是很不方便的。若采取基底的表示法就比较容易了。比如将 r 表示为:r =xi +yj +zk则速度和加速度可表示为V =dr/dt =(dx/dt)i +(dy/dt)j +(dz/dt)k来源:数值分析与有限元编程

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈