数学计算: 多项式求值算法
多项式定义 一维: P(X)=A(i) * X ^n + A(i-1)*X^(n-1) + A(i-2)*X^(n-2) * ...... A(1) * X;
二维: P(X, Y)=A(i) * X ^n * B(i) * Y ^ m + A(i-1)*X^(n-1) * B(i-1)*Y^(m-1) + A(i-2)*X^(n-2) * B(i-2)*Y^(m-2)...... A(1) * X * B(1) * Y;
#include <stdio.h>
double calc_involution(double dVal, int n)
{
int i = 0;
double dResult = 1;
if (n == 0)
return 1;
for (i=0; i < n; i++)
{
dResult *= dVal;
}
return dResult;
}
double calc_polynomial(double arrA[], double arrX[], int arrN[], int len)
{
int i =0;
double dResult = 0;
for (i = 0; i < len; i++)
{
dResult += arrA[i]*calc_involution(arrX[i], arrN[i]);
}
return dResult;
}
int main()
{
double testA[] = {2, 4, 8};
double testX[] = {2, 8, 10};
int testN[] = {3, 2, 1};
double dRes = 0;
dRes = calc_polynomial(testA, testX, testN, 3);
printf("%f ", dRes);
scanf("%f", &dRes);
return 0;
}
二维的情况只需重复计算。