Weight_LGR.cpp 563 B

123456789101112131415161718192021222324252627
  1. // 求LGR点的积分权重
  2. // 输入: n:多项式的阶数,LGR点共计N + 1个点
  3. // x: 配点值序列
  4. // 输出: w : 积分权重
  5. // 方法: 参考《Spectral and High - Order Methods》一书
  6. // 编写: 李兆亭
  7. // 时间: 2020 / 04 / 27
  8. #include "GPM.h"
  9. int Weight_LGR_pro(int* N, vec* x, vec* w) {
  10. double f = 1.0;
  11. double x_temp = 1.0;
  12. for (int i = 0; i < (*N) + 1; i++ ) {
  13. if (i == 0) {
  14. (*w)(0) = 2.0 / pow(((*N) + 1.0), 2);
  15. }
  16. else {
  17. x_temp = (*x)(i);
  18. Legendre(N, &x_temp, &f);
  19. (*w)(i) = 1.0 / pow(((*N) + 1.0), 2) * (1.0 - (*x)(i)) / pow(f, 2);
  20. }
  21. }
  22. return 1;
  23. }