fortran

阅读 / 问答 / 标签

求fortran中scan的用法,之前搜到一点介绍但是没明白。。。。

各家编译器都会带有帮助信息,其中就有语法内函数的介绍。 SCANElemental Intrinsic Function (Generic): Scans a string for any character in a set of characters.Syntaxresult = SCAN (string, set [, back])string (Input) Must be of type character.set (Input) Must be of type character with the same kind parameter as string.back (Input) Must be of type logical.Results:The result type is default integer.If back is omitted (or is present with the value false) and string has at least one character that is in set, the value of the result is the position of the leftmost character of string that is in set.If back is present with the value true and string has at least one character that is in set, the value of the result is the position of the rightmost character of string that is in set.If no character of string is in set or the length of string or set is zero, the value of the result is zero.CompatibilityCONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIBSee Also: VERIFYExamplesSCAN ("ASTRING", "ST") has the value 2.SCAN ("ASTRING", "ST", BACK=.TRUE.) has the value 3.SCAN ("ASTRING", "CD") has the value zero.The following shows another example: INTEGER i INTEGER array(2) i = SCAN ("FORTRAN", "TR") ! returns 3 i = SCAN ("FORTRAN", "TR", BACK = .TRUE.) ! returns 5 i = SCAN ("FORTRAN", "GHA") ! returns 6 i = SCAN ("FORTRAN", "ora") ! returns 0 array = SCAN ((/"FORTRAN","VISUALC"/),(/"A", "A"/)) ! returns (6, 5) ! Note that when using SCAN with arrays, the string ! elements must be the same length. When using string ! constants, blank pad to make strings the same length. ! For example: array = SCAN ((/"FORTRAN","MASM "/),(/"A", "A"/)) ! returns (6, 2) END

fortran报错:can not find makefile.mak怎么回事?望高手指点?不怎么会用fortran

Fortran 是一门语言。全世界开发商针对 Fortran 开发了不同平台,不同操作系统的多款编译器产品。每个产品,其具体操作又不同。如果您要求助操作问题,而不是语法问题,请至少说明你使用的操作系统和编译器产品。看起来,是缺少 makefile 文件。关于 makefile 的内容,请百度搜索先了解一下。

谁又Fortran常用函数列表

查一本叫Fortran90 Explained的书。是Oxford出版的,基本上还算权威。

fortran中的maxloc究竟是什么类型的数值?

maxloc可以找到一个数组中的最大值,并返回它的位置,位置为一个整型数组如a(3,3)=/1 2 3 4 5 6 7 8 9/,maxloc(a)=(3,3),即第三行第三列为其最大值你所定义的temp(3)未赋值,默认全为零,程序改为:PROGRAM TRGiNTEGER:: A(3,3)=(/1,2,3,4,5,6,7,8,9/)INTEGER:: Temp(3),test(3)integer :: t(1)test=sum(a,2)t=MAXLOC(TEMP)write(*,*)testwrite(*,*)tEND PROGRAM TRG

求相关系数fortran程序~~

1、这是大纲,可以看一下。2、历年真题在5年(具体记不清)之内是不准泄漏的,现在见到的都是记忆版,即考生考完凭记忆写下来的。3、今年是第五年,05年开始考的4、专门的建筑书店里有卖参考书的5、只有现在工作15年以上才有可能免考基础,89级是最后一级免考基础的。6、7、我也不是很明白,考试可以带规范的,但要是正版,最好看一下,否则到时翻书都找不到公式注册公用设备工程师(动力)执业资格考试基础考试大纲 一、高等数学 1.1空间解析几何 向量代数 直线 平面 柱面 旋转曲面 二次曲面 空间曲线 1.2微分学 极限 连续导数 微分 偏导数 全微分导数与微分的应用 1.3积分学 不定积分 定积分 广义积分 二重积分 三重积分平面曲线积分 积分应用 1.4无穷级数 数项级数 幂级数 泰勒级数 傅里叶级数 1.5常微分方程 可分离变量方程 一阶线性方程 可降阶方程 常系数线性方程 1.6概率与数理统计 随机事件与概率 古典概型 一维随机变量的分布和数字特征 数理 统计的基本概念 参数估计 假设检验 方差分析 一元回x/刁分析 1.7向量分析 1.8线性代数 行列式 矩阵 n维向量 线性方程组 矩阵的特征值与特征向量 二次型 二、普通物理 2.1热学 气体状态参量 平衡态 理想气体状态方程 理想气体的压力和温度 的统计解释 能量按自由度均分原理 理想气体内能 平均碰撞次数 和平均自由程 麦克斯韦速率分布律 功 热量 内能 热力学第一 定律及其对理想气体等值过程和绝热过程的应用 气体的摩尔热容循环过程 热机效率 热力学第二定律及其统计意义 可逆过程和不可逆过程 熵 2.2波动学 机械波的产生和传播 简谐波表达式 波的能量 驻波 声速 超声波 次声波 多普勒效应 2.3光学 相干光的获得 杨氏双缝干涉 光程 薄膜干涉迈克尔干涉仪 惠 更斯一菲涅耳原理 单缝衍射 光学仪器分辨本领 x射线衍射 自 然光和偏振光 布儒斯特定律 马吕斯定律 双折射现象 偏振光的 干涉 人工双折射及应用 三、普通化学 3.1物质结构与物质状态 原子核外电子分布 原子、离子的电子结构式 原子轨道和电子云概 念 离子键特征共价键特征及类型 分子结构式 杂化轨道及分子空 间构型 极性分子与非极性分子 分子间力与氢键 分压定律及计算 液体蒸气压 沸点 汽化热 晶体类型与物质性质的关系 3.2溶液 溶液的浓度及计算非电解质稀溶液通性及计算 渗透压概念电解质 溶液的电离平衡 电离常数及计算 同离子效应和缓冲溶液 水的离 子积及PH值 盐类水解平衡及溶液的酸碱性 多相离子平衡 溶度积 常数 溶解度概念及计算 3.3周期表 周期表结构 周期 族 原子结构与周期表关系 元素性质 氧化物 及其水化物的酸碱性递变规律 3.4化学反应方程式 化学反应速率与化学平衡 化学反应方程式写法及计算 反应热概念 热化学反应方程式写法化学反应速率表示方法 浓度、温度对反应速率的影响 速率常数与 反应级数 活化能及催化剂概念 化学平衡特征及平衡常数表达式 化学平衡移动原理及计算 压力熵 与化学反应方向判断 3.5氧化还原与电化学 氧化剂与还原剂 氧化还原反应方程式写法及配平 原电池组成及符 号 电极反应与电池反应 标准电极电势 能斯特方程及电极电势的 应用 电解与金属腐蚀 3.6有机化学 有机物特点、分类及命名 官能团及分子结构式 有机物的重要化学反应:加成 取代 消去 氧化 加聚与缩聚 典型有机物的分子式、性质及用途: 甲烷 乙炔 苯 甲苯 乙醇 酚 乙醛 乙酸 乙酯 乙胺 苯胺 聚氯乙烯 聚乙烯 聚丙烯酸 酯类 工程塑料(ABS) 橡胶 尼龙66 四、理论力学 4.1静力学 于衡 刚体 力 约束 静力学公理 受力分析 力对点之矩 力对 轴之矩 力偶理论 力系的简化 土矢 主矩 力系的平衡 物体系 统(含平面静定桁架)的平衡 滑动摩擦 摩擦角 自锁 考虑滑动摩 擦时物体系统的平衡 重心 4.2运动学 点的运动方程 轨迹 速度和加速度 刚体的平动 刚体的定轴转动 转动方程 角速度和角加速度 刚体内任一点的速度和加速度 4.3动力学 动力学基本定律 质点运动微分方程 动量 冲量 动量定理 动量守恒的条件 质心 质心运动定理 质心运动守恒的条件动量矩 动量矩定理 动量矩守恒的条件 刚体的定轴转动微分方程 转动惯量 回转半径 转动惯量的平行轴定理 功 动能 势能 动 能定理 机械能守恒 惯性力 刚体惯性力系的简化 达朗伯原理 单自由度系统线性振动的微分方程振动周期 频率和振幅 约束 自由度 广义坐标 虚位移 理想约束 虚位移原理 五、材料力学 5.1轴力和轴力图 拉、压杆横截面和斜截面上的应力 强度条件虎克定律和位移计算应变能计算 5.2剪切和挤压的实用计算 剪切虎克定律 切(剪)应力互等定理 5.3外力偶矩的计算 扭矩和扭矩图 圆轴扭转切(剪)应力及强度条件 扭转角计算及刚度条件 扭转应变能计算 5.4静矩和形心 惯性矩和惯性积 平行移轴公式 形心土惯性矩 5.5梁的内力方程 切(剪)力图和弯矩图 分布载荷、剪力、弯矩之间 的微分关系 正应力强度条件 切(剪)应力强度条件 梁的合理截 面 弯曲中心概念 求梁变形的积分法 叠加法和卡氏第二定理 5.6平面应力状态分析的数值解法和图解法 一点应力状态的土应力和最大切(剪)应力 广义虎克定律 四个常用的强度理论 5.7斜弯曲 偏心压缩(或拉伸) 拉—弯或压—弯组合 扭—弯组合 5.8细长压杆的临界力公式 欧拉公式的适用范围 临界应力总图和经验公式 压杆的稳定校核 六、流体力学 6.1流体的主要物理性质 6.2流体静力学 流体静压强的概念 重力作用下静水压强的分布规律 总压力的计算 6.3流体动力学基础以流场为对象描述流动的概念 流体运动的总流分析 恒定总流连续性方程、能量方程和动量方程 6.4流动阻力和水头损失 实际流体的两种流态一层流和紊流 圆管中层流运动、紊流运动的特征 沿程水头损失和局部水头损失 边界层附面层基本概念和绕流阻力 6.5孔口、管嘴出流 有压管道恒定流 6.6明渠恒定均匀流 6.7渗流定律井和集水廊道 6.8相似原理和量纲分析 6.9流体运动参数(流速、流量、压强)的测量 七、计算机应用基础 7.1计算机基础知识 硬件的组成及功能 软件的组成及功能 数制转换 7.2 Windows操作系统 基本知识、系统启动 有关目录、文件、磁盘及其它操作 网络功能 注:以Windows98为基础 7.3计算机程序设计语言 程序结构与基本规定 数据 变量 数组 指针 赋值语句 输入输出的语句 转移语句 条件语句 选择语句 循环语句 函数 子程序(或称过程) 顺序文件 随机文件 注:鉴于目前情况,暂采用FORTRAN语言 八、电工电子技术 8.1电场与磁场 库仑定律 高斯定理 环路定律 电磁感应定律 8.2直流电路 电路基本元件 欧姆定律 基尔霍夫定律 叠加原理 戴维南定理 8.3正弦交流电路 正弦量三要素 有效值 复阻抗 单相和三相电路计算 功率及功率 因数 串联与并联谐振 安全用电常识 8.4 RC和RL电路暂态过程 三要素分析法 8.5变压器与电动机 变压器的电压、电流和阻抗变换 三相异步电动机的使用 常用继电一接触器控制电路 8.6二极管及整流、滤波、稳压电路 8.7三极管及单管放大电路 8.8运算放大器 理想运放组成的比例 加、减和积分运算电路 8.9门电路和触发器 基本门电路 RS、D、JK触发器 九、工程经济 9.1现金流量构成与资金等值计算 现金流量 投资 资产 固定资产折旧 成本 经营成本 销售收入 利润 工程项目投资涉及的主要税种 资金等值计算的常用公式及应 用 复利系数表的用法 9.2投资经济效果评价方法和参数 净现值 内部收益率 净年值 费用现值 费用年值 差额内部收益 率 投资回收期 基准折现率 备选方案的类型 寿命相等方案与寿 命不等方案的比选 9.3不确定性分析 盈亏平衡分析 盈亏平衡点 固定成本 变动成本 单因素敏感性分 析 敏感因素 9.4投资项目的财务评价 工业投资项目可行性研究的基本内容 投资项目财务评价的目标与工作内容 赢利能力分析 资金筹措的土 要方式 资金成本 债务偿还的主要方式 基础财务报表 全投资经济效果与自有资金经济效果 全投资现金流量表与自有资金现金流量 表 财务效果计算 偿债能力分析 改扩建和技术改造投资项目财务 评价的特点(相对新建项目) 9.5价值工程 价值工程的概念、内容与实施步骤 功能分析 十、热工学(工程热力学、传热学) 10.1基本概念 热力学系统 状态 平衡 状态参数 状态公理 状态方程 热力参 数及坐标图 功和热量 热力过程 热力循环 单位制 10.2准静态过程 可逆过程和不可逆过程 10.3热力学第一定律 热力学第一定律的实质 内能 焓 热力学第一定律在开口系统和闭 口系统的表达式 储存能 稳定流动能量方程及其应用 10.4气体性质 理想气体模型及其状态方程 实际气体模型及其状态方程 压缩因子 临界参数 对比态及其定律 理想气体比热 混合气体的性质 10.5理想气体基本热力过程及气体压缩 定压 定容 定温和绝热过程 多变过程气体压缩轴功 余隙 多极压缩和中间冷却 10.6热力学第二定律 热力学第二定律的实质及表述 卡诺循环和卡诺定理 熵 孤立系统 熵增原理 10.7水蒸汽和湿空气 蒸发 冷凝 沸腾 汽化 定压发生过程 水蒸气图表 水蒸气基本 热力过程u2022湿空气性质 湿空气焓湿图 湿空气基本热力过程 10.8气体和蒸汽的流动,喷管和扩压管 流动的基本特性和基本方程 流速 音速 流量 临界状态 绝热节流 10.9动力循环朗肯循环 回热和再热循环 热电循环 内燃机循环 10.10致冷循环 空气压缩致冷循环 蒸汽压缩致冷循环 吸收式致冷循环 热泵 气体的液化 1 0.11导热理论基础 导热基本概念 温度场 温度梯度 傅里叶定律 导热系数导热微 分方程 导热过程的单值性条件 10.12稳态导热 通过单平壁和复合平壁的导热 通过单圆筒壁和复合圆筒壁的导热 临界热绝缘直径 通过肋壁的导热 肋片效率 通过接触面的导热 二维稳态导热问题 10.1 3非稳态导热 非稳态导热过程的特点 对流换热边界条件下非稳态导热 诺模图 集总参数法 常热流通量边界条件下非稳态导热 10.14导热问题数值解 有限差分法原理 问题导热问题的数值计算 节点方程建立节点方 程式求解 非稳态导热问题的数值计算 显式差分格式及其稳定性 隐式差分格式 10.1 5对流换热分析 对流换热过程和影响对流换热的因素 对流换热过程微分方程式 对流换热微分方程组 流动边界层 热边界层 边界层换热微分方程 组及其求解 边界层换热积分方程组及其求解 动量传递和热量传递 的类比 物理相似的基本概念 相似原理 实验数据整理方法 1 0.16单相流体对流换热及准则方程式 管内受迫流动换热 外掠圆管流动换热 自然对流换热 自然对流与 受迫对流并存的混合流动换热 10.17凝结与沸腾换热 凝结换热基本特性 膜状凝结换热及计算 影响膜状凝结换热的因素 及增强换热的措施 沸腾换热 饱和沸腾过程曲线 太空间泡态沸腾换热及计算 泡态沸腾换热的增强 10.18热辐射的基本定律 辐射强度和辐射力 普朗克定律 斯蒂芬一波尔兹曼定律 兰贝特余 弦定律 基尔霍夫定律 10.19辐射换热计算 黑表面间的辐射换热 角系数的确定方法 角系数及空间热阻 灰表面间的辐射换热 有效辐射 表面热阻 遮热板 气体辐射的特 点 气体吸收定律 气体的发射率和吸收率 气体与外壳间的辐射换 热 太阳辐射 10.20传热和换热器 通过肋壁的传热 复合换热时的传热计算 传热的削弱和增强平均温 度差 效能一传热单元数 换热器计算 十一、工程流体力学及泵与风机 11.1流体动力学 流体运动的研究方法 稳定流动与非稳定流动 理想流体的运动方程 式 实际流体的运动方程式 柏努利方程式及其使用条件 11.2相似原理和模型实验方法 物理现象相似的概念 相似三定理 方程和因次分析法 流体力学模 型研究方法 实验数据处理方法 11.3流动阻力和能量损失 层流与紊流现象 流动阻力分类 圆管中层流与紊流的速度分布 层 流和紊流沿程阻力系数的计算 局部阻力产生的原因和计算方法 减 少局部阻力的措施 11.4管道计算 简单管路的u2022计算 串联管路的计算 并联管路的计算 11.5特定流动分析 势函数和流函数概念 简单流动分析 圆柱形测速管原理 旋转气流 性质 紊流射流的一般特性 特殊射流 11.6气体射流压力波传播和音速概念 可压缩流体一元稳定流动的基本方程渐缩喷管与拉伐尔管的特点 实际喷管的性能 11.7泵与风机与网络系统的匹配 泵与风机的运行曲线 网络系统中泵与风机的工作点 离心式泵或风 机的工况调节 离心式泵或风机的选择 气蚀 安装要求 十二、自动控制 12.1自动控制与自动控制系统的一般概念 “控制工程”基本含义 信息的传递 反馈及反馈控制 开环及闭环 控制系统构成 控制系统的分类及基本要求 12.2控制系统数学模型 控制系统各环节的特性 控制系统微分方程的拟定与求解 拉普拉斯 变换与反变换 传递函数及其方块图 12.3线性系统的分析与设计 基本调节规律及实现方法 控制系统一阶瞬态响应 二阶瞬态响应 频率特性基本概念 频率特性表示方法 调节器的特性对调节质量的 影响 二阶系统的设计方法 12.4控制系统的稳定性与对象的调节性能 稳定性基本概念 稳定性与特征方程根的关系 代数稳定判据对象的 调节性能指标 12.5掌握控制系统的误差分析 误差及稳态误差 系统类型及误差度 静态误差系数 12.6控制系统的综合与和校正 校正的概念 串联校正装置的形式及其特性 继电器调节系统(非线性系统)及校正:位式恒速调节系统、带校正 装置的双位调节系统、带校正装置的位式恒速调节系统 十三、热工测试技术 1 3.1测量技术的基本知识 测量 精度 误差 直接测量 间接测量 等精度测量 不等精度测 量 测量范围 测量精度 稳定性 静态特性 动态特性 传感器传输通道 变换器 l 3.2温度的测量 热力学温标 国际实用温标 摄氏温标 华氏温标 热电材料 热电 效应膨胀效应测温原理及其应用 热电回路性质及理论 热电偶结构 及使用方法 热电阻测温原理及常用材料、常用组件的使用方法 单 色辐射温度计 全色辐射温度计 比色辐射温度计 电动温度变送器 气动温度变送器 测温布置技术 1 3.3湿度的测量 干湿球温度计测量原理 干湿球电学测量和信号传送传感 光电式露 点仪 露点湿度计 氯化锂电阻湿度计 氯化锂露点湿度计 陶瓷电 阻电容湿度计 毛发丝膜湿度计 测湿布置技术 13.4压力的测量 液柱式压力计 活塞式压力计 弹簧管式压力计 膜式压力计波纹 管式压力计 压电式压力计 电阻应变传感器 电容传感器 电感传 感器 霍尔应变传感器 压力仪表的选用和安装 1 3.5流速的测量 流速测量原理 机械风速仪的测量及结构 热线风速仪的测量原理及 结构 L型动压管 圆柱型三孔测速仪 三管型测速仪 流速测量布 置技术 1 3.6流量的测量 节流法测流量原理 测量范围 节流装置类型及其使用方法 容积法 测流量 其它流量计 流量测量的布置技术 1 3.7液位的测量 直读式测液位 压力法测液位 浮力法测液位 电容法测液位超声波 法测液位 液位测量的布置及误差消除方法 1 3.8热流量的测量 热流计的分类及使用 热流计的布置及使用 1 3.9误差与数据处理 误差函数的分布规律 直接测量的平均值、方差、标准误差、有效数字和测量结果表达 间接测量最优值、标准误差、误差传播理论、微 小误差原则、误差分配 组合测量原理 最小二乘法原理 组合测量 的误差 经验公式法 相关系数 回归分析 显著性检验及分析 过 失误差处理 系统误差处理方法及消除方法 误差的合成定律 十四、机械基础 14.1机械设计的一般原则和程序 机械零件的计算准则 许用应力和安全系数 14.2运动副及其分类 平面机构运动简图 平面机构的自由度及其具有确定运动的条件 14.3铰链四杆机构的基本型式和存在曲柄的条件 铰链四杆机构的演化 14.4凸轮机构的基本类型和应用 直动从动件盘形凸轮轮廓曲线的绘制14.5螺纹的主要参数和常用类型 螺旋副的受力分析、效率和自锁螺纹联 接的基本类型 螺纹联接的强度计算 螺纹联接设计时应注意的几 个问题 14.6带传动工作情况分析 普通V带传动的主要参数和选择计算带轮的 材料和结构 带传动的张紧和维护 14.7直齿圆柱齿轮各部分名称和尺寸 渐开线齿轮的正确啮合条件和连续 传动条件 轮齿的失效 直齿圆柱齿轮的强度计算 斜齿圆柱齿轮 传动的受力分析 齿轮的结构 蜗杆传动的啮合特点和受力分析 蜗杆和蜗轮的材料 14.8轮系的基本类型和应用 定轴轮系传动比计算 周转轮系及其传动比 计算 14.9轴的分类、结构和材料 轴的计算 轴毂联接的类型 14.10滚动轴承的基本类型 滚动轴承的选择计算 十五、职业法规 15.1我国有关基本建设、建筑、房地产、城市规划、环保、安全及节能等方面的法律与法规 15.2工程设计人员的职业道德与行为规范 15.3我国有关动力设备及安全方面的标准与规范

