Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran IMSL ppval函数_Fortran_Polynomials_Imsl - Fatal编程技术网

Fortran IMSL ppval函数

Fortran IMSL ppval函数,fortran,polynomials,imsl,Fortran,Polynomials,Imsl,我试图用,来计算一个分段多项式,类似于MATLAB的 遗憾的是,我无法很好地理解有关如何正确使用该函数的文档。 我试图计算一个简单的多项式。 多项式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)

我试图用,来计算一个分段多项式,类似于MATLAB的

遗憾的是,我无法很好地理解有关如何正确使用该函数的文档。 我试图计算一个简单的多项式。 多项式
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?

这是有意的。参见PPDER的定义,并将导数顺序(j)替换为零…
y(ii)=PPDER(x(ii),BREAK,PPCOEF,IDERIV=0)
。还是一样的行为。如果我想要一个二次多项式,
y=x^2
ppder
将返回
y=x^2/2,等等。有解决办法吗?我只想给出多项式的系数,函数将返回在x点计算的多项式。是的,我没有给你一个解决方案,只是确认你观察到的行为被记录下来。最简单的方法可能是将coeff[i]乘以阶乘(i-1),假设基于1的coeff如您的示例中所示。