powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / StackOverflowException при создании функции
4 сообщений из 4, страница 1 из 1
StackOverflowException при создании функции
    #39536795
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, коллеги!

Возникает такая ошибка при реализации Интерполяционный многочлен Лагранжа
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
        public class InterpolationLagrange
        {
            public Func<double, double> L_x = x => 0;

            public InterpolationLagrange(double[] X_arr, double[] Y_arr)
            {
                int numIndex;
                double[] X_cut;
                Func<double, double> L_x2;
                for (int i = 0; i < X_arr.Count(); i++)
                {
                    numIndex = Array.IndexOf(X_arr, X_arr[i]);
                    X_cut = X_arr.Where((val, idx) => idx != numIndex).ToArray();
                    double Y_b = Y_arr[i];
                    double X_b = X_arr[i];
                    L_x2 = x => Y_b * get_l_i(X_b, X_cut)(x);
                    L_x = x => L_x(x) + L_x2(x);
                }
            }

            public Func<double, double> get_l_i(double x_li, double[] x_arr)
            {
                Func<double, double> l_i = x => x;
                foreach (double x_i in x_arr)
                {
                    l_i = x => l_i(x) * (x - x_i) / (x_li - x_i);
                }
                return l_i;
            }
        }



Ошибка возникает в строке
Код: c#
1.
L_x = x => L_x(x) + L_x2(x);


при выполнении последнего шага.
Попытался уменьшить количество элементов до 5-ти (было 6), ошибка возникал в шаге 5.
Программа стала такая кучерявая, при попытке поиска ошибки, так было компактно и красиво.

Спасибо!
...
Рейтинг: 0 / 0
StackOverflowException при создании функции
    #39536807
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadipok,

По поводу рабочей реализации:

https://ru.wikibooks.org/wiki/Реализации_алгоритмов/Интерполяция/Многочлен_Лагранжа

По поводу вашей проблемы. Дам подсказку:

Код: c#
1.
2.
3.
            Func<int> x = () => 1;
            x = () => x();
            var result = x();



Можешь запустить и словить тот же stack overflow.
...
Рейтинг: 0 / 0
StackOverflowException при создании функции
    #39536828
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttvadipok,

По поводу рабочей реализации:

https://ru.wikibooks.org/wiki/Реализации_алгоритмов/Интерполяция/Многочлен_Лагранжа

По поводу вашей проблемы. Дам подсказку:

Код: c#
1.
2.
3.
            Func<int> x = () => 1;
            x = () => x();
            var result = x();



Можешь запустить и словить тот же stack overflow.

Спасибо большое!
Воспользуюсь готовым решением.
Честно говоря не понял в чем ошибка.
...
Рейтинг: 0 / 0
StackOverflowException при создании функции
    #39536834
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadipokЧестно говоря не понял в чем ошибка.
Код: c#
1.
x = () => x();

функция вызывает сама себя. В твоем коде тоже.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / StackOverflowException при создании функции
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]