我建模块的时候,在PSCAD中,用fortran定义的数组怎么的说错误

1.基本使用:一维数组:datatypename(size)datatype:integer,real,complex,logical,或type自定义出来的类型。integer,parameter::students=5integer::student(students)其他定义方法:integera(10)!最简单的integer,dimension(10)::a!另外的方法integer,dimension(10)::a,b,c!一起定义integera!f77先声明a是整型,dimensiona(10)!再声明a是大小为10的数组或typetype::personreal::height,weightendtypetype(person)::a(10)a(2)%height=180.0二维数组:integera(3,3)a(1,1)=3定义方法:integera(10,10)integer,dimension(10,10)::a,b,cintegeradimensiona(10,10)!f77,先定义类型二维数组常用来当作矩阵使用。多维数组:frotran最多可声明高达七维的数组。integera(D1,D2,,Dn)!n维一般说来,越高维数组读数据越慢。另类声明方法:integera(5)可使用的是a(1),a(2),a(3),a(4),a(5)integera(0:5)下标可使用的是0~5,a(0),a(1),,a(5)六个元素。integera(-3:3)可以使用的是a(-3),a(-2),a(-1),a(0),,a(3)七个元素。integera(5,0:5)可用a(1~5,0~5)integerb(2:3,-1:3)可用b(2~3,-1~3)2.数组内容的设置赋初值:integera(5)dataa/1,2,3,4,5/dataa/5*3/!5个3*表示数据重复“隐含式”循环的功能设置初值:integera(5)integeridata(a(i),i=2,4)/2,3,4/!a(2)=3,a(3)=3,a(4)=4输出:write(*,*)(a(i),i=2,4)显示a(2),a(3),a(4)也可以设置累加值:(a(i),i=2,10,2)!循环执行5次,i分别是2,4,6,8,10。“隐含”选还可以多层嵌套:多维数组integera(2,2)integeri,jdata((a(i,j),i=1,2),j=1,2)/1,2,3,4/里面的循环先执行,结果:a(1,1)=1,a(2,1)=2,a(1,2)=3,a(2,2)=4F90中可以省掉data描述,直接设置初值:integer::a(5)=(/1,2,3,4,5/)!注意:括号和除号之间不能有空格。省掉data直接把初值写在声明之后时,不能像data时那样,用隐式循环对数组中部分元素设初值,每个元素必须给定初值,而且写法有点不同:integer::iinteger::a(5)=(/1,(2,i=2,4),5/)!a(1)=1!a(2)=2,a(3)=2,a(4)=2!(2,i=2,4)是隐式循环!a(5)=5f90中的隐式循环:integer::a(5)=(/i,i=1,5/)!a(1)=1,a(2)=2,a(3)=3,a(4)=4,a(5)=53.对整个数组的操作(数组广播)a=5!a是任意维数的数组,全部元素设为5a=(/1,2,3/)!右边数字数目应该和数组的大小一样a=b!a,b同样维数及大小的数组,相同位置的元素赋给aa=b+c!三个都是相同维数大小的数组,相同位置的数字相加给aa=b-ca=b*c!注意不等于矩阵的相乘,a(i,j)=b(i,j)*c(i,j)a=b/ca=sin(b)!a(i)=sin(b(i))4.对部分数组的操作a(3:5)=5a(3:)=5a(3:5)=(/3,4,5/)a(1:3)=b(4:6)a(1:10)=a(10:1:-1)!使用隐含循环的方法将数组a(1~10)的内容翻转。a(:)=b(:,2)a(:,:)=b(:,:,1)!拿数组的一部分内容使用的时候,需要注意的原测:(1)等号两边的数组元素数目要一样多。(2)同时使用多个隐含循环的时候,较低维数循环可以看作是内层的循环。5.WHERE:F95的添加功能,用来取出部分数组的内容进行设置。where命令可以经过逻辑判断来使用数组的一部分。example:!把数组a中小于3的元素值设置给bwhere(a5)b=2elsewhereb=3endwhere可以嵌套的,跟循环一样可以取名字,不过在endwhere的时候一定要加上它的名字,用来明确要结束哪个where模块:name:where(aj).and.a(i,j)>0))!还可赋值好几个条件,这里只处理二维矩阵的上三角部分且a(i,j)>0的元素a(i,j)=1/a(i,j)endforall如果只有一行代码时候也可以省掉endforall,写在同一行:forall(i=1:5,j=1:5,a(i,j)/=0)a(i,j)=1/a(i,j)forall可以多层嵌套,里面只能出现跟设置数组数值相关的程序命令,还可以在forall中使用where。不过where中不可以使用forall。forall(i=1:5)forall(j=1:5)a(i,j)=1endforallforall(j=6:10)a(i,j)=2endforallendforallforall(i=1:5)where(a(:,i)/=0)a(:,i)=1.0/a(:,i)endwhereendforall7.fortran中数组的保存规则不管数组的形状,它所有的元素都是分布在内存中同一个连续的模块当中。多维数组在内存中的连续模块排列情况是以一种列优先的方法排列的,数组存放在内存中的时候,会先放入第一个列中每个行的元素,然后再放入下一个列中每一行的元素。exmaple:a(1,1)->a(2,1)->a(3,1)=>a(1,2)->a(2,2)->a(3,2)=>a(1,3)->a(2,3)->a(3,3)也即对多维数组,会先放入维数的元素,再放入较高维数的元素。数组元素位置的计算:一个n维数组a(D1,D2,,Dn)设:sn=D1*D2**Dn则a(d1,d2,d3,,dn)在第1+(d1-1)+(d2-1)*s1++(dn-1)*sn-1个位置。使用数组时候最好用低维的下标作为内循环,这样比较快。8.可变大小的数组:(allocate,allocatable,deallocate)integer::students,error=0integer,allocatable::a(:)!定义a是可变大小的数组read(*,*)studentsallocate(a(students),stat=error)!orallocate(a(students))!申请数组内存空间deallocate(a)!释放动态数组占用的内存空间多维数组:integer,allocatable::a2(:,:)integer,allocatable::a3(:,:,:)allocate(a2(5,5))allocate(a3(5,5,5))或allocate(a2(-3:3,-3:3))相关的函数allocated可用来检查一个可变大小的数组是否已经配置内存来使用,会返回一个逻辑值。example:if(.not.allocated(a))thenallocate(a(5))endif

