Dr. K. L. Metlov (dr_klm) wrote,
Dr. K. L. Metlov
dr_klm

Многочлены Якоби

Программа на J
pw =: ([ (([: _1&^ ]) * !~) -/~)@i.@>:
ph =: (+ >:@+/)~ (([: (1r2&^ % !) ]) * ^!.1) [: i. >:@]
bc =: (([: {. [) + [: i. >:@]) ! [: {. +
jacobiP =: [: +/ ([: pw ]) * bc * ph
Вычисляет полиномы Якоби, как можно было-бы догадаться. ;-))

Глагол jacobiP диадный. Левым аргументом является список параметров (два числа -- a и b), правый аргумент -- требуемая степень n. Программа считает P(a,b)n и выдает список его коэффициентов (в порядке возрастания степеней). Вот так, например:
   1 2 jacobiP 5
_0.46875 4.21875 8.4375 _30.9375 _15.4688 40.2188
Это соответствует полиному "-0.46875 + 4.21875*x + 8.4375*x2+ ...". Его можно, например, построить:
   load 'plot'
   points =: 50%~ 50&- i. 100
   plot (points ; ((1 2 jacobiP 5)p.points))



Это нужно для численного интегрирования. Например, узлы для численного интегрирования функции (1+x)(1-x)2 f(x) на интервале от (-1,1), точно интегрирующие полиномы вплоть до девятой степени (2*5-1, наивысшая достижимая при замене интеграла суммой по пяти точкам) находятся в xi=
   {: > p. (1 2 jacobiP 5)
0.850847 _0.740124 0.528842 _0.353853 0.0989028

Вот так-то. :-)
Tags: j
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 1 comment