Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 03.12.2015, 18:13   #1
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 230
По умолчанию

Вот есть код..

Дано:

an - коэффициент при старшем члене полинома

n - степень полинома;

x - массив корней полинома (x[0], x[1], …x[n]) ;

Вычислить:

массив a - массив коэффициентов полинома (a[0], a[1], …a[n]).

Код:
//Вычисляем коэффициенты полинома первой степени
a[1]= 1;    a[0] = -x[0];
//цикл по числу полиномов
for(int k=2;k<n; k++)
{
    //Вычисляем коэффициенты полинома степени k
    //Вначале старший коэффициент
    a[k]= a[k-1];
    //затем остальные коэффициенты, кроме последнего
    for(int i=k-1;i>0; i--)
    {
  a[i] = a[i-1]- a[i]*x[k-1];
    }
    //теперь младший коэффициент
    a[0]= -a[0]*x[k-1];
}
//Последний этап - умножение коэффициентов на an
for(int i=0; i<n; i++)
    a[i] = a[i]*an;
...

И вот например дан полином
3(x-2)(x+2)(x-1)(x+1)=3*x^4-15*x^2+12

Как видно степень полинома = 4, старший коэффициент = 3, корни полинома = 2, -2, 1, -1

И в ответе он выводит, что коэффициенты равны = 3, -3, -12, 12

А надо чтоб выводило 3, 0, -15, 12

В принципе выводит по сути правильно... Но надо чтоб выводило правильный коэффициент по каждой степени...

Помогите, пожалуйста!

Или может по другому выводить?

Или может тупо выводить нужные коэффициенты?

Последний раз редактировалось Stilet; 05.12.2015 в 09:32.
manchester_alan вне форума Ответить с цитированием
Старый 04.12.2015, 23:36   #2
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

может это от того, что ты их неправильно считашь?

a[n-1] = a[n] * Sum(x[i])
a[n - 2] = a[n] * Sum(x[i]*x[j]) i != j
a[n - 3] = a[n] * Sum(x[i]*x[j]*x[k]) i != j != k
......
a[0] = a[n] * x[n]*x[n-1]* .. *x[0]
f.hump вне форума Ответить с цитированием
Старый 05.12.2015, 15:15   #3
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 230
По умолчанию

Цитата:
Сообщение от f.hump Посмотреть сообщение
может это от того, что ты их неправильно считашь?

a[n-1] = a[n] * Sum(x[i])
a[n - 2] = a[n] * Sum(x[i]*x[j]) i != j
a[n - 3] = a[n] * Sum(x[i]*x[j]*x[k]) i != j != k
......
a[0] = a[n] * x[n]*x[n-1]* .. *x[0]
Ну может и так) а как правильно написать будет?
manchester_alan вне форума Ответить с цитированием
Старый 05.12.2015, 17:37   #4
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

как-то так

Код:
int x[8], a[8], t[8], n(4);


	x[0] = 1;
	x[1] = -1;
	x[2] = 2;
	x[3] = -2;


	a[n] = 3;



	a[n - 1] = 0;
	for (int j(0);j<n;j++) {
		t[j] = x[j];
		a[n - 1] += t[j];		
	}

	for (int i(n-2);i>=0;i--) {
		a[i] = 0;

		for (int j(0);j<n;j++) {
			t[j] = x[j]*(a[i + 1] - t[j]);
			a[i] += t[j];
		}

		a[i] /= (n - i);
	}

	for (int i(0);i<n;i++) a[i] *= a[n];
f.hump вне форума Ответить с цитированием
Старый 05.12.2015, 23:04   #5
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 230
По умолчанию

Цитата:
Сообщение от f.hump Посмотреть сообщение
как-то так

Код:
int x[8], a[8], t[8], n(4);


	x[0] = 1;
	x[1] = -1;
	x[2] = 2;
	x[3] = -2;


	a[n] = 3;



	a[n - 1] = 0;
	for (int j(0);j<n;j++) {
		t[j] = x[j];
		a[n - 1] += t[j];		
	}

	for (int i(n-2);i>=0;i--) {
		a[i] = 0;

		for (int j(0);j<n;j++) {
			t[j] = x[j]*(a[i + 1] - t[j]);
			a[i] += t[j];
		}

		a[i] /= (n - i);
	}

	for (int i(0);i<n;i++) a[i] *= a[n];
нули выводятся((( а так спасибо..)
manchester_alan вне форума Ответить с цитированием
Старый 05.12.2015, 23:14   #6
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 230
По умолчанию

поменял
Код:
a[n - 1] = 0;
на
Код:
a[n - 1] = 1;
и теперь выводит
3 6 -6 0
manchester_alan вне форума Ответить с цитированием
Старый 06.12.2015, 20:56   #7
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 230
По умолчанию

Цитата:
f.hump
как-нибудь по другому нельзя сделать?(
manchester_alan вне форума Ответить с цитированием
Старый 06.12.2015, 21:17   #8
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

наверно можно.
на данном этапе советую выполнить пошаговый трейс программы, мне всегда помогает.
f.hump вне форума Ответить с цитированием
Старый 24.12.2015, 17:42   #9
kaiwa
Новичок
Джуниор
 
Регистрация: 01.07.2013
Сообщений: 1
По умолчанию

не нашли правильное решение? тоже такая задача, запарился уже
kaiwa вне форума Ответить с цитированием
Старый 19.11.2020, 00:42   #10
SourceRaR
Новичок
Джуниор
 
Регистрация: 19.11.2020
Сообщений: 1
По умолчанию

Вот работающий корректно код:
Код:
// Массив корней
	double* x = new double[n];
	for (int i = 0; i < n; i++)
		x[i] = 0;

    // Массив коэффициентов
	double* a = new double[n + 1];
	for (int i = 0; i < n; i++)
		a[i] = 0;

    // {Вводим данные}

    // Старший коэффициент
    double an;

    // Первый и последний коэффициенты
	a[0] = - x[0];
	a[n] = 1;

    // Все остальные
	for (int i = 1; i < n; i++)
	{
		//Коэффициент высшей степени
               a[i] = a[i - 1] - x[i];

		for (int j = i - 1; j > 0; j--)
			a[j] = a[j - 1] - a[j] * x[i];

                // Коэффициент низшей степени    
		a[0] = - a[0] * x[i];
	}

    // Умножаем все не старший коэффициент
    for (int i = 0; i <= n; i++)
        a[i] = a[i] * an;
SourceRaR вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме от 7000 рублей в месяц



Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таблица биномиальных коэффициентов andrewllp1610 Помощь студентам 0 07.01.2014 13:59
Ввод коэффициентов функции Katerina3262 Помощь студентам 6 12.05.2012 20:08
Подсчёт коэффициентов [Паскаль] Pirotexnik Помощь студентам 6 11.12.2010 22:03
Расчет коэффициентов экспоненты metrim Microsoft Office Excel 4 01.09.2009 16:32


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Скидки на курсы GeekBrains 40%, выбирайте программу для себя