fortran 里面 sqrt 是内置数学函数,作用是计算非负数值的算术平方根,也就是开平方,属于 Fortran 标准库函数,不需要额外自定义,但是要求传入参数不能是负数,参数类型支持实数单精度 real 和双精度 real kind,返回值类型和输入参数保持一致,很多新手报错是因为传入负数 整数类型没有转换,或者没有开启 implicit none 导致类型推断出错,编写程序的时候要掌握调用格式 参数类型要求 异常处理,区分单精度和双精度写法,了解常见编译报错原因,就能正确使用 sqrt 完成开平方运算,在数值计算 工程编程里面这个函数使用频率非常高。
函数基础信息
| 项目 | 说明 |
|---|---|
| 函数名称 | sqrt |
| 功能 | 算术平方根 开平方 |
| 所属库 | Fortran 内置数学库 |
| 参数要求 | 参数大于等于 0 |
| 返回类型 | 与输入参数类型一致 |
基础调用语法
基本写法
结果变量 = sqrt (待开平方的数值或者变量)
单精度示例
program sqrt_demo
implicit none
real :: a, res
a = 16.0
res = sqrt(a)
print , res
end program
双精度示例
program sqrt_dp
implicit none
real(kind=8) :: a, res
a = 25.0d0
res = sqrt(a)
print , res
end program
核心规则清单
1 输入参数必须是非负数,如果传入负数,程序运行会报错,属于域错误
2 如果传入整型整数,部分编译器会自动转换,但是规范写法推荐转成 real,避免类型隐患
3 返回值精度跟随输入,单精度输入输出单精度,双精度输入输出双精度
4 搭配 implicit none 是推荐写法,防止隐式类型带来的错误
5 sqrt 只能做算术平方根,不能直接计算负数的复数平方根,复数开平方需要使用 cmplx 版本
常见错误对照表格
| 错误现象 | 原因 | 解决办法 |
|---|---|---|
| 运行报错 | 参数为负数 | 增加判断,负数做特殊处理 |
| 精度很低 | 使用单精度 | 改用 real kind=8 双精度 |
| 编译警告 | 传入整数 | 显式转成 real |
| 结果异常 | 没有 implicit none | 头部加上 implicit none |
使用操作步骤
第一步 程序开头添加 implicit none,声明变量类型,区分单精度或者双精度
第二步 准备待计算变量,确认数值大于等于 0
第三步 书写调用语句,res = sqrt (x)
第四步 输出计算结果,或者继续参与后续运算
第五步 增加防护判断,如果存在负数输入,提前分支处理,避免程序崩溃
综合来看 fortran 函数 sqrt 怎么用核心就是调用格式简单,重点注意参数非负和数据精度,工程计算优先使用双精度版本,避免单精度精度丢失,写代码养成 implicit none 的习惯,同时增加负数判断,就能稳定使用 sqrt 完成开平方计算。
【常见问题】
问题 1 fortran 函数 sqrt 怎么用可以传入负数吗
回答 1 fortran 函数 sqrt 怎么用,标准 sqrt 不能传入负数,负数会触发运行错误,如果需要复数开平方,要使用复数版本 sqrt 函数。
问题 2 fortran 函数 sqrt 怎么用支持双精度吗
回答 2 fortran 函数 sqrt 怎么用支持双精度,只要输入变量声明为 real kind=8,sqrt 返回结果就是双精度类型。
问题 3 fortran 函数 sqrt 怎么用需要单独调用库吗
回答 3 fortran 函数 sqrt 怎么用不需要额外导入库,sqrt 属于 fortran 内置函数,编译的时候自动识别,不需要手动声明外部函数。
【免责申明】
本内容为 Fortran 编程学习参考,不同编译器版本对语法细节兼容存在差异,实际编译请以所用编译器官方文档为准。