期末考试。。用fortran做结构力学的题目

给一个平面桁架计算程序: integer*2 li(100000) real*4 a(1000000) logical*4 results CHARACTER*20 NAM1,NAM2! WRITE(*,"(A)") " PLEASE INPUT YOUR DATE-FILE NAME------>"! READ(*,"(A)") NAM1 ! READ(*,*)! OPEN(1,FILE=NAM1,STATUS="OLD")! WRITE(*,"(/,A)") " PLEASE INPUT YOUR OUT-FILE NAME------>"! READ(*,"(A)") NAM2! OPEN(2,FILE=NAM2,STATUS="unknown") open(1,file="trus3.in",STATUS="unknown") open(2,file="trus3.out",STATUS="unknown") open(3,file="trus3.mout",STATUS="unknown") read(1,*) nn,ne,nc,np ! nn:节点总数; ne:单元总数; nc:支撑约束数;np:荷载总数 write(2,"(a)") "INITIAL PARAMETER" write(2,"(4x,4A6/4x,4I6)") "nn","ne","nc","np",nn,ne,nc,np n3=nn*3 !总自由度 n=n3-nc iu=1 iaa=iu+n3 iea=iaa+ne ix=iea+ne iy=ix+nn iz=iy+nn isq=iz+nn ish=isq+3 idc=ish+3 ist=idc+3 mal=ist+36 jia=1 jja=jia+ne jns=jja+ne nal=jns+2*nc na=10000-mal nli=1000-nal call trus3(a(iu),a(iaa),a(iea),a(ix), & a(iy),a(iz),a(isq),a(ish),a(idc), & a(ist),a(mal),li(nal),li(jia),li(jja), & li(jns),nn,ne,nc,np,n3,n,na,nli) close(1) close(2) close(3) results= SYSTEMQQ("d:\TEDIT.EXE & e:\WORKfor90\SPT1_OK\trus3.out ") results= SYSTEMQQ("d:\TEDIT.EXE & e:\WORKfor90\SPT1_OK\trus3.mout ") stop end!********************************************************************************** subroutine trus3(u,aa,ea,x,y,z,sq,sh, & dc,sk,a,li,ia,ja,ns,nn,ne,nc,np, & n3,n,na,nli) integer*2 ia(ne),ja(ne),ns(nc,2),li(nli),jod(np,2) real*4 u(n3),aa(ne),ea(ne),x(nn),y(nn),z(nn), & sq(3),sh(3),dc(3),sk(6,6),a(na),qd(np) !读节点坐标、支座约束、左右节点号、截面面积、弹性模量信息 read(1,*) (x(i),y(i),z(i),i=1,nn), & (ns(i,1),ns(i,2),i=1,nc), & (ia(i),ja(i),aa(i),ea(i),i=1,ne) write(2,"(1x,a)") "NODAL COORDINATES" write(2,"(4x,a4,3a12)") "NO.","X-COOR","Y-COOR","Z-COOR" write(2,"(4x,i4,3f12.3)") (i,x(i),y(i),z(i),i=1,nn) write(2,"(/1x,a)") "POINTS OF SUPPRESSED DISPLACEMENTS" write(2,"(2a10/(2i10))") "NO.","DIRECTION", & (ns(i,1),ns(i,2),i=1,nc) write(2,"(/1x,a)") "MEMBER DETAILS" write(2,"(4x,a4,a6,a3,2a12/ & (3x,""("",i3,"")"",i6,""-"",i2, & 2e12.3))") "NE.","I","-J","A","E", & (i,ia(I),ja(i),aa(i),ea(i),i=1,ne) !读入荷载数据: !jod(i,1)受荷节点号;jod(i,2)荷载作用方向(1表示x向;2表示x向;3表示x向);qd(i)荷载大小, write(2,"(/1x,a)") " EXTERNAL LOADS" do 999 i=1,np jod(i,1)=0 jod(i,2)=0 qd(i)=0.0 999 continue read(1,*) (jod(i,1), jod(i,2),qd(i),i=1,np) write(2,"(a10,3x,a10,a13/(2i10,f16.3))") & " NO.","DIRECTION","VALUE", & (jod(i,1),jod(i,2),qd(i),i=1,np) !求最大带宽 mx=0 do 400 i=1,ne io=iabs(ja(i)-ia(i)) !左右最大节点号差 if(io.gt.mx) mx=io400 continue nb=(mx+1)*3 nt=n3+nb iia=1 iq=iia+nt*nb ic=iq+nt iqd=ic+nt mal=iqd+np+na jjod=1 nal=jjod+2*np+nli call s410(u,aa,ea,x,y,z,sq,sh, & dc,sk,a,q,c,qd,jod,ia,ja,ns,nn,ne, & nc,np,n3,n,nb,nt) return end***************************************************************************** subroutine s410(u,aa,ea,x,y,z,sq,sh, & dc,sk,a,q,c,qd,jod,ia,ja,ns,nn,ne, & nc,np,n3,n,nb,nt) integer*2 ia(ne),ja(ne),ns(nc,2),jod(np,2) real*4 u(n3),aa(ne),ea(ne),x(nn),y(nn), & z(nn),sq(3),sh(3),dc(3),sk(6,6), & a(nt,nb),q(nt),c(nt),qd(np),l********************************************************************* 检查传入数据 *********************************************************************! write(*,"(a)") "INITIAL PARAMETER"! write(*,"(4x,4A6/4x,4I6)") "nn","ne","nc","np",nn,ne,nc,np! write(*,"(1x,a)") "NODAL COORDINATES"! write(*,"(4x,a4,3a12)") "NO.","X-COOR","Y-COOR","Z-COOR"! write(*,"(4x,i4,3f12.3)") (i,x(i),y(i),z(i),i=1,nn)! write(*,"(/1x,a)") "POINTS OF SUPPRESSED DISPLACEMENTS"! write(*,"(2a10/(2i10))") "NO.","DIRECTION",! & (ns(i,1),ns(i,2),i=1,nc)! write(*,"(/1x,a)") "MEMBER DETAILS"! write(*,"(4x,a4,a6,a3,2a12/! & (3x,""("",i3,"")"",i6,""-"",i2,! & 2f12.3))") "NE.","I","-J","A","E",! & (i,ia(I),ja(i),aa(i),ea(i),i=1,ne)! write(*,"(a10,3x,a10,a13/(2i10,f16.3))") ! & " NO.","DIRECTION","VALUE",! & (jod(i,1),jod(i,2),qd(i),i=1,np)!********************************************************************! pause 1 !总刚矩阵及荷载列阵清零 do 480 i=1,nt do 450 j=1,nb a(i,j)=0.0 450 continue q(i)=0.0 480 continue !形成荷载向量 do 544 i=1,np npd=jod(i,1)*3+jod(i,2)-3 !相应荷载位置=节点号*3+节点方向数(1 2 3)-3 q(npd)=q(npd)+qd(i)544 continue!对单元循环形成单元刚度矩阵并加入总刚矩阵 do 1120 me=1,ne write(3,*) me i=ia(me) !单元左端号 j=ja(me) !单元右端号 ao=aa(me) !单元面积 e=ea(me) !单元弹性模量 !求单元方向余弦 l=sqrt((x(j)-x(i))**2+(y(j)-y(i))**2+(z(j)-z(i))**2) xc=(x(j)-x(i))/l yc=(y(j)-y(i))/l zc=(z(j)-z(i))/l !求单刚元素 sk(1,1)=xc**2 sk(1,2)=xc*yc sk(2,1)=sk(1,2) sk(2,2)=yc**2 sk(1,3)=xc*zc sk(3,1)=sk(1,3) sk(3,2)=yc*zc sk(2,3)=sk(3,2) sk(3,3)=zc**2 sk(4,1)=-xc**2 sk(4,2)=-xc*yc sk(4,3)=-xc*zc sk(5,1)=-xc*yc sk(5,2)=-yc**2 sk(5,3)=-yc*zc sk(6,1)=-xc*zc sk(6,2)=-yc*zc sk(6,3)=-zc**2 do 870 ii=1,3 do 870 jj=1,3 sk(ii+3,jj+3)=sk(ii,jj) sk(ii,jj+3)=sk(jj+3,ii)870 continue cn=ao*e/l do 930 ii=1,6 do 930 jj=1,6 sk(ii,jj)=sk(ii,jj)*cn! write(3,*) sk(ii,jj) !!!!!!930 continue!将单刚矩阵送入总刚矩阵 i1=3*i-3 j1=3*j-3 ! pause 4 !检测断点 do 1114 jj=1,2 if(jj.eq.1) nr=i1 if(jj.eq.2) nr=j1 do 1112 j9=1,3 nr=nr+1 ii=(jj-1)*3+j9 do 1110 kk=1,2 if(kk.eq.1) n9=i1 if(kk.eq.2) n9=j1 do 1100 k=1,3 ll=(kk-1)*3+k nk=n9+k+1-nr if(nk.le.0) goto 1100 a(nr,nk)=a(nr,nk)+sk(ii,ll)1100 continue1110 continue1112 continue* pause 4 !检测断点1114 continue1120 continue !引入支座约束条件 do 1150 i=1,nc npd=ns(i,1)*3+ns(i,2)-3 a(npd,1)=a(npd,1)*(1e+12)+(1e+12) ! q(npd)=01150 continue !荷载列阵交给方程右端项 n=n3 do 1190 ii=1,n3 c(ii)=q(ii) write(3,*) c(ii) !!!!!!!!!!!!!!!!!1190 continue !调用解方程子程序 call s2000(a,c,n,nb,nt) !求得位移项交给位移列阵1220 do 1230 ii=1,n31230 u(ii)=c(ii) !输出位移结果 write(2,"(/1x,a)") "NODAL DISPLACEMENTS" write(2,"(a8,a10,2a12/(i8,3f12.5))") "no.","u","v","w", & (ii,u(3*ii-2),u(3*ii-1),u(3*ii),ii=1,nn) !输出内力结果 write(2,"(/1x,a)") "FORCE IN THE MEMBERS" write(2,"(4x,a4,a6,a3,a16)") "ne","i","-j","force" do 1610 me=1,ne i=ia(me) j=ja(me) ao=aa(me) e=ea(me) l=sqrt((x(j)-x(i))**2+(y(j)-y(i))**2+(z(j)-z(i))**2) xc=(x(j)-x(i))/l yc=(y(j)-y(i))/l zc=(z(j)-z(i))/l dc(1)=xc dc(2)=yc dc(3)=zc i1=3*i-3 j1=3*j-3 do 1510 i3=1,3 j3=i1+i3 j2=j1+i3 sq(i3)=u(j3) sh(i3)=u(j2)1510 continue a1=0.0 a2=0.0 do 1570 ii=1,3 a1=a1+dc(ii)*sq(ii) a2=a2+dc(ii)*sh(ii)1570 continue !内力=面积*弹性模量*应变(两端位移差与总长比值) fc=ao*e*(a2-a1)/l write(2,"(4x,""("",i2,"")"",i6,""-"",i2,f16.5)") & me,ia(me),ja(me),fc1610 continue return end subroutine s2000(a,cc,n,nb,nt) !半带宽解线性方程组子程序 real*4 a(nt,nb),cc(nt)2000 do 2940 ii=1,n ik=ii do 2920 jj=2,nb ik=ik+1 cn=a(ii,jj)/a(ii,1) jk=0 do 2890 kk=jj,nb jk=jk+12890 a(ik,jk)=a(ik,jk)-cn*a(ii,kk) a(ii,jj)=cn2920 cc(ik)=cc(ik)-cn*cc(ii)2940 cc(ii)=cc(ii)/a(ii,1) do 3010 iz=2,n ii=n-iz+1 do 3000 kk=2,nb jj=ii+kk-13000 cc(ii)=cc(ii)-a(ii,kk)*cc(jj)3010 continue return end trus3.in6,9,9,20, 0, 4.0,0, 0,-4.0,0,10.0, 0,12.0,0, 4.0,12.0,0,-4.0,12.0,-7.0,0,1,1,1,2,1,3,2,1,2,2,2,3,3,1,3,2,3,3,5,3,3.0e-4,1.2e+12, 4,3,3.0e-4,1.2e+12, 4,1,3.0e-4,1.2e+12, 4,5,3.0e-4,1.2e+12, 5,2,3.0e-4,1.2e+12, 6,1,3.0e-4,1.2e+12,4,6,3.0e-4,1.2e+12,5,6,3.0e-4,1.2e+12,6,2,3.0e-4,1.2e+12,6,1, 2500.0, 6,2,-4330.1,

