Функция, возвращающая коэффициенты полиномов Лежандра, недостаточно точнаC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Функция, возвращающая коэффициенты полиномов Лежандра, недостаточно точна

Сообщение Anonymous »

Я пытаюсь написать функцию, которая возвращает коэффициенты n-го полинома Лежандра.

Код: Выделить всё

// store previous polynomials to make the recursive process faster
unordered_map legendre_cache;

// Recursive function to compute the coefficients of the nth Legendre polynomial
vector legendre_polynomial(int n) { // uses Bonnet's recursion formula P_{n+1} = ( (2n+1) x P_n - n P_{n-1} )/(n+1)
// Check if the result is already in the cache
if (legendre_cache.find(n) != legendre_cache.end()) {
return legendre_cache[n];
}

// Base cases
if (n == 0) {
return { 1.0 }; // P0(x) = 1
}
if (n == 1) {
return { 1.0, 0.0 }; // P1(x) = x
}

// Get coefficients for P_(n-1) and P_(n-2)
vector Pn_minus_1 = legendre_polynomial(n - 1);
vector Pn_minus_2 = legendre_polynomial(n - 2);

// Get the sizes of the vectors to n+1
Pn_minus_1.push_back(0.0); // P_{n-1} gets multiplied by x
Pn_minus_2.insert(Pn_minus_2.begin(), 0.0); // P_{n-2} needs two leading digits
Pn_minus_2.insert(Pn_minus_2.begin(), 0.0);

// Calculate coefficients for P_n
vector Pn(n + 1, 0.0); // Initialize Pn with n+1 zeros

// Using the recurrence relation to fill coefficients
for (int k = 0; k 

Подробнее здесь: [url]https://stackoverflow.com/questions/79116069/function-which-returns-coefficients-of-legendre-polynomials-not-accurate-enough[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»