0 / 0 / 0
Регистрация: 12.10.2011
Сообщений: 19
1

Вычисление многочлена

03.06.2012, 13:48. Показов 1339. Ответов 6
Метки нет (Все метки)

Добрый день!Как реализовать вычисление такого многочлена A0+A1X+A2X^2+...?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.06.2012, 13:48
Ответы с готовыми решениями:

Вычисление значения многочлена в точке
Написать реализацию класса, описывающего работу с многочленами, реализующий сл операции:...

Провести вычисление многочлена по схеме Горнера
Провести вычисление многочлена по схеме Горнера f(x)=( ...(((x+A )x+A )x+A )... )x+An Помогите...

Вычисление значения многочлена для заданного аргумента
Описать класс многочленов от одной переменной, задаваемых степенью много¬члена и массивом...

Интеграл многочлена
Помогите пожалуйста сделать задание: Тип многочлен от одной переменной, задаваемый степенью...

6
Администратор
Эксперт .NET
9161 / 4439 / 749
Регистрация: 17.04.2012
Сообщений: 9,235
Записей в блоге: 14
03.06.2012, 14:10 2
C#
1
2
3
4
5
6
7
8
9
double[] a = { 2.3, 4.7, 5.1, -9.2, 3.0 };  // здесь A0, A1, A2...
double x = 4;
double result = 0;   // здесь будет результат
double counter = 0;  // количество членов в многочлене
foreach (double i in a) {
    result += i * Math.Pow(x, counter);
    counter++;
}
Console.WriteLine(result);
1
265 / 255 / 43
Регистрация: 18.03.2012
Сообщений: 506
03.06.2012, 15:05 3
tezaurismosis, c вашего позволения, немного ускорю
C#
1
2
3
4
5
6
7
8
9
10
double[] a = { 2.3, 4.7, 5.1, -9.2, 3.0 };  // здесь A0, A1, A2...
double x = 4; // точка, в которой вычисляется значение
double result = a[0];   // здесь будет результат
double curr = a[0]; // значение текущей степени для итераций в цикле
for (int i = 1; i < a.Length; i++)
{
    curr = curr*x;
    result += curr;
}
Console.WriteLine(result);
Добавлено через 43 минуты
Ошибся
C#
1
result += curr;
---->
C#
1
result += curr * a[i];
2
Администратор
Эксперт .NET
9161 / 4439 / 749
Регистрация: 17.04.2012
Сообщений: 9,235
Записей в блоге: 14
03.06.2012, 15:14 4
Lasur, ещё одно: вместо
C#
1
double curr = a[0];
нужно
C#
1
double curr = 1;
мы же начинаем вычисления с 0 степени, а т.к. пропустили один из членов, то с единицы.
0
265 / 255 / 43
Регистрация: 18.03.2012
Сообщений: 506
03.06.2012, 15:15 5
Цитата Сообщение от tezaurismosis Посмотреть сообщение
мы же начинаем вычисления с 0 степени, а т.к. пропустили один из членов, то с единицы.
Поэтому цикл for начинается с i=1.
0
Администратор
Эксперт .NET
9161 / 4439 / 749
Регистрация: 17.04.2012
Сообщений: 9,235
Записей в блоге: 14
03.06.2012, 15:31 6
Цитата Сообщение от Lasur Посмотреть сообщение
Поэтому цикл for начинается с i=1.
Не спорю, но выражением
C#
1
double curr = a[0];
вы присваиваете степени значение из списка коэффициентов, а нужно единицу.
В общем виде этот многочлен выглядит как
https://www.cyberforum.ru/cgi-bin/latex.cgi?\sum_{0}^{n} {a}_{n}{x}^{n} = {a}_{0}+{a}_{1}x+{a}_{2}{x}^{2}+...+{a}_{n}{x}^{n}
т.е n - это в вашем коде curr
до входа в цикл итоговое значение равно https://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{0}, затем n умножаем на x и на https://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{1}, и значение становится https://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{0}+{a}_{0}{a}_{1}x, затем опять умножаем n на x и на https://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{2}, и итог равен https://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{0}+{a}_{0}{a}_{1}x+{a}_{0}{a}_{1}{a}_{2}{x}^{2}, что не равно тому выражению, что нам нужно вычислить.
1
265 / 255 / 43
Регистрация: 18.03.2012
Сообщений: 506
03.06.2012, 15:40 7
tezaurismosis, вы в основном правы, только количество "лишних" множителей не будут увеличиваться. Просто, везде будет "лишний" a[0]. Подправленный код
C#
1
2
3
4
5
6
7
8
9
10
double[] a = { 2.3, 4.7, 5.1, -9.2, 3.0 };  // здесь A0, A1, A2...
double x = 2; // точка, в которой вычисляется значение
double result = a[0];   // здесь будет результат
double curr = 1; // значение текущей степени для итераций в цикле
for (int i = 1; i < a.Length; i++)
{
    curr = curr * x;
    result += curr * a[i];
}
Console.WriteLine(result);
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.06.2012, 15:40

Деление многочлена на многочлен
Точнее деление функции на ее производную. Делаю алгоритм для теоремы Штурмана и проблема в том, что...

Найти значение многочлена
Здравствуйте! Очень прошу, помогите решить задачу, не понимаю вообще как делать. Вычислить значение...

Вычислить значение многочлена
Здравствуйте! Помогите, пожалуйста, решить задачу :gsorry:. Вычислить значение многочлена Pn(x) =...

Возведение в степень многочлена
Подскажите как возвести в степень многочлен, к прмеру: (x-1)^4 = x^4 - 4*x^3 + 6*x^2 - 4*x +1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.