Мой вопрос о повторении чисел и последовательностей в C ++ и как их печатать? - PullRequest
0 голосов
/ 10 октября 2018
#include <iostream> 
#include <cmath>

using namespace std;

int main()
{
    int i;
    const int N = 5;
    for (i = 1; i <= N; i++){
        double Yn = (1.0 / 2) * (Yn - 1) +  (1.0 / 3) * (Yn - 2);
        std::cout << i << " " << "= "<< " " << Yn;
    std::cout << std::endl;
    }

    return 0;
}

У меня есть уравнение и таблица последовательностей.

Уравнение

Y[n] = 1/2*(Y[n-1]) + 1/3*(Y[n-2])

Y[1] = 0.5, Y[2] = 0.4 

Таблица, показанная ниже, должна быть напечатана с использованием циклов for.

N -- Yn  
1 -- 0.5  
2 -- 0.4  
3 -- 0.366667  
4 -- 0.316667  
5 -- 0.280556  

Все, что мне нужно сделать, это распечатать таблицу выше.

1 Ответ

0 голосов
/ 10 октября 2018

Вы записали неверную последовательность.

У вас есть:

Yn = 1/2 * (Yn - 1) + 1/3 * (Yn - 2)

Но это должно быть:

Y n = 1/2 * (Y n-1 ) + 1 /3 * (Y n-2 )

Таким образом, вам нужно отслеживать два предыдущих числа в последовательности, чтобы вычислить следующее:

int i=1;
const int N = 5;
double Y_prev1 = 0.4;
double Y_prev2 = 0.5;
std::cout << i++ << " " << "= "<< " " << Y_prev2 << std::endl;
std::cout << i++ << " " << "= "<< " " << Y_prev1 << std::endl;
for (; i <= N; i++){
    double Y = (1.0 / 2) * (Y_prev1) +  (1.0 / 3) * (Y_prev2);
    std::cout << i << " " << "= "<< " " << Y;
    std::cout << std::endl;
    Y_prev2 = Y_prev1;
    Y_prev1 = Y;
}

Вывод:

1 =  0.5
2 =  0.4
3 =  0.366667
4 =  0.316667
5 =  0.280556
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...