#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
我要做的就是打印上表。
最佳答案
您将顺序记错了。
你有:
Yn = 1/2 *(Yn-1)+ 1/3 *(Yn-2)
但是应该是:
Yn = 1/2 *(Yn-1)+ 1/3 *(Yn-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