多项式函数运算的一些Fortran子程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
( 8)
多项式 {X Y1 , I RXY1 , ISX Y1, N 1 } 和 {X Y2, I RXY2 , I SXY2, N 2} 是 x 的 函 数。子 程 序 I NT Y( A, I R, I S , N , YX 1, I R YX 1 , IS YX 1, N 1, YX 2, I R YX 2 , I S YX 2, N 2, NI Y) 对多项式关 于 y 积分 , 积分 后 的多 项 式 存 于 { A, I R, I S , NI Y}中 , 其中 A, IR 和 IS 的值 已经更新。 对多项式 {A, I R, I S , N } 重 复类 似上 一小 节的 步 骤即 可。 2. 8 计算数值 对于给定 x = x 0, y = y 0 子程 序 VALUE ( A, I R, I S , N , X 0 , Y0, VAL ) 如下计算多项式的值 VAL VAL = E A( J ) X 0 I R( j ) Y0 IS ( j )
第 22 卷 Vol. 22
第2期 No. 2
JOURNAL
OF
中州大学学报 ZHONGZHOU
UNI VERSITY
2005 年 4 月 Apr. 2005
多项式函数运算的一些 Fort ran 子程序
侯云山, 冯
摘
岩, 刘宏兵
( 信阳师范学院 计算机系 , 河南 信阳 464000)
要 : 本文给出了一些 F ortran 子程序用于二维多项式函数的常 见数学运算 。 这些子程序 可以对多 项式函数
1 引言 虽 然 现 有 的 计 算 软 件 如 MATHEMATICA
[ 1]
I R ( 2 ) = 1 , IS ( 2) = 0, A( 3) = - 17 . 3 , I R ( 3) = 2 , 和 I S ( 3) = 3 项的多项式。 2. 2 化简 子程序 SI MPLE ( A, I R , I S , N , NS ) 用于 化简 多 项式 {A, I R , I S , N }。它进行合并同类项和删除系数为 0 或系数 非常小的项 , 化 简后的多项式存在 {A, IR , I S , NS} 中。 2. 3 加法 子程序 P L US ( A 1 , IR 1 , IS 1 , N 1 , A 2, IR 2 , I S 2, N 2 , NP ) 对两 个多项式函数 { A 1, I R 1, IS 1 , N 1 } 和 { A2 , I R 2, IS 2 , N 2} 进 行加法 运 算 , 最 后 的 结 果 存 于 { A 1 , I R1 , I S 1, NP }, 其 中 A 1 , I R1 和 IS 1 的值已经更新。简而言之 , 该子程 序把两个
{Y X 2, I RY X 2, I S Y X2, N 2}
5 LX+
IY
{A, I R , I S , N } , 结 果 存 于 { A, IR , I S, 5 x IX5 y I Y
{Y X 1, I RY X 1, I S Y X1, N 1}{A, I R , IS , N }dx
5 2 g 1 ( x , y ) 5 2 g 2( x , y) dA ( 11 ) 5 x2 5 y2 g 1( x , y) = f 1( x , y) f 2( x , y 0) f 3 ( x , y ) h 1( x, y) ( 12 a )
- X+ 1
g 2( x , y) = f 1( x , y) f 2( x , y 0) f 3 ( x , y ) h 2( x, y) ( 12 b) h 1( x , y) = x 6 y 5 ( 7) h 2( x , y) = x y
r s aN xN yN
( 3)
MAP LE [ 2] 可以进行符号运算和数据 运算 , 但对于编写 F or2 tr a n 代码的分析者来说并不方 便。本文 给出了一些 F or tr a n 子程序可以对多项式函 数进行 加、 减、 乘、 微分 和积 分运算 , 这些子程序在 进行 Mindin 板的 变形 和振 动分 析时 就显 得 特别有效
个多项式函数 , 然后 再乘 上 项需重复上述步骤。 ( 3 ) 积分限为 y 的函数
A( i) IS ( i) y 对多 项式的 每一 I R ( i) + 1
若积分限为从一 个多项 式函数 { YX 1, I R YX 1 , I S YX 1 , N 1} 到 另一 个 多项 式 函数 { YX 2 , I R YX 2 , IS YX 2, N 2 } 时 , 即
作者简介 : 侯云山 ( 1973 ) ) , 男 , 河南上蔡人 , 信阳师范学院计算机系讲师 , 硕士 , 主要从事计算数学方面的研究 。
# 116 #
后的结果存于 {A 1, I R 1, I S 1, N M} 中 , 其中 A 1, I R 1 和 I S1 的值已经更新。 2. 6 微分 在子程序 DI FX Y( A, I R , I S , N , IX , I Y, ND) 中 , { A, I R , IS , N} 是一个 N 项的多项式。 IX 和 I Y 是正整 数 , 它们 分别 表示 对 x , y 的微分阶数。通过调用 DI FX Y, 多项 式 {A, I R , I S, N } 微分为 ND}中。 该子程 序先对 关于 x 求微 分 , 该 多项 式微 分 后的 第 i 项为 A( i) * I R( i) * [ IR ( i) - 1 ] * [ I R ( i ) - 2 ] * , * [ I R ( i ) - IX] x I R( i) LX IS ( i)
5 3
( 12 c) ( 12 d )
{X Y1, IRX Y1, ISX Y1, N 1} {A, I R , I S , N }dx
多项 式 {X Y1, I RX Y1 , I SXY1 , N 1 } 和 {X Y2, I RX Y2, I SX Y2 , N 2 } 是 y 的 函 数。 子程 序 I NTX ( A, I R , I S , N, X Y1, I RX Y1 , I SXY 1, N 1, X Y2, I RX Y2 , ISX Y2, N 2, NIX) 对多项式 关 于 x 积 分 , 积 分后 的 多项 式 存 于 { A, IR , I S, NIX} 中 , 其中 A, I R 和 I S 的值已经更新。 该子程序首先对 {A, I R , I S , N } 关于积 分 x , 多项 式函 数积分后的第 i 项为 A( i ) x IR( i) + 1 yI S ( i) IR( i )+ 1 注意上式中的 x 是 y 的一 个多项 式函数 , 下一 步 , 子程 序 M ULTI 被调用 IR ( i) + 1 次 来把 x
LIMX 2 LI M Y 2
( 9)
VINT = LIMX 1 LI M Y 1 {A, I R , I S , N }dydx
( 5)
3 算例分 析 在使用 pb- 2 Rayleigh - Ritz 方 法 [ 35]
其中 LMX 1 和 LMX 2 是 对 x 积 分 时的 上 限 和 下限 , LM Y1 和 LM Y2 是对 y 积分时的上限和下限。 该子程序首先关于 x 对 {A, I R , IS , N } 求积 分 , 积 分的 第 i 项为 A( i ) xI R( i) + 1 yIS ( i) I R ( i) + 1 对 y 积分时也 采 用同 样的 步 骤 , 最后 的 积分 值 VINT
进行加 、 减、 乘、 微分和积分运算 , 当科研工作者对涉 及到大 量多项 式函数 运算的 问题要求 具有高 精度解 时 , 这些子 程序有很大的实用价值 。 关键词 : 多项式 ; FORTRAN; 微分 ; 积分 中图分类号 : O151. 1 文献标识码 : A 文章编号 : 1008- 3715( 2005) 02- 0116- 03
为 VINT = E A( i ) * ( LI MX 2 I R( i) - LI MX 1 IR( i) *
i= l
下面考虑对下面多 项式函数 g 1 ( x , y) g 2 ( x , y) 的 导数 ( 6) 进行积分 A
1
( LI M Y 2 IS ( i ) - LI M Y1 IS ( i) ) ( 2) 积分限为 x 的函数 若积分限为从一个多项式函数
2 3
( 1)
多项式中具有相同指数的 x , y 项系数加在一起。 2. 4 减法 两个多项式的减法可以 使用子 程序 P LUS 来 做。只要 把第二个多项式的系数的符号变一下即可。 2. 5 乘法 子程序 M ULTI ( A 1 , I R1 , IS 1 , N 1 , A 2 , I R2 , I S 2, N 2, NM) 来 对 {A 1, I R 1, I S 1, N 1 }{ A 2, I R 2 , IS 2 , N 2} 乘 法运 算。该子 程序将第一个多项式和第二个多项式第一项相乘 , 主要就是 系数相乘 x, y 的指 数相加 , 然 后对 第二个 多项 式的第 二项 重复上述步骤。这样直到第二个多项式的所有项做完 为止 , 其中每一步都需 要用 到 PL US 和 SI MPLE 来 更新 数组 , 最
5 2 g 1( x, y) 5 2 g 2 ( x , y) dA 5 x2 5 y2
= 0 0
{XY1 , I RX Y1 , I SX Y1, N 1 } 到 另 一 个 多 须 式 函 数 {X Y2 , I RX Y2, I SX Y2 , N 2 }时 , 即
{X Y2, IRX Y2, ISX Y2, N 2}
r s r s
下面考虑一个二维多项式函数 f ( x , y) = a 1 x 1 y 1 + a2 x 2 y 2 + , + 这里 a 是实数 , r 和 s 是非负整数 。 在 F ortr a n 语言 中 , 该函数 可以用一个一维实 型数组和 两个整型数组来表示 REAL * 8 A( N) INTEGER I R( N ) I S( N ) ( 2) 其中 A( j ) = a j 保存函 数 f ( x , y) 的第 j 项的 系数 , I R ( j ) = r j 和 IS ( j ) = Sj 分别保存 第 j 项的 x , y 的次 方 , j = 1, 2, , , N 。 例如 f ( x , y ) = 4+ 8 x - 17. 3 x y 是一个 3 项二维多项 式函数 , 表示它的三个数组 A( 1) = 4. 0, I R ( 1) = 0 , I S ( 1 ) = 0 , A( 2 ) = 8 . 0 , 收稿日期 : 2004- 11- 10 基金项目 : 河南省自然科学基金项目 ( 项目编号 : 0411011500)
j= 1 N
y
( 4)
对{ A, I R , I S , N } 关于 y 也进 行同样 的操作 , 然后 调用 子程序 SI MPLE 得到化简结果。 2. 7 积分 ( 1) 积分限为常数 如果积分上下限为常数 , 子程序给出了多项百度文库函数 的积 分值 , 该值存于变量 VI NT 中。该积分的形式为
NI
分 析平 板 振动
问题 , 需要进 行大 量的 多项 式函 数运 算 ( 如 乘法、 微 分 和积 分 ) 。例如 , 设一个三角形板的边界函数分别为 f 1 ( x , y) = x = 0 f 2 ( x , y) = y = 0 f 3 ( x , y) = y + x - 1= 0 ( 10 )
[ 3- 5]
基于上述定义 , 本文 使用 {A, I R , I S, N} 来 表示具 有 N
。事实上 , 这 种解 的精确 度只 受到机 器精 确
度的限制。 2 For tra n 子程序
本文列出了 For tr an 子程序 , 这些子程序用于 多项式函 数的化简、 加、 减、 乘、 微分和 积分运 算。这些 子程 序给 出多 项式函数 f ( x , y) 在 x = x 0 , y = y 0 处的精确值。 2. 1 For tra n 语言中多项式 函数的表示