TÍNH GIÁ TRỊ CỦA ĐA THỨC(2)


 TÍNH GIÁ TRỊ CỦA ĐA THỨC
< P2> 

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUF_BdClRBarE_r6-W53yMhQF5IOaGKC2WyqgrY2YhovGf0ZdTCyLijDQfb_RSqt0p6qHVN5tiVn3u9VO8ziT1vj8PcKQEQP0Za8T8E-Il_ngBA7uCgR_-kr4wE4wuRzzAcG68fuITW08/s200/horner.png
Sơ đồ Horner tổng quát: Giả sử chúng ta có đa thức :
Pn(x) = a0x­­n  + a1x­­n - 1 + a2x­­n - 2 +....+ an                                                                      (1)
Khai triển Taylor của đa thức tại x = xo có dạng :
     
  (2)
Mặt khác chúng ta có thể biến đổi đa thức về dạng :
            Pn(x) = (x - xo)Pn-1(x) + Pn(xo)                                                                        (3)
Trong đó  Pn-1(x) là đa thức bậc n - 1 và có dạng :
            Pn-1 (x) = box­­n-1  + bo-1x­­n - 2 + b2x­­n - 3 +....+ bn-1                                                            (4)
Thuật toán để tìm các hệ số nhận được bằng cách so sánh (1) và (3) :
                        bo = ao
                        bi = ai +  bi-1xo
                        bn = Pn(xo)
So sánh (2) và (3) ta có :
       


hay :


và khi chia hai vế cho (x - x0) ta nhận được :
                         
       (5)             
So sánh (4) và (5) ta nhận được kết quả :
                             


Trong đó Pn-1(x) lại có thể phân tích giống như Pn(x) dạng (3) để tìm ra Pn-1(xo). Quá trình này được tiếp tục cho đến khi ta tìm hết các hệ số của chuỗi Taylor của Pn(x)
Tổng quát thuật toán thể hiện ở bảng sau:
           Pn(x)        ao                      a1         a2         a3            ...         an-1                   an
          x = xo       0                    boxo     b1xo       b2xo                       bn-2xo               bn-1xo

         P+-1(x)      bo                         b1         b2         b3           ...         bn-1                  bn = Pn(xo)
Để hiểu rõ hơn chúng ta lấy một ví dụ cụ thể sau: Khai triển đa thức sau tại x0 = 2
            P(x) = x5 - 2x4 + x3 -5x + 4
Ta lập bảng tính sau
:

                     2             1          -2         1          0          -5         4
                                    0          2         0          2          4         2         
                        2          1          0         1          2          -1         2 = P(2)/0!
                                    0          2         4          10        24
                    2              1          2         5          12         23 = P'(2)/1!
                                    0         2           8          26
                    2              1          4         13        38 = P"(2)/2!
                                    0          2         12       
                        2          1          6         25 = P"'(2)/3!  
                                    0          2        
                         2         1          8 = P""(2)/4!  
                                    0
                                  1 = P""'(2)/4!
           
Như vậy :
                        Pn(x) = (x - 2)5 + 8(x - 2)4  + 25(x - 2)3  + 38(x - 2)2 + 23(x - 2) + 2
            Chương trình sau dùng để xác định các hệ số của chuỗi Taylor của đa thức P(x) tại x0 = 2.

Chương trình 1-2


#include <conio.h>
#include <stdio.h>
#define  m  10
void main(void)
  {
     float a[m],b[m],c[m];
     int n,i,j,k;
     float x;
     clrscr();
     printf("Cho bac cua da thuc n = ");
     scanf("%d",&n);
     printf("Cho gia tri x = ");
     scanf("%f",&x);
     printf("Vao cac he so a\n");
     for (k=n;k>=0;k--)
       {
             printf("a[%d] = ",n-k);
             scanf("%f",&a[k]);
       }
     printf("\n");
     b[n] = a[n];
     c[n] = a[n];
     for (k=0;k<=n-1;k++)
       {
              for (i=n-1;i>=k;i--)
                b[i] = b[i+1]*x + a[i];
              c[k] = b[k];
              for (j=n;j>=k+1;j--)
                a[j] = b[j];
       }
     printf("\nSo do Horner tong quat");
     printf("\nKhai trien tai x = %.4f\n",x);
     for (k=n;k>=0;k--)
               printf("%10.4f\t",c[k]);
     getch();
  }
Ntech Developers

Programs must be written for people to read, and only incidentally for machines to execute.

Post a Comment

Previous Post Next Post