Главная
>>
Каталог задач
>>
Математика
>>
Вычисление значения полинома
Aвтор:
this
Дата:
12.08.2004
Просмотров: 63612
реализации(C#: 2шт...)
+добавить
Рассмотрим программу для расчета значения полинома в общем виде:
y = anxn + an-1xn-1 + ... + a1x1 + a0
Решение "в лоб" даст нам:
y = a[0]
xi = 1
for i = 1 to n
xi = x * xi
y = y + a[i] * xi
Код делает 2*n умножений(n - размерность полинома). Многовато, с учетом того, что умножение не самая элементарная операция. К счастью существует более быстрая программа.
По схеме Горнера значение полинома может быть вычислено, следующим образом:
y = a[n]
for i = n-1 downto 0
y = x * y + a[i]
В программе используется n умножений и она обычно работает вдвое быстрее.
Реализации:
C#(2)
+добавить
1)
Расчет полинома, решение "в лоб" на C#, code #88[автор:this]
static float PolinomSlow(float[] a, float x)
{
float y = a[0];
float xi = 1;
for (int i = 1; i <= a.Length-1; i++)
{
xi = x * xi;
y = y + a[i] * xi;
}
return y;
}
2)
Расчет полинома по схеме Горнера на C#, code #89[автор:this]
static float PolinomGorner(float[] a, float x)
{
int n = a.Length - 1;
float y = a[n];
for (int i = n - 1; i >= 0; i--)
{
y = x*y + a[i];
}
return y;
}