fortran 程序文件名为变量 求指导

你这逻辑非常昏乱啊。第一:Fortran 的循环,是用 Do,而不是用 for。你确定你用的是 Fortran 书写代码?第二:h 是变量,变量类型,有整型,浮点型,逻辑型等。它与txt的文件名没有任何联系。

求帮忙解读一小段FORTRAN程序。关键是REWIND。这一段到底怎么读取数据的。

rewind是将文件的位置指针退回到第一个记录。从而实现两次读取“1”文件的数据

PGI fortran和intel fortran哪个好

这个具体还要看自己的个人感受了。据我所知,intel的编译器对于混合编程支持的比较广泛,而且自带有强大的函数库(像imsl),而pgi的编译器则是由所谓的mkl等支撑系统。当然如果你只是初学的话,其实无所谓哪款好坏了。intel的编译器的图形界面做的比较好。如果你不小心下载的pgi是命令行输入的话,估计的蛋疼的输入方式能让你抓狂的。总体推荐intel,还有康柏的编译器。

PGI的Fortran 用起来和intel 的有区别吗

compaq fortran 是早起版本,后被intel公司收购,改名intel fortran,版本有10.0 11.0 12.0等等,基本兼容compaq fortran,功能更强大

FORTRAN运行出现Stack Overflow什么意思?

这是静态数据溢出,有一下几种可能,第一你的数组值超出范围,第二你的计算值过大,第三你给的内存地址较少,在数据传输过程中溢出,或者是其他的情况!

fortran中user是什么意思

没有听说 user 这个关键词。你说的可能是 use,这是使用模块的语法。假如有个模块叫 a,则通过use a 来使用这个模块。更多的信息,可以翻阅相关书籍,module 一类的章节。同时,windows 提供了一个API库,叫 user32。某些windows下的编译器可以使用这个函数库。用法是:use user32即:使用 user32 这个API库

fortran程序数组越界?急求助……

! 1--H2,2--CO,3--CO2,4--CH3OH,5--H2O,6--DME real ccat(100)改为! 1--H2,2--CO,3--CO2,4--CH3OH,5--H2O,6--DME real ccat(0:100)

fortran90编程:输入8个数,求其最大值,并判断最大值是否唯一,输出最大值及是否唯一结论。

al staffer in an airborne tr

fortran95 sgl安装问题

SGL 是在 Compaq Visual Fortran 上开发的。其 lib,mod 文件的格式与 Visual Studio 不同。你只能向彭国伦寻求 Intel Fortran 版本。(他是否乐意给你,我不确定)

Fortran里面dimension A(6,3)是什么意思?

定义一个 6*3 的数组,名字叫 a

fortran程序问题

单独一行的是if语句而不是if块,不需要加end if

fortran读取txt文件出错!!求大神!!!!

你给出的代码既不是设置的格式(而是定义语句),也不是读取语句(而是输出语句)。你的错误发生在读取语句,即 read 语句,而不是 write 语句。有问题请追问!

fortran错误LNK1120/LNK2001。求高手解答~

unresolved external symbol _TT

fortran this hollerith or character constant is too long 怎么改

99

求fortran程序,具体是在整数M到N之间,求与E的最大公约数为1的整数,只要一个,第一位就可以

运行fortran时候,出现【user breakpoint called from code at ox75091946】这种提示,怎么办

如果是读文件出现这个问题,建议你把文件用matlab重新读写一遍在用

用户自行输入起始值和终值,产生随机数的个数,fortran程序总是出错???

function里面不用动态数组就好了,你的size已经传递到num里面了,所以function直接声明:integer::numreal::get_random(num)而integerface里面改一下就好了,另外动态数组是不是该释放的??deallocate??

用intel fortran 编写fortran程序时的书写格式与fortran90有什么不同?

如果写程序时语法绝对的严格,那么不同之处就很少了,但如果语句较为随意那区别就大了,比如以下就是几条(太多了,随便说几个而已,且pgf90和f90对语句要求很相近):1. 子程序被调用时,如果变量没有被定义为save型时,如果第二次调用没有初始化就参与计算会出错说being used without being defined(pgf90就会自动save而不会报错)2. 打印格式要求严格,最好要 "(f8.3)","(i3)"之类的,且用一个format语句最好3. allocate一个数组之后,如果没有deallocate就再次allocate就会报错,deallocate的时候如果deallocate(array(m,n))也会报错,要deallocate(array),即不能给定维数5. x=(/a,b,c,d/)时,a,b,c,d要么都是实数(要有小数点),要么都是整数(不出现小数点)6. 对于数组求最大值(最小值)所在位置,只能用 maxwind=0.0 do i=m1,m2 do j=n1,n2 xmw=sqrt(u(i,j)**2+v(i,j)**2) if(xmw>maxwind) then maxwind=xmw; xiw=float(i);xjw=float(j) endif enddo enddo 而不能用 maxwind=maxval(sqrt(u(m1:m2,n1:n2)**2+v(m1:m2,n1:n2)**2)) do i=m1,m2 do j=n1,n2 xmw=sqrt(u(i,j)**2+v(i,j)**2) if(xmw=maxwind) then xiw=float(i);xjw=float(j) exit endif enddo enddo pgf90就可以,可能是ifort计算精度默认太高的原因

fortran中将数组输出至txt文件的问题

"shot-blend1.sgd"难道不是txt文件么?你为啥要从txt读入,再写入txt呢?写入txt文件是最简单的了。Open( 12 , File = 文件名 )Do i = 1 , 2000 write( 12 , * ) Recd( : , i )End DoClose( 12 )既可

大家好,小弟在用ivf编fortran时碰到一个错误,恳请大家帮我看看这个是什么原因

