Fortran Coder

查看: 7994|回复: 4

[特殊函数] 高斯-勒让德求积工具

[复制链接]

59

帖子

2

主题

0

精华

大师

F 币
810 元
贡献
476 点
发表于 2015-11-19 14:55:23 | 显示全部楼层 |阅读模式
本帖最后由 kerb 于 2017-9-21 18:18 编辑

看见论坛上有相关的帖子,觉得那样并不方便,于是就做了个工具,高斯-勒让德权重系数和节点计算的代码代码来自numerica recipes in fortran77

获得较高积分精度并不是简单增加阶数就可以的,好的做法是把积分区间分成适当的份数,选用适当阶数的高斯节点

高斯-勒让德求积工具
输入:勒让德多项式的阶数
输出:
         屏幕是计算好的权重系数和勒让德节点
         同时文件输出一个fortran代码的例子,比如输入4,文件内容如下
FORTRAN版高斯乐让德积分工具 GAULEGQUADF.zip (275.85 KB, 下载次数: 18)

59

帖子

2

主题

0

精华

大师

F 币
810 元
贡献
476 点
 楼主| 发表于 2017-9-17 21:38:05 | 显示全部楼层
本帖最后由 kerb 于 2017-9-21 18:19 编辑

第二版
第二版会生成一个例子程序,例子是sin(x)在区间[0.0,3.1415926]的积分,区间分成5段(程序中整形变量M)
FORTRAN版高斯乐让德积分工具 GAULEGQUADF.zip (275.85 KB, 下载次数: 15)

131

帖子

11

主题

0

精华

大师

F 币
621 元
贡献
375 点

贡献勋章管理勋章帅哥勋章元老勋章星光勋章规矩勋章

发表于 2017-9-18 13:32:18 | 显示全部楼层
kerb 发表于 2017-9-17 21:38
第二版
第二版会生成一个例子程序,例子是sin(x)在区间[0.0,3.1415926]的积分,区间分成5段(程序中整形变 ...

謝謝分享

雞蛋裡挑個骨頭, 還請包含

[Fortran] 纯文本查看 复制代码
PROGRAM test
  INTEGER, PARAMETER :: dp=KIND(1.0D0)
  REAL(KIND=dp) :: x=1.2, y=1.2D0     ! (KIND=8),  literal "8" is compiler dependent
  WRITE(*,*) x, y                     ! x, default precision only
END PROGRAM test

WRITE(*,'(4X,A)',ADVANCE='NO') 'A = ' ! [), 'A = '] ---> [) 'A = '],  no ","
READ(*,*) A                           ! (F15.8), formatted READ, dangerous

FUNCTION GUALEGINTG12(YOUR_FUNC, OTHERS, A, B)
  IMPLICIT NONE
  INTEGER, PARAMETER :: dp=KIND(1.0D0)
  REAL(KIND=dp)             :: GUALEGINTG12
  REAL(KIND=dp), EXTERNAL   :: YOUR_FUNC
  REAL(KIND=dp), INTENT(IN) :: OTHERS, A, B

59

帖子

2

主题

0

精华

大师

F 币
810 元
贡献
476 点
 楼主| 发表于 2017-9-18 17:26:37 | 显示全部楼层
本帖最后由 kerb 于 2017-9-21 18:20 编辑
chiangtp 发表于 2017-9-18 13:32
謝謝分享

雞蛋裡挑個骨頭, 還請包含

谢谢提醒,等我有时间在进一步完善
已改正

1

帖子

0

主题

0

精华

新人

F 币
15 元
贡献
5 点
发表于 2025-2-18 12:52:50 | 显示全部楼层
不错的资料,谢谢楼主
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2025-4-19 03:46

Powered by Tencent X3.4

© 2013-2025 Tencent

快速回复 返回顶部 返回列表