Форум программистов, компьютерный форум CyberForum.ru

Найти коэффициенты k-ого многочлена Чебышева - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Cортировка символьного двумерного массива по алфавиту http://www.cyberforum.ru/cpp-beginners/thread102461.html
// сtroku.cpp: определяет точку входа для консольного приложения. // Задание: вести с клавиатуры список фамилий ( в каждой строке по 1ой фамилии) и отсортироавть чтоб они шли в алфавитном порядке, помогите, не могу понять где ошиблась, причем конкретно #include "stdafx.h" #include "string.h" #include "stdio.h" #include "locale.h"
C++ Дано действительное число а, натуральное число N. Вычислить : P=a*(a-n)*(a-2*n)*...*(a-n^2) Решить прикладную задачу с помощью циклического вычислительного процесса. Дано действительное число а, натуральное число N. Вычислить : P=a*(a-n)*(a-2*n)*...*(a-n^2); Подскажите как правильно ее решить... //--------------------------------------------------------------------------- #include <vcl.h> #include <math.h> #include <iostream.h> http://www.cyberforum.ru/cpp-beginners/thread102460.html
C++ Как в цикле обратится к каждой цифре заданного числа?
Например, есть число 1234567890!!!! Как в цикле обратится к каждой цифре етого числа???
Поменять местами слова и удалить лишние пробелы C++
Ребят, помогите пожалуйста,у меня вот так задание С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 1000 символов (длина строки не должна превышать 70 символов). Имя файла должно иметь расширение DAT. Написать программу, которая: • Выводит текст на экран дисплея; • По нажатию произвольной клавиши поочередно выделяет в тексте заданные слова, которые...
C++ Выделить текст между запятыми из строки http://www.cyberforum.ru/cpp-beginners/thread102422.html
Такая проблема есть како-то текст "Privet,kak dela, poka" надо выделить из него текст в запятых kak dela. помогите плиз с кодом
C++ вставка символа здрасти, как сделать чтобы в консоли отображался символ ®? делаю вот так CharToOem("знак ®",mes); отображается просто как R подробнее

Показать сообщение отдельно
Sanych.by
 Аватар для Sanych.by
3 / 3 / 1
Регистрация: 01.03.2010
Сообщений: 3
11.03.2010, 15:47     Найти коэффициенты k-ого многочлена Чебышева
Идея решения:
Для нахождения многочлена следующего порядка необходимо иметь текущий и предыдущий.
Они будут хранится в массиве. Многочлен хранится в массиве в следующем виде:
коэффициенты хранятся в порядке возрастания степени (индекс элемента соответствует степени переменной). Например, массив [1, -2, 1, 0, ..., 0] является представлением многочлена x^2-2x+1.

Для вычисления многочлена следующей степени сохраняется массив текущего многочлена (для последующей записи его в массив предыдущего многочлена). После этого текущий массив умножаем на 2х. Умножение на х является повышением степени многочлена на 1, так как в массиве, которым представлен многочлен, коэффициенты хранятся в порядке возрастания степени, то для повышения степени необхожимо все элементы сдвинуть "вправо" на 1 (T[j] = T[j-1]). После этого массив поэлементно умножается на 2. Следующий шаг - вычитание предыдущего многочлена. Выполняется поэлементным вычитанием из уже умноженного массива, массива, представляющего предыдущий многочлен. После этого предыдущим многочленом становится текущий на момент начала цикла, значение которого было предварительно сохранено в начале цикла.

Повторяется k раз, где k - степень многочлена.

Реализация:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <stdio.h>
#include <stdlib.h>
#define MaxLength   20
int main()
{
    int k, i, j, NotBegin = 0;
    int Tcurr[MaxLength+1], Tprev[MaxLength+1];
    printf("Enter number k: ");
    scanf("%d", &k);
    /*
    Начальная инициализация массивов коэфф. многочлена.
    Коэфф. в массиве хранятся по возрастанию степени:
    элемент с нулевым индексом - свободный член,
    элемент с первым индексом - первая степень X и так далее
    То есть, индекс массива = степень X.
    */
    for(i = 0; i <= MaxLength; i++)
    {
        Tprev[i] = Tcurr[i] = 0;
    }
    Tprev[0] = 1; // T[0] = 1.
    Tcurr[1] = 1; // Т[1] = X.
    for(i = 2; i <= k; i++)
    {
        int buffer[MaxLength+1]; //Буфферный массив для сохранения предыдущего элемента.
    //Сохранение текущего многочлена, так как он станет T[n-1]
        for(j = 0; j <= MaxLength; j++)
        {
            buffer[j] = Tcurr[j];
        }
    //Умножение на 2*X.
        /*
        Умножением на Х - повышение степени многочлена на 1.
        Так как в массиве коэфф. хранятся по возврастанию,
        достаточно сдвинуть элементы "вправо", а нулевому элементу
        который является свободным членом присвоить нулевое значение.
        Старший элемент теряется.
        */
        for(j = MaxLength; j > 0; j--)
        {
            Tcurr[j] = Tcurr[j-1]*2;
            /*Более наглядно было бы написать так:
            Tcurr[j-1] *= 2;        //Умножение на 2.
            Tcurr[j] = Tcurr[j-1];  //Умножение на Х.
            */
        }
    //Вычитание
        Tcurr[0] = 0;
        /*
        Следующий шаг - вычитание T[n-2] многочлена,
        который представлен массивом Tprev.
        Это производится поэлементным вычитанием массивов.
        */
        for(j = 0; j <= MaxLength; j++)
        {
            Tcurr[j] -= Tprev[j];
        }
    /*
    Теперь Tcurr вычислен, а Tprev необходимо присвоить значение
    Tcurr на начало цикла, которое было сохранено в buffer.
    */
        for(j = 0; j <= MaxLength; j++)
        {
            Tprev[j] = buffer[j];
        }
    }
    //Вывод результата в виде строки.
    for(i = MaxLength; i >= 0; i--)
    {
        if(Tcurr[i])
        {
            if(Tcurr[i] > 0 && NotBegin)
                printf("+");
            printf("%d", Tcurr[i]);
            if(i)
                printf("x^%d", i);
            NotBegin = 1;
        }
    }
    return 0;
}
 
Текущее время: 12:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru