1. Phép cộng hai đa thức: Giả
sử chúng ta có hai đa thức A(x) bậc n và B(x) bậc m với n > m. Khi cộng hai đa
thức này, chúng ta cộng lần lượt các hệ số cùng bậc của chúng với nhau. Ta có
chương trình sau :
Chương trình 1-3
#include
<conio.h>
#include
<stdio.h>
#define
t 10
void
main(void)
{
int k,n,m;
float a[t],b[t],c[t];
clrscr();
printf("Cho bac cua da thuc A n = ");
scanf("%d",&n);
printf("Vao cac he so a\n");
for (k=1;k<=n+1;k++)
{
printf("a[%d] = ",k-1);
scanf("%f",&a[k]);
}
printf("Cho bac cua da thuc B m =
");
scanf("%d",&m);
printf("Vao cac he so
b\n");
for (k=1;k<=m+1;k++)
{
printf("b[%d] =
",k-1);
scanf("%f",&b[k]);
}
printf("\n");
for (k=1;k<=n+1;k++)
if (k<=n-m)
c[k] = a[k];
else
c[k] = a[k] + b[k-n+m];
printf("Cac he so cua da thuc tong C
la :\n");
for (k=1;k<=n+1;k++)
printf("%.4f\t",c[k]);
getch();
}
2. Phép nhân hai đa thức: Để
thấy rõ thuật toán xác định các hệ số
của đa thức C(x) là kết quả của phép nhân hai đa thức A(x) và B(x) ta cho một
ví dụ cụ thể :
A(x)
= aox5 + a1x4 + a2x3
+ a3x2+ a4x + a5
B(x)
= box3 + b1x2 + b2x
+ b3
C(x)
= A(x).B(x)
= aobox8 + (aob1 + a1bo)x7
+( aob2 + a1b1 + a2bo)x6
+ (aob3
+ a1b2 + a2b1+ a3bo
)x5 + (a1b3 + a2b2 + a3b1
+ a4bo)x4
+ (a2b3 + a3b2
+ a4b1 + a5b+)x3 + ( a3b3
+ a4b2 + a5b1)x2 + a5b2x
+ a5b3
Các hệ số của đa thức kết quả là
:
Co
= aobo
C1
= aob1 + a1bo
C2
= aob2 + a1b1 + a2bo
C3
= aob3 + a1b2 + a2b1+
a3bo
C4
= a1b3 + a2b2 + a3b1
+ a4bo
C5
= a2b3 + a3b2 + a4b1
+ a5bo
C6
= a3b3 + a4b2 + a5b1
C7 = a5b2
C8
= a5b3
Ta nhận thấy là hệ số Ck của C(x) là tổng các tích các hệ số của đơn thức
bậc i của A(x) và bậc (k-i) của B(x). Chỉ số i = 0 khi k <= m + 1 và i = k +
m khi k > m+1. Chỉ số j = k khi k <= n + 1 và j = n +1 khi k > n + 1.
Chương trình tính tích hai đa thức :
Chương trình 1-4
#include
<conio.h>
#include
<stdio.h>
#define
t 10
void
main()
{
int k,n,m,l,i,j,p;
float a[t],b[t],c[2*t];
clrscr();
printf("Cho bac cua da thuc A n
= ");
scanf("%d",&n);
printf("Vao cac he so
a\n");
for (k=1;k<=n+1;k++)
{
printf("a[%d] =
",k-1);
scanf("%f",&a[k]);
}
printf("Cho bac cua da thuc B m
= ");
scanf("%d",&m);
printf("Vao cac he so
b\n");
for (k=1;k<=m+1;k++)
{
printf("b[%d] =
",k-1);
scanf("%f",&b[k]);
}
printf("\n");
l=n+m;
for (k=1;k<=l+1;k++)
{
if (k<=(n+1))
j=k;
else
j=n+1;
if (k<=(m+1))
p=1;
else
p= k-m;
c[k]=0;
for (i=p;i<=j;i++)
c[k] = c[k] + a[i]*b[k-i+1];
}
printf("Cac
he so cua da thuc tich C voi bac %d la :\n",l);
for (k=1;k<=l+1;k++)
printf("%.4f\t",c[k]);
getch();
}
3. Chia hai đa thức: Giả
sử ta có hai đa thức là An(x) và Bm(x) với n³m. Thương
hai đa thức này là :
Chương trình sau thực hiện việc
chia 2 đa thức :
Chương
trình 1-5
#include
<stdio.h>
#include
<conio.h>
#include
<math.h>
#define
t 10
void
main()
{
int k,n,m,l,i,j,jp;
float a[t],b[t],q[t],r[t],epsi;
clrscr();
printf("Cho bac cua da thuc A n
= ");
scanf("%d",&n);
printf("Vao cac he so
a\n");
for (k=1;k<=n+1;k++)
{
printf("a[%d] =
",k-1);
scanf("%f",&a[k]);
}
printf("\n");
printf("Cho bac cua da thuc B m
= ");
scanf("%d",&m);
printf("Vao cac he so
b\n");
for (k=1;k<=m+1;k++)
{
printf("b[%d] =
",k-1);
scanf("%f",&b[k]);
}
printf("\n");
printf("Cho gia tri sai so
epsilon epsi = ");
scanf("%f",&epsi);
if ((m+1)>1)
{
l=n-m+1;
for (i=0;i<=t;i++)
r[i]=a[i];
j=n;
for (k=1;k<=l;k++)
{
q[k]=r[1]/b[1];
for
(i=1;i<=j;i++)
if ((i<m+1))
r[i]=r[i+1]-q[k]*b[i+1];
else
r[i]=r[i+1];
j=j-1;
}
while
((abs(r[i])<epsi)&&(j>0))
{
for
(i=1;i<=j;i++)
r[i]=r[i+1];
j=j-1;
}
if (abs(r[1])<epsi)
r[1]=0.0;
jp=j+1;
}
else
{
l=n+1;
for (k=1;k<=l;k++)
q[k]=a[k]/b[1];
jp=1;
r[1]=0.0;
}
printf("\n");
printf("Cac he so cua thuong
Q(x) bac %d la : ",l);
for (k=1;k<=l;k++)
printf("%.3f\t",q[k]);
printf("\n");
printf("Cac he so cua phan du
R(x) bac %d la : ",jp-1);
for (k=1;k<=jp;k++)
printf("%.3f",r[k]);
getch();
}
Tags:
Phương Pháp Tính