语法错误。应该用::的地方用了(。最好是把整个错误提示都写在这里。比如说,错误在哪一行。这样才帮着找。或者把源程序的文本贴一下。

Nature:从FortranAlexNet代码改变了科学界

选自Nature 作者:Jeffrey M. Perkel 机器之心编译 机器之心编辑部 2019 年,「事件视界望远镜」团队拍下了第一张黑洞照片。这张照片并非传统意义上的照片,而是计算得来的——将美国、墨西哥、智利、西班牙和南极多台射电望远镜捕捉到的数据进行数学转换。该团队公开了所用代码,使科学社区可以看到,并基于此做进一步的 探索 。 而这逐渐成为一种普遍模式。从天文学到动物学,每一个伟大的现代科学发现背后都有计算机的身影。斯坦福大学计算生物学家、2013 年诺贝尔化学奖获得主 Michael Levitt 表示,现在的笔记本电脑在内存和时钟速度方面是 1967 年其实验室计算机的一万倍。「今天,我们拥有大量算力。但问题是,这仍然需要人类的思考。」 如果没有能够处理研究问题的软件以及知道如何编写和使用软件的研究人员,计算机再强大也是无用。「现在的研究与软件紧密相关,软件已经渗透到科研的方方面面。」软件可持续性研究所(Software Sustainability Institute)负责人 Neil Chue Hong 如是说。 最近,Nature 上的一篇文章试图揭示科学发现背后的重要代码,正是它们在过去几十年中改变了科研领域。这篇文章介绍了对科学界带来重大影响的十个软件工具,其中就包括与人工智能领域密切相关的 Fortran 编译器、arXiv、IPython Notebook、AlexNet 等。 语言先驱:Fortran 编译器(1957) 首批出现的现代计算机对用户并不友好。编程实际上是由手工完成的,通过电线连接一排排电路。后来的机器语言和汇编语言允许用户使用代码进行计算机编程,但这两种语言依然要求使用者对计算机架构有深入了解,导致很多科学家无法使用它们。 20 世纪 50 年代,随着符号语言的发展,尤其是「公式翻译」语言 Fortran 的出现,上述境况发生了改变。Fortran 语言由 IBM 的约翰 · 巴科斯(John Backus)团队开发。借助 Fortran,用户可以使用 x = 3 + 5 等人类可读的指令进行计算机编程,之后编译器将这类指令转化为快速高效的机器码。 这台使用 Fortran 编译器编程的 CDC 3600 计算机于 1963 年移送至美国国家大气研究中心。(图源:美国大气科学研究大学联盟 / 科学图片库。) 在早期,编程人员使用穿孔卡片(punch card)输入代码,复杂的模拟可能需要数万张穿孔卡片。不过,Fortran 使得并非计算机科学家的研究者也能够进行编程。普林斯顿大学气候学家 Syukuro Manabe 表示:「我们第一次靠自己进行编程。」他和同事使用 Fortran 语言开发了首批成功的气候模型之一。 60 多年过去了,Fortran 依然广泛应用于气候建模、流体动力学、计算机化学,以及其他涉及复杂线性代数并需要强大计算机快速处理数字的学科。Fortran 代码运行速度很快,仍然有很多编程人员知道如何写 Fortran。古老的 Fortran 代码库依然活跃在世界各地的实验室和超级计算机上。 信号处理器:快速傅里叶变换(1965) 当天文学家扫描天空时,他们捕捉到了随时间变化的复杂信号的杂音。为了理解这些无线电波的性质,他们需要观察这些信号作为频率函数的样子。一种被称为傅里叶变换(Fourier transform)的数学过程允许科学家实现这一点。但问题在于傅里叶变换并不高效,对大小为 N 的数据集它需要进行 N 次运算。 1965 年,美国数学家 James Cooley 和 John Tukey 开发了一种加速傅里叶变换过程的方法。借助递归(recursion)这种「分而治之」的编程方法(其中算法可以实现重复地再运用),快速傅里叶变换(fast Fourier transform, FFT)将计算傅里叶变换问题简化为 N log_2(N) 个步骤。速度也随着 N 的增加而提升。对于 1000 个点,速度提升约 100 倍;对于 100 万个点,速度提升约 5 万倍。 牛津大学数学家 Nick Trefethen 表示,FFT 的发现实际上是一种「再发现」,因为德国数学家卡尔 · 弗里德里希 · 高斯在 1805 年就完成了该发现,不过从未发表。但是,James Cooley 和 John Tukey 开启了 FFT 在数字信号处理、图像分析和结构生物学等领域中的应用。Trefethen 认为 FFT「是应用数学与工程领域伟大的发现之一。」FFT 已经在代码中实现了很多次,其中一种流行的变体是 FFTW(「西方最快的傅里叶变换」)。 默奇森天文望远镜,使用快速傅里叶变换来收集数据。 劳伦斯伯克利国家实验室(Lawrence Berkeley National Laboratory)分子生物物理学和综合生物成像部门主任 Paul Adams 回忆称,当他在 1995 年改进细菌蛋白 GroEL 的结构时,即使使用 FFT 和一台超级计算机,也需要「很多很多个小时,甚至是几天」的计算。但要没有 FFT,很难想象这件事要怎么做,花的时间将难以估量。 线性代数运算标准接口:BLAS(1979) 科学计算通常涉及使用向量和矩阵的数学运算,这些运算相对简单,但计算量大。20 世纪 70 年代,学界并没有出现一套普遍认可的执行此类运算的工具。因此,科研工作者不得不花费时间设计高效的代码来做基础的数学运算,导致无法专注于科学问题本身。 编程世界需要一个标准。1979 年,基础线性代数子程序库(Basic Linear Algebra Subprograms, BLAS)应运而生。直到 1990 年,该标准仍然在发展变化,定义了数十条涵盖向量和矩阵运算的基本程序。 田纳西州大学计算机科学家、BLAS 开发团队成员之一 Jack Dongarra 表示,BLAS 实际上将矩阵和向量运算简化成了像加减法一样的基础计算单元。 Cray-1 超级计算机。(图源:科学 历史 图像 / Alamy) 德州大学奥斯汀分校计算机科学家 Robert van de Geijn 表示:「BLAS 可能是为科学计算而定义的最重要接口。」除了为常用函数提供标准名称之外,研究者可以确保基于 BLAS 的代码能够以相同的方式在任何计算机上运行。该标准也使得计算机制造商能够优化 BLAS 实现,以实现硬件上的快速运行。 40 多年来,BLAS 代表了科学计算堆栈的核心,使得科学软件持续发展。乔治华盛顿大学机械与航空航天工程师 Lorena Barba 将 BLAS 称为「五层代码内的核心机制」。 预印本平台:arXiv.org(1991) 20 世纪 80 年代末,高能物理领域的研究者往往会把自己提交的论文邮寄给同行审阅,这是一种礼仪,但只邮寄给少数几个人。「那些处于食物链底端的人依赖于顶端人的施舍,这往往会把非精英机构中有抱负的研究者完全排除在特权圈之外,」物理学家 Paul Ginsparg 曾在 2011 年的一篇文章中写道。 1991 年,洛斯阿拉莫斯国家实验室(Los Alamos National Laboratory)的 Ginsparg 写了一个电子邮件自动回复器,以建立公平的竞争环境。邮件订阅者每天都会收到一份预印本列表,每份论文都带有标识符。如此一来,世界各地的用户都可以通过一封电子邮件提交或检索来自上述实验室计算机系统的论文。 Ginsparg 原本计划将文章保留三个月,将范围限制在高能物理社区,但他的同事劝他去掉了这些限制。「就是在那一刻,它从布告栏转变成了档案库,」Ginsparg 表示。在这之后,大批论文开始涌入,其学科之广远远超出了 Ginsparg 的预期。1993 年,Ginsparg 把这个系统移植到互联网上。1998 年,他正式将该系统命名为 arXiv.org。 如今,30 岁的 arXiv 收录了 180 万份预印本文章,且全部免费阅读,其每月论文提交量超过 15000 份,每月下载量高达 3000 万次。「不难看出 arXiv 为何如此受欢迎,」Nature Photonics 的编辑曾表示,「该系统为研究者提供了一种快捷、方便的科研方式,可以告诉大家你在做什么、什么时间做的,省去了传统期刊同行评审的繁琐。」 该网站的成功还对生物学、医学、 社会 学等其他学科类似存储库的建立起到了助推作用,成千上万份新冠病毒相关研究预印本的发布就是一个例证。 数据 探索 器:IPython Notebook (2011) Fernando Pérez 在 2001 年决定「探寻拖延症」,当时他是一名研究生,决定采用 Python 的核心组件。 Python 是一种解释型语言,意味着程序会一行一行地执行。编程人员可以使用一种被称为「读取 - 求值 - 输出循环(REPL)」的计算型调用和响应(call-and-response)工具,他们可以键入代码,然后由解释器执行代码。REPL 允许快速 探索 和迭代,但 Pérez 指出 Python 并不是为科学构建的。例如,它不允许用户轻松地预加载代码模块或保持数据可视化的打开状态。因此 Pérez 创建了自己的版本。 2001 年 12 月,Pérez 发布了交互式 Python 解释器 IPython,它共有 259 行代码。10 年后,Pérez 和物理学家 Brian Granger、数学家 Evan Patterson 合作,将该工具迁移到 Web 浏览器,创建了 IPython Notebook,掀起了一场数据科学的革命。 和其他计算型 notebook 一样,IPython Notebook 将代码、结果、图形和文本组合到了单个文档中。但与其他此类型项目不同的是,IPython Notebook 是开源的,欢迎广大社区开发者为其发展做出贡献,并且支持 Python 这种科学家常用的语言。2014 年,IPython 演变成 Project Jupyter,支持约 100 种语言,并允许用户像在自己计算机上一样轻松地在远程超级计算机上 探索 数据。 Nature 在 2018 年指出:「对数据科学家而言,Jupyter 已经成为一种实际标准」。那时,GitHub 上已经有 250 万个 Jupyter notebook,如今已有近一千万个,其中包括 2016 年发现引力波和 2019 年黑洞成像的记录。Pérez 表示:「我们能为这些项目做出一点贡献也是非常有意义的」。 快速学习器:AlexNet(2012) 人工智能(AI)可分为两类,一类使用编码规则,另一类让计算机通过模拟大脑的神经结构来「学习」。多伦多大学计算机科学家、图灵奖获得者 Geoffrey Hinton 表示:「几十年来,人工智能研究者一直将第二种研究方法视为『荒谬』」。2012 年,Hinton 的研究生 Alex Krizhevsky 和 Ilya Sutskever 证明了事实并非如此。 在当年的 ImageNet 的年度竞赛上,研究者们被要求在包含 100 万张日常物品图像的数据库上训练 AI,然后在另一个图像集上测试算法。Hinton 表示:「在当时,最佳算法会在 1/4 的图像上出现分类错误」。Krizhevsky 和 Sutskever 开发的 AlexNet 是一种基于神经网络的深度学习算法,该算法将误差率降至 16%。Hinton 表示:「我们几乎将误差率降低了一半」。 Hinton 认为,该团队在 2012 年的成功反映出足够大的训练数据集、出色的编程和图形处理单元(最初为了提高计算机视频性能的处理器)新力量的结合。他表示:「突然之间,我们就能够将该算法的速度提高 30 倍,或者说可以学习 30 倍的数据」。 Hinton 表示真正的算法突破实际上发生在 3 年前。当时他的实验室创建了一个比几十年来不断完善的传统 AI 更能准确识别语音的神经网络。虽然准确率只稍微提升了一点,但已值得被记住。 AlexNet 及相关研究的成功带来了实验室、临床等多个领域深度学习的兴起。它让手机能够理解语音查询,也让图像分析工具能够轻松地从显微照片中挑选出细胞。这就是 AlexNet 在改变科学、改变世界的工具中占有一席之地的原因。

急问!Fortune和Fortran是一种语言吗?

FORTUNE语言,比较老的计算机语言,比尔当年创造的第一代计算机语言.医学模型分析都是一些数值分析程序,很多都是用Fortune等语言来编程的.Fortune语言应用于比较专业的领域,一般接触不到的,也就是说你学了也基本上应用不上,而且学起来是非常困难的!而FORTRAN是英文“FORmula TRANslator”的缩写,译为“公式翻译器”,它是世界上最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。FORTRAN语言以其特有的功能在数值、科学和工程计算领域发挥着重要作用。这两种语言的共同点是都属于比较老的计算机语言。

求教关于NCL中libc.so.6和libgfortran.so.3找不到的问题

For most Linux binaries, NCL was built using gcc and gfortran. This may cause a dependency on a file called "libgfortran.so.x". If you have a different version of gfortran installed on your system than what NCL was built with, then you may get an error message that "libgfortran.so.x can"t be found". If you see this, then you can try one of these things: Try to find the libgfortran.so.x file that it is complaining about. You can try the "locate" command. For example if the file is "libgfortran.so.1": locate libgfortran.so.1If found, add this path to your LD_LIBRARY_PATH environment variable. For example, if "libgfortran.so.1" is the file you need, and it is in /usr/local/lib, then look at the instructions below, depending on what shell you are running, and depending on whether LD_LIBRARY_PATH is already set: env | grep LD_LIBRARY_PATHFrom csh or tcsh, if not set: setenv LD_LIBRARY_PATH /usr/local/libFrom csh or tcsh, if already set: setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH:/usr/local/libFrom bash or ksh, if not set: export LD_LIBRARY_PATH=/usr/local/libFrom bash or ksh, if already set: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/libFrom sh, if not set: LD_LIBRARY_PATH=/usr/local/lib export LD_LIBRARY_PATHFrom sh, if already set: LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib export LD_LIBRARY_PATHInstall the "compat-libgfortran" runtime library. See one of these sites for starters: http://rpmfind.net/linux/rpm2htm ... mpat-libgfortran-41 https://admin.fedoraproject.org/ ... 7a1a58108960859779f Install the version of gfortran that your version of NCL was built with. (It is possible to have multiple versions of gfortran installed on the same system without conflict.) It may then be necessary to set the LD_LIBRARY_PATH environment variable to the path of the "libgfortran.so.x" file. If all else fails, then send email to ncl-install@ucar.edu. You need to be a member in order to post.

求教关于NCL中libc.so.6和libgfortran.so.3找不到的问题

For most Linux binaries, NCL was built using gcc and gfortran. This may cause a dependency on a file called "libgfortran.so.x". If you have a different version of gfortran installed on your system than what NCL was built with, then you may get an error message that "libgfortran.so.x can"t be found". If you see this, then you can try one of these things: Try to find the libgfortran.so.x file that it is complaining about. You can try the "locate" command. For example if the file is "libgfortran.so.1":

fortran 里面的goto语句怎么用?

if(C) 10,20,30等效于if ( c<0) goto 10if( c==0) goto 20if( c>0) goto 30这是一种非常陈旧的,不推荐使用的语法。

大神。怎么用fortran将10进制.dat文件转化成二进制.grd文件?

只要你知道txt文件中数据的格式和grd文件中数据的格式,是可以转换的。read(2) h(it) 是读无格式文件,也就是所谓的读取二进制的时候用的。open(2,file="xifeng.txt",form="formatted")这一句中文件2是文本文件,相互冲突,自然不行。同理,write(1,*) h(it)是有格式输出,而文件1是二进制文件,一样会报错。

在fortran中rand()的用法是怎样的?麻烦举个例子

用random_number

fortran程序在Linx系统下运行出现的问题

贴出你的代码看看

fortran中parameter(n=30)

就是 1.0乘以10的-30次方. 与 1.0E-30 类似,只不过是双精度的.

fortran中“parameter语句”是什么意思?

定义常量。定义后,常量符号的值不可变更。比如:integer, parameter :: npot=600000则代表定义一个integer类型的常量npot,它的值为600000。此后的代码不可以更改npot的值,也就是说不可以出现:npot=1234之类的代码:)

fortran90中associated语句什么意思?怎么用?

简单的说associated返回一个逻辑值,用于指针的语法ASSOCIATEDInquiry Intrinsic Function (Generic): Returns the association status of its pointer argument or indicates whether the pointer is associated with the target. Syntax result = ASSOCIATED (pointer [, target])pointer (Input) Must be a pointer (of any data type).target (Optional; input) Must be a pointer or target. The pointer (in pointer or target) must not have an association status that is undefined. Results: The result is a scalar of type default logical.If only pointer appears, the result is true if it is currently associated with a target; otherwise, the result is false.If target also appears and is a target, the result is true if pointer is currently associated with target; otherwise, the result is false.If target is a pointer, the result is true if both pointer and target are currently associated with the same target; otherwise, the result is false. (If either pointer or target is disassociated, the result is false.)

请教:fortran程序中 北京时间 转换为 国际时间 的程序代码 如何写?

