0

我正在尝试使用IMSL 库中的 PPVAL 函数来评估分段多项式,类似于 MATLAB 的ppval 函数

可悲的是,我无法很好地理解有关如何正确使用该功能的文档。我试图评估一个简单的多项式。多项式p(x) = 1并没p(x) = x问题。我不明白的是当我尝试获得更高次的多项式时。

下面的程序试图评估多项式p(x)=x^4

program main
    include 'LINK_FNL_SHARED.h'
    USE PPVAL_INT
    implicit none

    double precision :: x(11), y(11)
    double precision :: BREAK(2),PPCOEF(5,1)
    integer :: ii

    break = [0.0d0,10.0d0] ! breakpoints in increasing order
    PPCOEF(:,1) = [0.0d0,0.0d0,0.0d0,0.0d0,1.0d0] ! polynomial coefficients
    x = dble([0,1,2,3,4,5,6,7,8,9,10])

    do ii=1,11
        y(ii) = PPVAL(x(ii),break,PPCOEF)
    end do

    print *, 'x = ', x
    print *, 'y = ', y
    pause
end program main

但该函数返回多项式p(x) = x^4/4!。对于 2,3 和 5 度,返回值始终为p(x) = x^2/2!, p(x)=x^3/3!, p(x)=x^5/5!。为什么这个因素会出现在ppval函数中?为什么我不能只提供多项式系数并对其进行评估?

是否有另一个更简单的函数来评估 Fortran 中的多项式,例如 MATLAB polyval?

4

0 回答 0