Orthogonal polynomials are everywhere.
The following Mathematica program takes in a weight function (as a function of x), the domain (a and b), and spits out the first "n" corresponding orthonormal polynomials.
Here's a screenshot, for the first four Chebyshev and Legendre polynomials (click to enlarge). Note that these polynomials are unique up to a multiplicative constant. Orthonormality freezes that constant.
The following Mathematica program takes in a weight function (as a function of x), the domain (a and b), and spits out the first "n" corresponding orthonormal polynomials.
OrthoPoly[w_, a_, b_, n_] := Module[{monoBasis, T},
monoBasis = Table[{x^i}, {i, 0, n - 1}];
oP = monoBasis;
oP[[1]] = oP[[1]]/Sqrt[Integrate[w*oP[[1]]*oP[[1]], {x, a, b}]];
For[i = 2, i <= n, i = i + 1,
For[T = 0; j = 1, j < i, j = j + 1,
T = T + Integrate[w*oP[[i]]*oP[[j]], {x, a, b}]*oP[[j]];
];
oP[[i]] = oP[[i]] - T;
oP[[i]] =
oP[[i]]/Sqrt[Integrate[w*oP[[i]]*oP[[i]], {x, a, b}]] //
Simplify;
] ;
oP
]
monoBasis = Table[{x^i}, {i, 0, n - 1}];
oP = monoBasis;
oP[[1]] = oP[[1]]/Sqrt[Integrate[w*oP[[1]]*oP[[1]], {x, a, b}]];
For[i = 2, i <= n, i = i + 1,
For[T = 0; j = 1, j < i, j = j + 1,
T = T + Integrate[w*oP[[i]]*oP[[j]], {x, a, b}]*oP[[j]];
];
oP[[i]] = oP[[i]] - T;
oP[[i]] =
oP[[i]]/Sqrt[Integrate[w*oP[[i]]*oP[[i]], {x, a, b}]] //
Simplify;
] ;
oP
]
Here's a screenshot, for the first four Chebyshev and Legendre polynomials (click to enlarge). Note that these polynomials are unique up to a multiplicative constant. Orthonormality freezes that constant.
No comments:
Post a Comment