北京时间减8小时就是世界时。 8小时=8*60*60=28800秒。 把下面的代码复制成get_new_time.f然后编译:pgf90 -o get_new_time get_new_time.f比如运行: get_new_time 2008071620 -28800 会输出2008071612_00:00 get_new_time.f: program new_time!yuanbing, 2006 character*16 ndate, odate, idt character*19 odate1 character*256 cm,cn real m,n integer idts,method odate=" " numarg = iargc() if(numarg<2) call help if(numarg==2) method = 1 if(numarg==3) then method = 2 endif if(numarg==4) then call getarg(4,cn) read(cn,*) n if(n>0) method = 3 if(n==0 ) call help if(n<0 ) method = 4 endif call getarg(1,odate1) if(method == 3 .or. method == 4) then odate(1:4)=odate1(1:4) odate(5:6)=odate1(6:7) odate(7:8)=odate1(9:10) if(len(trim(odate1))>=13) odate(9:10)=odate1(12:13) if(len(trim(odate1))>=16) then odate(11:11)="_" odate(12:13)=odate1(15:16) endif if(len(trim(odate1))>=19) then odate(14:14)=":" odate(15:16)=odate1(18:19) endif else odate=odate1(1:16) endif call getarg(2,idt) read(idt,*) idts! print*,odate,method call geth_newdate (ndate, odate, idts) if(method == 1 .or. method == 4) then write(*,"(a16)") ndate else write(*,"(a19)") ndate(1:4)//"-"//ndate(5:6)//"-"//ndate(7:8)// - "_"//ndate(9:10)//":"//ndate(12:13)//":"//ndate(15:16) endif end!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine geth_newdate (ndate, odate, idts) implicit none!**********************************************************************!! purpose - from old date ("YYYYMMDDHH_MM:SS") and time in! seconds, compute the new date.!! on entry - odate - the old hdate.! idts - the change in time in seconds.!! on exit - ndate - the new hdate.! idts - the change in time in seconds.!!********************************************************************** integer idts character*(*) ndate, odate integer nlen, olen!! Local Variables!! yrold - indicates the year associated with "odate"! moold - indicates the month associated with "odate"! dyold - indicates the day associated with "odate"! hrold - indicates the hour associated with "odate"! miold - indicates the minute associated with "odate"! scold - indicates the second associated with "odate"!! yrnew - indicates the year associated with "ndate"! monew - indicates the month associated with "ndate"! dynew - indicates the day associated with "ndate"! hrnew - indicates the hour associated with "ndate"! minew - indicates the minute associated with "ndate"! scnew - indicates the second associated with "ndate"!! mday - a list assigning the number of days in each month! dth - the number of hours represented by "idts"! i - loop counter! nday - the integer number of days represented by "idts"! nhour - the integer number of hours in "idts" after taking out! all the whole days! nmin - the integer number of minutes in "idts" after taking out! all the whole days and whole hours.! nsec - the integer number of minutes in "idts" after taking out! all the whole days, whole hours, and whole minutes.! integer yrnew, monew, dynew, hrnew, minew, scnew integer yrold, moold, dyold, hrold, miold, scold integer mday(12), nday, nhour, nmin, nsec, i real dth logical opass!************************* Subroutine Begin *************************!! Assign the number of days in a months! mday( 1) = 31 mday( 2) = 28 mday( 3) = 31 mday( 4) = 30 mday( 5) = 31 mday( 6) = 30 mday( 7) = 31 mday( 8) = 31 mday( 9) = 30 mday(10) = 31 mday(11) = 30 mday(12) = 31!! Break down old hdate into parts! hrold = 0 miold = 0 scold = 0 olen = len(odate) read(odate(1:4), "(I4)") yrold read(odate(5:6), "(I2)") moold read(odate(7:8), "(I2)") dyold if (olen.ge.10) then read(odate(9:10),"(I2)") hrold if (olen.ge.13) then read(odate(12:13),"(I2)") miold if (olen.ge.16) then read(odate(15:16),"(I2)") scold endif endif endif!! Set the number of days in February for that year.! mday(2) = 28 if (mod(yrold,4).eq.0) then mday(2) = 29 if (mod(yrold,100).eq.0) then mday(2) = 28 if (mod(yrold,400).eq.0) then mday(2) = 29 endif endif endif!! Check that ODATE makes sense.! opass = .TRUE.! Check that the month of ODATE makes sense. if ((moold.gt.12).or.(moold.lt.1)) then print*, "GETH_NEWDATE: Month of ODATE = ", moold opass = .FALSE. endif! Check that the day of ODATE makes sense. if ((dyold.gt.mday(moold)).or.(dyold.lt.1)) then print*, "GET_NEWDATE: Day of ODATE = ", dyold opass = .FALSE. endif! Check that the hour of ODATE makes sense. if ((hrold.gt.23).or.(hrold.lt.0)) then print*, "GET_NEWDATE: Hour of ODATE = ", hrold opass = .FALSE. endif! Check that the minute of ODATE makes sense. if ((miold.gt.59).or.(miold.lt.0)) then print*, "GET_NEWDATE: Minute of ODATE = ", miold opass = .FALSE. endif! Check that the second of ODATE makes sense. if ((scold.gt.59).or.(scold.lt.0)) then print*, "GET_NEWDATE: Second of ODATE = ", scold opass = .FALSE. endif if (.not.opass) then print*, "Crazy ODATE: ", odate(1:olen), olen STOP "Error_odate"! stop endif!! Date Checks are completed. Continue.!!! Compute the number of days, hours, minutes, and seconds in idts! if(idts>=0) then nday = idts/86400 ! Integer number of days in delta-time nhour = mod(idts,86400)/3600 nmin = mod(idts,3600)/60 nsec = mod(idts,60) scnew = scold + nsec if (scnew .ge. 60) then scnew = scnew - 60 nmin = nmin + 1 end if minew = miold + nmin if (minew .ge. 60) then minew = minew - 60 nhour = nhour + 1 end if hrnew = hrold + nhour if (hrnew .ge. 24) then hrnew = hrnew - 24 nday = nday + 1 end if dynew = dyold monew = moold yrnew = yrold do i = 1, nday dynew = dynew + 1 if (dynew.gt.mday(monew)) then dynew = dynew - mday(monew) monew = monew + 1 if (monew .gt. 12) then monew = 1 yrnew = yrnew + 1 mday(2) = 28 if (mod(yrnew,4).eq.0) then mday(2) = 29 if (mod(yrnew,100).eq.0) then mday(2) = 28 if (mod(yrnew,400).eq.0) then mday(2) = 29 endif endif endif end if endif enddo else nday = -idts/86400 nhour = -mod(idts,86400)/3600 nmin = -mod(idts,3600)/60 nsec = -mod(idts,60) scnew = scold - nsec if (scnew .lt. 0) then scnew = 60 + scnew nmin = nmin + 1 end if minew = miold - nmin if (minew .lt. 0) then minew = 60 + minew nhour = nhour + 1 endif hrnew = hrold - nhour if (hrnew .lt. 0) then hrnew = 24 + hrnew nday = nday + 1 end if dynew = dyold monew = moold yrnew = yrold do i = 1, nday dynew = dynew - 1 if (dynew.lt.1) then monew = monew - 1 dynew = mday(monew) - abs(dynew) if (monew .lt. 1) then monew = 12 dynew = mday(monew) - abs(dynew) yrnew = yrnew - 1 mday(2) = 28 if (mod(yrnew,4).eq.0) then mday(2) = 29 if (mod(yrnew,100).eq.0) then mday(2) = 28 if (mod(yrnew,400).eq.0) then mday(2) = 29 endif endif endif endif endif enddo endif!! Now construct the new mdate! nlen = len(ndate) if (nlen.ge.16) then write(ndate,19) yrnew, monew, dynew, hrnew, minew, scnew 19 format(I4,I2.2,I2.2,I2.2,"_",I2.2,":",I2.2) else if (nlen.eq.13) then write(ndate,16) yrnew, monew, dynew, hrnew, minew 16 format(I4,I2.2,I2.2,I2.2,"_",I2.2) else if (nlen.eq.10) then write(ndate,13) yrnew, monew, dynew, hrnew 13 format(I4,I2.2,I2.2,I2.2) else if (nlen.eq.8) then write(ndate,10) yrnew, monew, dynew 10 format(I4,I2.2,I2.2) endif!************************** Subroutine End ************************** end subroutine help print* print*,"usage: " print*," get_new_time.exe date_time idts [m] [n]" print* print*,"if m,n not given, date_time in YYYYMMDDHH_MM:SS" print*," ouput in YYYYMMDDHH_MM:SS" print* print*,"if m given,n not, date_time in YYYYMMDDHH_MM:SS" print*," ouput in YYYY-MM-DD_HH:MM:SS" print* print*,"if m,n given,n>0, date_time in YYYY-MM-DD_HH:MM:SS" print*," ouput in YYYY-MM-DD_HH:MM:SS" print* print*,"if m,n given,n<0, date_time in YYYY-MM-DD_HH:MM:SS" print*," ouput in YYYYMMDDHH_MM:SS" print* print*,"Here, idts means the time inteval in seconds. " print*," idts may be postive or negtive" stop " " end

fortran中gt、 le、 len分别代表什么意思

1、GE:大于等于号(&gt;=);2、GT是大于号(>);3、LE是小于等于号(<=);4、LT是小于号(<)。扩展资料:最大特性是接近数学公式的自然描述,在计算机里具有很高的执行效率。易学,语法严谨。可以直接对矩阵和复数进行运算,这一点类似matlab。自诞生以来广泛地应用于数值计算领域,积累了大量高效而可靠的源程序。很多专用的大型数值运算计算机针对Fortran做了优化。广泛地应用于并行计算和高性能计算领域。参考资料:百度百科-公式翻译器

fortran 怎么找一组数中最小值

minval(数组名)

【求助】Fortran编译的几个问题,求大师解答!多谢!

Declaration of routine "SETUP_X_GRID" conflicts with a previous declaration这个是声明的SETUP_X_GRID跟其他子程序或者公用变量名冲突了The number of subscripts is incorrect. [X] 这个是变量X是一维变量,但在1095行引用的时候写了两个下标

Fortran 中intent表示什么意思

under the awning

fortran90中的intent(in)是什么意思?

O(∩_∩)O~INTENT属性哑实结合是在两个程序单元间传递数值的主要手段,主程序中实元2.0与过程中哑元X结合,就使X有值2.0,也即把主程序中2.0的值传递给子程序中的X,该值可供子程序运算。反之,如果子程序中的变量Y在子程序执行完后有值3.0,它与实元R结合后则使调用程序单元中的实元变量R得值3.0。在F77中,不能确切地说明哑元的目的。它们到底是用于把数据传入到过程中的,还是用于把数据传出到调用它的程序单元中的,或是两者兼而有之的,这个概念是含糊的。在F90中,为了避免当过程内部变量值变化后返回到引用的程序单元时可能造成的混淆情况,在过程的变量类型的定义中,可以对哑元指定意图说明的INTENT属性。哑元按数据传输特性可分为输入输出两用、仅用于输入和仅用于输出。其一般形式为:在类型定义语句中:类型,INTENT(意图说明符) :: 哑元名表或用INTENT语句 :INTENT(意图说明符) :: 哑元名表意图说明符为以下字符串:IN 指明哑元仅用于向过程提供数据,过程的执行期间哑元不能被重定义或成为未定义的,相联合的实元可以是常数、变量、数组以及它们的算术表达式。OUT 指明哑元用于把过程中的数据传回调用过程的程序,与之相结合的实元只允许是变量,不得为常数或算术表达式。INOUT 指明哑元既可以用于向过程提供数据,也可用于向调用程序返回数据,与之相结合的实元只允许是变量。INTENT属性不能在主程序说明语句中出现,只能在过程的哑元说明语句中使用。它是可选的,可省略。但现代特性的编程中应提倡使用INTENT属性,因为这样能增加可读性和可维护性,还能防止编程中的一些错误。因为一旦哑实结合,哑元和实元始终是同一个值,如果过程中给有属性INTENT(IN)的哑元重新赋值,也将改变调用程序单元中实元的值,而这是不应该的。这样,如在程序执行部分中误把有INTENT(IN)属性的哑元赋值时,操作系统就会提示。

Fortran 中intent表示什么意思

intent(IN) 表示这个参数是输入的 intent(OUT) 表示参数是输出的 intent(INOUT)表示这个参数同时用于两个方向的数据传递

用fortran产生十万个随机数并把他们由大到小排序

还好多不多好的好的好的话不多说电话号

fortran中close候怎么没有数据

这个程序里,open语句(open (1,file="sa0.dat"))在do loop(do 100, i=1,40)之前,而close语句(close(1))在do loop里面,所以当i=1时,把结果write到sa0.dat里后,close了。所以i=2开始起,因为没有 open (1,file="sa0.dat") , 所以运行结果无法write到sa0.dat里。如果想把所有结果write到sa0.dat里,那么应该把close(1)放到do loop(do 100, i=1,40)结束之后(也就是放到100 continue 之后)。

