Với x(0) = 0, x(1) = 1, y(0) = 1, y(1) = -1 khi bậc n = 1, ta đc đa thức là P(z) = -2z+1, e có giải tay theo Horner thì P(z) tại z = 2 là -3 nhưng khi code thì kết quả bị sai. Mọi người cho e hỏi là e sai ở chỗ nào và cách sửa như thế nào với ạ.
#include <iostream>
using namespace std;
void giaiHPT(int a1,int b1,int c1,int a2,int b2,int c2){
// a1x+b1y = c1
cout << endl ;
cout << "Nhap he so a1 " << endl ;
cin >> a1 ;
cout << "Nhap he so b1" << endl ;
cin >> b1 ;
cout << "Nhap he so c1" << endl ;
cin >> c1;
// a2x+b2y = c2
cout << "Nhap he so a2" << endl ;
cin >> a2 ;
cout << "Nhap he so b2" << endl ;
cin >> b2 ;
cout << "Nhap he so c2" << endl;
cin >> c2 ;
float D,Dx,Dy;
D = a1*b2 - a2*b1 ;
Dx = c1*b2 - c2*b1;
Dy = a1*c2 - a2*c1;
if (D == 0){
if(Dx+Dy == 0)
cout << "He phuong trinh co vo so nghiem" << endl;
else cout << "He phuong trinh vo nghiem" << endl;
}
else {
int x = Dx/D ;
int y = Dy/D ;
cout << "He phuong trinh co nghiem " << endl ;
cout << "X = " << x << endl;
cout << "Y = " << y << endl ;
cout << "Ta co da thuc P(z) la: " << x << "z + " << y ;
}
}
int Horner(int* a, int n, int z) // gia tri tai diem z =
{
int result = a[n];
for (int i = n - 1; i >= 0; --i)
result = result * z + a[i];
return result;
}
int main()
{
float z ;
int a1,b1,c1,a2,b2,c2 ;
int n;
cout << "Nhap so bac cua da thuc: ";
cin >> n;
int a[n];
int *y = new int[n]; // tao mang y bang cap phat dong
for (int i = 0; i <= n; i++)
{
cout << "Nhap gia tri y(" << i << "): ";
cin >> y[i];
}
int *x = new int[n];
for (int i = 0; i <= n; i++)
{
cout << "Nhap gia tri x(" << i << "): ";
cin >> x[i];
}
cout << endl;
cout << "X\t\tY" << endl;
for(int i = 0; i <= n ;i++){
cout << x[i] << "\t\t" << y[i] << endl;
}
if(n == 0){
for(int i = 0; i <= n;i ++)
cout << "Da thuc P(z) co dang la: a0 = y = " << y[i] ;
}
else if(n == 1){
for(int i = 0; i < n; i++)
cout << "Da thuc P(z) di qua 2 diem co dang la: a1z^1 + a0 = P(z) = y" << endl ;
cout << "Ta co HPT tuong ung:" << endl;
for(int i = 0; i < n; i++)
cout << "1. " << x[i] << "a1 + " << "b1" << " = " << y[i] << endl;
for(int i = 0; i < n; i++)
cout << "2. " << x[i]+1 << "a2 + " << "b2" <<" = " << y[i+1] ;
giaiHPT(a1,b1,c1,a2,b2,c2);
cout << " Nhap gia tri tai z = ";
cin >> z;
int p = Horner(a,n,z);
cout << "P(" << "z) " << " = " << p << endl;
}
else if (n == 2){
cout << "Da thuc P(z) di qua 3 diem co dang la: a2z^2 + a1z^1 + a0";
}
cout << endl;
//bieuthuc();
cout << endl;
delete[] x ;
delete[] y ; // giai phong vung nho da cap phat dong
return 0;
}