求wigner ville 分布的程序,要fortran or c写的。已附上matlab程序,转换也成

if (nargin .eq. 0) then error("At least one parameter required")end ifxrow = size(x,1)xcol = size(x,2)if (nargin .eq. 1) then t=1:xrow N=xrow trace=0elseif (nargin .eq. 2) then N=xrow trace=0elseif (nargin .eq. 3) then trace = 0end ifif (N<0) then error("N must be greater than zero")end iftrow = size(t,1)tcol = size(t,2)if ((xcol.eq.0).or.(xcol>2)) then error("X must have one or two columns")elseif (trow.neq.1) then error("T must only have one row") elseif (2^nextpow2(N).neq.N) then print*,"For a faster computation, N should be a power of two"end iftfr= 0if (trace .neq. 0) then print*,"Wigner-Ville distribution"end ifdo icol=1,tcol, ti= t(icol) taumax=min([ti-1,xrow-ti,round(N/2)-1]) tau=-taumax:taumax indices= rem(N+tau,N)+1 tfr(indices,icol) = x(ti+tau,1) * conj(x(ti-tau,xcol)) tau=round(N/2) if (ti<=xrow-tau)&(ti>=tau+1) then tfr(tau+1,icol) = 0.5 * (x(ti+tau,1) * conj(x(ti-tau,xcol)) + ... x(ti-tau,1) * conj(x(ti+tau,xcol))) end if if (trace .neq. 0) then disprog(icol,tcol,10) end ifend dotfr= fft(tfr) if (xcol.eq.1) then tfr=real(tfr) end ifif (nargout.eq.0) then tfrqview(tfr,x,t,"tfrwv")elseif (nargout.eq.3) then f=(0.5*(0:N-1)/N)"end if说明:还有几个MATLAB自带的函数我没有改,比如error, tfrqview,基本都是显示输出的函数,你要自己改一下。

fortran链接警告:total image size xx exceeds max(xx)

我是楼主。上面那个可能不是答案,因为我用两台计算机:一台1g内存,一台2g,结果警告提示完全一样。

运行fortran,报错为Fortran runtime error:Write exceeds length of DIRECT access record,是什么意思?

fortran程序处理的文件分为顺序文件和随机文件(直接文件)。你这里错误的意思是:写随机文件时的记录超长(出界了)!!!

FORTRAN连接错误。 什么意思?

在帮助文件中讲的很清楚,有重复定义的变量名,具体说明如下(这个帮助文件每个fortran编译器都有)Linker Tools Error LNK1169one or more multiply defined symbols foundThe build failed due to multiple definitions of one or more symbols. This error is preceded by error LNK2005. The /FORCE or /FORCE:MULTIPLE option overrides this error.Linker Tools Error LNK2005symbol already defined in objectThe given symbol, displayed in its decorated form, was multiply defined. One of the following may be a cause:The most common cause of this error is accidentally linking with both the single-threaded and multithreaded libraries, or with both the static and dynamic libraries, or with both debug and non-debug versions. Ensure that the application project includes only the appropriate libraries and that any third-party libraries have appropriately created single-threaded or multithreaded versions, or appropriately created static or dynamic versions. The types of the Fortran and C libraries must match. For more information, see Specifying Consistent Library Types.The given symbol was a packaged function (created by compiling with /Gy) and was included in more than one file but was changed between compilations. Recompile all files that include the symbol.The given symbol was defined differently in two member objects in different libraries, and both member objects were used.An absolute was defined twice, with a different value in each definition. This error is followed by fatal error LNK1169.

如何查看fortran语句

右击,选择打开方式,用记事本打开,就可以的。

fortran生成dll的同时,没有lib和exp文件

Power Station 4.0 是微软的产品。微软把它卖给了 DEC,于是就改名为 Digital Visual Fortran再后来,DVF又卖给了 Compaq,改名 Compaq Visual Fortran你的代码中,关于 DLL 导出的扩展语句,以 !DEC 开头,很显然,这是 DEC 公司创造的。Power Station 是不支持的,微软的工程师为啥设计为 !DEC ? 难道他们早就想把 PowerStation 卖给 DEC 了吗??呵呵...不管是 PowerStation 还是 DVF,还是 CVF,都是20多年前的产品了。建议抛弃他们吧。PS:求拟矩阵,也不是Fortran自带的,而是 IMSL,它是 VNI 公司的产品。IMSL 也有 C 版本

安装fortran powerstation 4.0时cd key是多少?

有个破解版的是0000000000

fortran powerstation

可能没什么影响,看后缀这几个文件应该是错误输出信息,编译程序时应该会自动生成这几个文件(猜测)另外powerstation版本比较低了,建议找个新的Visual Fortran或者用Intel fortran。

fortran power station是什么软件?

FortranPowerStation4.0(FPS4.0),微软公司开发的Fortran编译器。1997年3月转让给DEC公司详情请参看以下网页:http://www.wiki.cn/wiki/FORTRAN

Fortran_PowerStation_4.0为啥在Win10系统一运行就崩溃?

感觉是这个版本的与系统的有冲突,你可以下载个最新的来试试,我电脑上使用的软件都是通过360安全卫士的软件管家来下载安装的。

关于Fortran,运行的时候提示错误。

这个估计是你安装的时候没有设置环境变量引起的。环境变量让集成开发环境能够找到编译器(DF.exe)的位置,无法执行的话,多半是没有设置环境变量引起的。重新安装一次编译器吧,记得询问是否设置环境变量时,选择Yes补充,我知道,你没有编译成功,EXE没有生成,直接运行,当然是文件不存在了。

fortran90老是出现 Error spawning df.exe 1error

你修改源代码后,应把DEBUG文件夹删去,从新Compiling

fortran里 record /rccoord/rcpos

record /rccoord/rcpos 的意思是,定义一个结构体,结构体名为 rccoord,结构体的成员包括 rcpos .(你看后面还有么?如果没有了,就只包含一个成员变量) record 是早期的 Fortran 编译器扩展的,因为当时 Fortran 语法里没有派生类型,所以扩展了 record 语句. Fortran 90 开始,语法里规定了 type 派生类型,于是各家编译器就不再提倡使用 record 了. 其实 record 和 type 是一样的作用.但现在书写代码,建议用 type.

fortran 95中public命令是什么意思

意思就是该元素(变量,数组,或函数)可以被模块外的单元使用或调用。比如Module A Integer b , c public b !// 也可以直接写为 Integer , public :: b private cEnd Module AProgram Main Use A b = 3 !// 这一句可以,因为 b 是 public 的 c = 4 !// 这一句会出错,因为 c 是 private 的

求fortran高手帮我改下我写的程序,调试出问题不知道怎么改了,是求LJ流体的PVT之间的关系的,

我没有时间细看了,不过有个小细节,do i=1,1000 call random_number(a(i))end do !创建一组三维坐标点&fortran备注用 ! 号, 不是 & 号。

fortran可以对指数函数组成的函数直接求实部吗?

可以啊!PROGRAM QUEANIMPLICIT NONECOMPLEX(16)::CE,CSREAL(8)::a,bINTEGER(4)::K,L,M,NCE=(4.,5.)CS=(3,4)WRITE(*,*)REAL(EXP(CE/CS))WRITE(*,*)AIMAG(EXP(CE/CS))READ(*,*)END

fortran read和format语句

13 FORMAT(A12, 3(I5, F6.1, F7.1, I5))

FORTRAN中的错误forrtl:severe:Program Exception-array bounds exceeded

检查你的数组,是不是有下表越界的情况

fortran 的character*8 ABC(50)是什么意思? IMPLICIT REAL(I,K)是什么意思 顺序文件和直接文件的区别

character*8 ABC(50)这是定义一个字符串数组,一共50个元素,每个都是8字节长度。也就是每个都是8个字符。IMPLICIT REAL(I,K)意思是声明以 I 和 K 开头的变量,为实型变量。建议不要这样声明,全部用 implicit none,也就是说,全部变量都必须声明其类型。顺序文件和直接文件(这个说法欠妥)这俩概念不是文件的差别,而是文件读取方式的差别。顺序读取方式,就是一行一行的读取直接读取方式,就是直接读取某个行/某个记录顺序读取一般用于文本文件,就是一行一行的文件。而直接读取方式,通常用于二进制文件。当然,文本文件也可以用直接方式读取,只不过要求每一行都一样长。

fortran中用幂法求主特征值及其特征向量 的程序?在fortran4.0能够运行

具体幂法的原理可参考书籍,包含一个3x3的矩阵的程序如下:======modulepowercontainssubroutinesolve(A,N,namda,u,tol)implicitreal*8(a-h,o-z)integer::n,i,kreal*8::A(n,n),u(n),u0(n),v(n),m0,m1,namda!迭代初始向量u0(:)=1.0d0u=u0!设置模最大分量初值,进入循环m0=0.0d0dok=1,500v=matmul(A,u)callmax_rou(v,n,m1)u=v/m1!判断迭代停止if(dabs(m1-m0)<tol)exit!更新m值m0=m1enddonamda=m1endsubroutinesubroutinemax_rou(r,n,ma)implicitreal*8(a-h,o-z)integer::n,i,kreal*8::r(n),mama=dabs(r(1))doi=2,nif(dabs(r(i))>ma)thenma=dabs(r(i))k=iendifenddoma=r(k)endsubroutineendmoduleprogrammainusepowerimplicitreal*8(a-h,o-z)real*8::A(3,3),u(3),namdaa=reshape((/-1.0d0,2.0d0,1.0d0,&2.0d0,-4.0d0,1.0d0,&1.0d0,1.0d0,-6.0d0/),(/3,3/))callsolve(A,3,namda,u,1.0d-7)write(*,101)namda,u101format(T5,"幂法计算主特征值及特征向量",//,&T3,"主特征值为:",F12.7,//,&T3,"主特征向量为:",3(/F12.7))stopendprogram======运行结果======幂法计算主特征值及特征向量主特征值为:-6.4210663主特征向量为:-0.0461457-0.37492071.0000000======

implicit type for U detected between ) and ,请大家帮我看看怎么修改上面的fortran问题

在FORTRAN中有一个I-N规则,是说一个变量名如果没有说明就使用的话,则系统自动认为以I,J,K,L,M,N开头的为整型,以其他字母开头的为实型。估计你是未经说明就使用了变量U,系统自动认为其是实型,同时给出这个警告信息,因为未经说明就使用变量不是一个好的习惯。

fortran中的伪代码问题

IMPLICIT REWAL*8 (A-H, O-Z)这个你抄错了,应该是IMPLICIT REAL*8 (A-H, O-Z)表示如果你不明确声明以A-H, O-Z开头的变量的话,则它们会默认为双精度的实数变量。还有High precision is a good idea for this routine应该是注释,前面应加"!"至于XM=0.5DO*(X2+X1)XL=0.5DO*(X2-X1) do这个关键词不可能做变量名,就算是变量,前面也没有运算符号从整个程序段来看你应该是把d0写成了do,是“d零”不是“do”,d0跟在数字后面表示些数以双精度形式参与运算等。

fortran中implicit double precision

你给出的 random 没有任何虚参,不存在类型不一致的情况. 1.随机数,Fortran 有内置的函数random_number可以实现. 2.如果你要找出你的问题,建议你给出完整代码.

fortran 的implicit语句

implicit real(dknd) (a-h,o-z)的意思是:以d,k,n,a-h,o-z开头的变量默认为实数型的意思以后出现了a1,b2,c3等变量名,fortran都默认为实数

Fortran里implicit什么时候才需要使用?

按新标准来说,你必须要写上去,所有要用到的变量你最好都声明一次,因为不这样做的话,I-N取整的规则可能会影响编程的质量,比如你忘记声明一个real型变量,但是你用i做这个变量的名字,那么这个i只能表示一个整数,程序难免出现错误,所以,在所有的程序中包括子程序和模块中,都要先写上implicit none 这是大雅之作

fortran语言中的implicit none是什么意思

隐含说明语句IMPLICIT语句IMPLICIT可以将程序中以某一字母开头的所有变量指定为所需类型。例如: IMPLICIT INTEGER(A,C),REAL(1—K) 指定了以A与C字母开头的所有变量都是整型变量,以字母I至K开头的所有变量为实型变量。 类型说明语句和隐含说明语句只在本程序中有效;他们必须放在程序单位所有可执行语句的前面,而IMPLICIT语句又必须在所有的类型说明语句的前面。确定变量类型的三种方法中,类型说明语句的优先级最高,I-N规则的优先级最低。implicit none即设计任何和隐含说明语句无效,这个时候所有变量都要显式地人工声明,不能未声明就直接使用,有效地避免了可能的大量错误。(比如,你可以注意到implicit none后,I-N规则是无效的)

fortran程序计算上手

谭浩强的书很好!!

Fortran实现坐标转换

假设 rDeg = 110.2020iDegInt = Int( rDeg )rTemp = rDeg - iDegInt*1.0iMin = Int( rTemp * 60.0 )rTemp = rTemp - iMin/60.0iSec = Int( rTemp * 60.0 * 60.0 )那么 iDegInt , iMin , iSec 分别是度分秒。反过来:rDeg = iDegInt + iMin/60. + iSec/(60.0**2)

在《软件故事》中说Lisp想比FORTRAN是个巨大的进步。请问,Lisp比FORTRAN高级在哪

  一、  如果我们把流行的编程语言,以这样的顺序排列:Java、Perl、Python、Ruby。你会发现,排在越后面的语言,越像Lisp。Python模仿Lisp,甚至把许多Lisp黑客认为属于设计错误的功能,也一起模仿了。至于Ruby,如果回到1975年,你声称它是一种Lisp方言,没有人会反对。编程语言现在的发展,不过刚刚赶上1958年Lisp语言的水平。  二、  1958年,John McCarthy设计了Lisp语言。我认为,当前最新潮的编程语言,只是实现了他在1958年的设想而已。  这怎么可能呢?计算机技术的发展,不是日新月异吗?1958年的技术,怎么可能超过今天的水平呢?  让我告诉你原因。  这是因为John McCarthy本来没打算把Lisp设计成编程语言,至少不是我们现在意义上的编程语言。他的原意只是想做一种理论演算,用更简洁的方式定义图灵机。  所以,为什么上个世纪50年代的编程语言,到现在还没有过时?简单说,因为这种语言本质上不是一种技术,而是数学。数学是不会过时的。你不 应该把Lisp语言与50年代的硬件联系在一起,而是应该把它与快速排序(Quicksort)算法进行类比。这种算法是1960年提出的,至今仍然是最 快的通用排序方法。  三、  Fortran语言也是上个世纪50年代出现的,并且一直使用至今。它代表了语言设计的一种完全不同的方向。Lisp是无意中从纯理论发展 为编程语言,而Fortran从一开始就是作为编程语言设计出来的。但是,今天我们把Lisp看成高级语言,而把Fortran看成一种相当低层次的语 言。  1956年,Fortran刚诞生的时候,叫做Fortran I,与今天的Fortran语言差别极大。Fortran I实际上是汇编语言加上数学,在某些方面,还不如今天的汇编语言强大。比如,它不支持子程序,只有分支跳转结构(branch)。  Lisp和Fortran代表了编程语言发展的两大方向。前者的基础是数学,后者的基础是硬件架构。从那时起,这两大方向一直在互相靠拢。 Lisp刚设计出来的时候,就很强大,接下来的二十年,它提高了自己的运行速度。而那些所谓的主流语言,把更快的运行速度作为设计的出发点,然后再用超过 四十年的时间,一步步变得更强大。  直到今天,最高级的主流语言,也只是刚刚接近Lisp的水平。虽然已经很接近了,但还是没有Lisp那样强大。  四、  Lisp语言诞生的时候,就包含了9种新思想。其中一些我们今天已经习以为常,另一些则刚刚在其他高级语言中出现,至今还有2种是Lisp独有的。按照被大众接受的程度,这9种思想依次是:  1. 条件结构(即"if-then-else"结构)。现在大家都觉得这是理所当然的,但是Fortran I就没有这个结构,它只有基于底层机器指令的goto结构。  2. 函数也是一种数据类型。在Lisp语言中,函数与整数或字符串一样,也属于数据类型的一种。它有自己的字面表示形式(literal representation),能够储存在变量中,也能当作参数传递。一种数据类型应该有的功能,它都有。  3. 递归。Lisp是第一种支持递归函数的高级语言。  4. 变量的动态类型。在Lisp语言中,所有变量实际上都是指针,所指向的值有类型之分,而变量本身没有。复制变量就相当于复制指针,而不是复制它们指向的数据。  5. 垃圾回收机制。  6. 程序由表达式(expression)组成。Lisp程序是一些表达式区块的集合,每个表达式都返回一个值。这与Fortran和大多数后来的语言都截然不同,它们的程序由表达式和语句(statement)组成。  区分表达式和语句,在Fortran I中是很自然的,因为它不支持语句嵌套。所以,如果你需要用数学式子计算一个值,那就只有用表达式返回这个值,没有其他语法结构可用,因为否则就无法处理这个值。  后来,新的编程语言支持区块结构(block),这种限制当然也就不存在了。但是为时已晚,表达式和语句的区分已经根深蒂固。它从Fortran扩散到Algol语言,接着又扩散到它们两者的后继语言。  7. 符号(symbol)类型。符号实际上是一种指针,指向储存在哈希表中的字符串。所以,比较两个符号是否相等,只要看它们的指针是否一样就行了,不用逐个字符地比较。  8. 代码使用符号和常量组成的树形表示法(notation)。  9. 无论什么时候,整个语言都是可用的。Lisp并不真正区分读取期、编译期和运行期。你可以在读取期编译或运行代码;也可以在编译期读取或运行代码;还可以在运行期读取或者编译代码。  在读取期运行代码,使得用户可以重新调整(reprogram)Lisp的语法;在编译期运行代码,则是Lisp宏的工作基础;在运行期编 译代码,使得Lisp可以在Emacs这样的程序中,充当扩展语言(extension language);在运行期读取代码,使得程序之间可以用S-表达式(S-expression)通信,近来XML格式的出现使得这个概念被重新"发 明"出来了。  五、  Lisp语言刚出现的时候,它的思想与其他编程语言大相径庭。后者的设计思想主要由50年代后期的硬件决定。随着时间流逝,流行的编程语言不断更新换代,语言设计思想逐渐向Lisp靠拢。  思想1到思想5已经被广泛接受,思想6开始在主流编程语言中出现,思想7在Python语言中有所实现,不过似乎没有专用的语法。  思想8可能是最有意思的一点。它与思想9只是由于偶然原因,才成为Lisp语言的一部分,因为它们不属于John McCarthy的原始构想,是由他的学生Steve Russell自行添加的。它们从此使得Lisp看上去很古怪,但也成为了这种语言最独一无二的特点。Lisp古怪的形式,倒不是因为它的语法很古怪,而 是因为它根本没有语法,程序直接以解析树(parse tree)的形式表达出来。在其他语言中,这种形式只是经过解析在后台产生,但是Lisp直接采用它作为表达形式。它由列表构成,而列表则是Lisp的基 本数据结构。  用一门语言自己的数据结构来表达该语言,这被证明是非常强大的功能。思想8和思想9,意味着你可以写出一种能够自己编程的程序。这可能听起来很怪异,但是对于Lisp语言却是再普通不过。最常用的做法就是使用宏。  术语"宏"在Lisp语言中,与其他语言中的意思不一样。Lisp宏无所不包,它既可能是某样表达式的缩略形式,也可能是一种新语言的编译器。如果你想真正地理解Lisp语言,或者想拓宽你的编程视野,那么你必须学习宏。  就我所知,宏(采用Lisp语言的定义)目前仍然是Lisp独有的。一个原因是为了使用宏,你大概不得不让你的语言看上去像Lisp一样古 怪。另一个可能的原因是,如果你想为自己的语言添上这种终极武器,你从此就不能声称自己发明了新语言,只能说发明了一种Lisp的新方言。  我把这件事当作笑话说出来,但是事实就是如此。如果你创造了一种新语言,其中有car、cdr、cons、quote、cond、 atom、eq这样的功能,还有一种把函数写成列表的表示方法,那么在它们的基础上,你完全可以推导出Lisp语言的所有其他部分。事实上,Lisp语言 就是这样定义的,John McCarthy把语言设计成这个样子,就是为了让这种推导成为可能。  六、  就算Lisp确实代表了目前主流编程语言不断靠近的一个方向,这是否意味着你就应该用它编程呢?  如果使用一种不那么强大的语言,你又会有多少损失呢?有时不采用最尖端的技术,不也是一种明智的选择吗?这么多人使用主流编程语言,这本身不也说明那些语言有可取之处吗?  另一方面,选择哪一种编程语言,许多项目是无所谓的,反正不同的语言都能完成工作。一般来说,条件越苛刻的项目,强大的编程语言就越能发挥 作用。但是,无数的项目根本没有苛刻条件的限制。大多数的编程任务,可能只要写一些很小的程序,然后用胶水语言把这些小程序连起来就行了。你可以用自己熟 悉的编程语言,或者用对于特定项目来说有着最强大函数库的语言,来写这些小程序。如果你只是需要在Windows应用程序之间传递数据,使用Visual Basic照样能达到目的。  那么,Lisp的编程优势体现在哪里呢?  七、  语言的编程能力越强大,写出来的程序就越短(当然不是指字符数量,而是指独立的语法单位)。  代码的数量很重要,因为开发一个程序耗费的时间,主要取决于程序的长度。如果同一个软件,一种语言写出来的代码比另一种语言长三倍,这意味 着你开发它耗费的时间也会多三倍。而且即使你多雇佣人手,也无助于减少开发时间,因为当团队规模超过某个门槛时,再增加人手只会带来净损失。Fred Brooks在他的名著《人月神话》(The Mythical Man-Month)中,描述了这种现象,我的所见所闻印证了他的说法。  如果使用Lisp语言,能让程序变得多短?以Lisp和C的比较为例,我听到的大多数说法是C代码的长度是Lisp的7倍到10倍。但是最 近,New Architect杂志上有一篇介绍ITA软件公司的文章,里面说"一行Lisp代码相当于20行C代码",因为此文都是引用ITA总裁的话,所以我想这 个数字来自ITA的编程实践。 如果真是这样,那么我们可以相信这句话。ITA的软件,不仅使用Lisp语言,还同时大量使用C和C++,所以这是他们的经验谈。  根据上面的这个数字,如果你与ITA竞争,而且你使用C语言开发软件,那么ITA的开发速度将比你快20倍。如果你需要一年时间实现某个功能,它只需要不到三星期。反过来说,如果某个新功能,它开发了三个月,那么你需要五年才能做出来。  你知道吗?上面的对比,还只是考虑到最好的情况。当我们只比较代码数量的时候,言下之意就是假设使用功能较弱的语言,也能开发出同样的软 件。但是事实上,程序员使用某种语言能做到的事情,是有极限的。如果你想用一种低层次的语言,解决一个很难的问题,那么你将会面临各种情况极其复杂、乃至 想不清楚的窘境。  所以,当我说假定你与ITA竞争,你用五年时间做出的东西,ITA在Lisp语言的帮助下只用三个月就完成了,我指的五年还是一切顺利、没有犯错误、也没有遇到太大麻烦的五年。事实上,按照大多数公司的实际情况,计划中五年完成的项目,很可能永远都不会完成。  我承认,上面的例子太极端。ITA似乎有一批非常聪明的黑客,而C语言又是一种很低层次的语言。但是,在一个高度竞争的市场中,即使开发速度只相差两三倍,也足以使得你永远处在落后的位置。

使用compaq visual fortran6.6调试fortran77程序时出现错误: error LNK2005

@前面那几个变量名被重复定义了,建议LZ回源程序查找_PROJTANY1等的定义,“@”后是行号

FORTRAN中逗号和分号的区别

;仅用做语句分隔符

Fortran如何获取文件大小

语法中没有这样的函数。但如果你使用的是 Visual Fortran 序列的编译器,可以用其扩展的语法实现。恰好我写过一个函数来完成。Integer Function WGetFileSize( cFile ) Use IFPort , only : GetFileInfoQQ , GetLastErrorQQ , FILE$INFO , FILE$LAST , FILE$ERROR , FILE$FIRST , ERR$NOMEM , ERR$NOENT , FILE$DIR Character( Len = * ) , Intent( IN ) :: cFile Type (FILE$INFO) :: stInfo Integer(4) :: iWildhandle , iLength , iRet iWildhandle = FILE$FIRST iLength = GetFileInfoQQ( cFile , stInfo , iWildhandle ) WGetFileSize = stInfo.LENGTH End Function WGetFileSize调用时,直接:n = WGetFileSize( "文件名.txt" )就可以了。如果你的编译器不是 Visual Fortran,那么你需要翻阅相关的帮助文档了。如果你的编译器是 Compaq Visual Fortran,你需要把 Use IFPort , only : 改为 Use DFLib , only :

可以用FORTRAN把txt文件转换为grd文件吗?如果可以为什么运行提示read错误?

提问题能不能尽可能全面完整一点。。。你这么简单的描述,怎么给你细节的指导?
 1 2 3  下一页  尾页