Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: nội suy đa thức lagrange

  1. #1
    Ngày gia nhập
    05 2010
    Bài viết
    3

    Wink nội suy đa thức lagrange

    Ai có bài lập trình C về nội suy đa thức lagrange gửi giúp cho mình với.huhuhuuhhu.nhanh lên cái nha. thứ 2 mình phải nộp roài mà bài của mình bị lỗi không chay được.Thank trước nhé:(:(

  2. #2
    Ngày gia nhập
    04 2010
    Nơi ở
    Đà Lạt, Lâm Đồng
    Bài viết
    255

    Up cái bài bị lỗi lên đây. Lu loa thế thì ai biết đường nào mà giúp >"<
    Hoa Tử Đinh Hương Phụng Vũ Phi Y

  3. #3
    Ngày gia nhập
    05 2010
    Bài viết
    3

    Bài đó đây!nó không có lỗi.chạy được. nhưng nhiều khi kết quả sai.
    PHP Code:
    #include<stdio.h>
         #include<conio.h>
         #define max 100
            
    void nhap(float a[max][max],int n)
           {
              
    float t;
             
    int i,j;
             for(
    i=0;i<n;i++)
                  for(
    j=0;j<n;j++)
                   {
                      
    printf("\nA[%d][%d]=",i,j);
                  
    scanf("%f",&a[i][j]);
                   }
          
    printf("\n\n");
        }
          
    void xuat(float a[max][max],int n)
          {
             
    int i,j;
              for(
    i=0;i<n;i++)
               {    for(
    j=0;j<n;j++)
                      
    printf("%0.2f ",a[i][j]);
                        
    printf("\n\n");
                }
          }
           
    void nhapMTB(float b[max],int n)
        {
               
    int i;
             for(
    i=0;i<n;i++)
                {
                    
    printf("\nB[%d]=",i);
                    
    scanf("%f",&b[i]);
                 }
          }
           
    void xuatMTB(float b[max],int n)
           {
              
    int i;
               for(
    i=0;i<n;i++)
                  
    printf("\nB[%d]=%0.2f",i,b[i]);
           }
          
    void phanra(float a[max][max],float L[max][max],float U[max][max],int n){
              
    int i,j,k;
               
    float s;
               for(
    i=0;i<n;i++)
                  for(
    j=0;j<n;j++)
                    {
                        
    U[i][j]=0;
                        if(
    i==j)
                          
    L[i][j]=1;
                       else
                          
    L[i][j]=0;
                    }
             for(
    j=0;j<n;j++)
                 {
                   for(
    i=0;i<=j;i++)
                        {
                           
    s=0;
                           for(
    k=0;k<i;k++)
                              
    s+=L[i][k]*U[k][j];
                             
    U[i][j]=a[i][j]-s;
                       }
                    for(
    i=j+1;i<n;i++)
                      {
                          
    s=0;
                          for(
    k=0;k<j;k++)
                               
    s+=L[i][k]*U[k][j];
                               if(
    U[j][j]!=0)
                                  
    L[i][j]=(a[i][j]-s)/U[j][j];
                        }
                  }
           }
           
    //------------------------------------------------------//
           
    int giai_LX(float a[max][max],float x[max],float b[max],int n)
           {
               
    int i,j;
               for(
    i=0;i<n;i++)
              {
                 
    float s=0;
                  for(
    j=0;j<i;j++)
                        
    s+=a[i][j]*x[j];
                  if(
    a[i][i]!=0)
                        
    x[i]=(b[i]-s)/a[i][i];
                 else
                     {
                        
    getch();
                        return 
    0;
                     }
               }
               return 
    1;
           }
           
    //------------------------------------------------------//
           
    int giaiUX(float U[max][max],float x[max],float y[max],int n)
           {
               
    int i,j;
              for(
    i=n-1;i>=0;i--)
                  {
                     
    float s=0;
                     for(
    j=n-1;j>i;j--)
                        
    s+=U[i][j]*x[j];
                     if(
    U[i][i]!=0)
                       
    x[i]=(y[i]-s)/U[i][i];
                    else
                       {
                          
    getch();
                          return 
    0;
                       }
              }
              return 
    1;
          }
          
    void giai_AX(float a[max][max],float x[max],float b[max],int n)
          {
              
    float L[max][max],U[max][max],y[max];
              
    phanra(a,L,U,n);
              
    giai_LX(L,y,b,n);
              
    giaiUX(U,x,y,n);
          }
          
    float det(float a[max][max],int n)
          {
              
    float d=1,L[max][max],U[max][max];
             
    phanra(a,L,U,n);
              
    int i;
              for(
    i=0;i<n;i++)
                
    d*=L[i][i]*U[i][i];
              return 
    d;
          }
         
    void tim_mt_nghichdao(float a[max][max],float b[max][max],int n)
          {
              
    int i,j;
              
    float I[max],X[max];
              for(
    j=0;j<n;j++){
                 for(
    i=0;i<n;i++)
                 if(
    i==j)
                    
    I[i]=1;
                 else
                    
    I[i]=0;
                
    giai_AX(a,X,I,n);
                 for(
    i=0;i<n;i++)
                    
    b[i][j]=X[i];
              }
          }
          
    int nhapxy(float a[max],float b[max],int n)
          {
              
    int i;
              for(
    i=0;i<=n;i++)
              {
                 
    printf("Nhap x[%d] = ",i);scanf("%f",&a[i]);
                 
    printf("Nhap y[%d] = ",i);scanf("%f",&b[i]);
              }
              return 
    0;
          }
          
    int inxy(float a[max],float b[max],int n)
          {
              
    int i;
              for(
    i=0;i<=n;i++)
              {
                 
    printf("%.2f - %.2f\n",a[i],b[i]);
              }
              return 
    0;
          }
          
    int chuyen(float x[max],float y[max],int n,float a[max][max], float b[max])
          {
              
    int i,j;
              
    float tam;
              for(
    i=0;i<=n;i++) b[i]=y[i];
              for(
    i=0;i<=n;i++)
              {
                 
    a[i][0]=1;
                 
    tam=1;
                 for(
    j=1;j<=n;j++)
                 {
                    
    tam*=x[i];
                    
    a[i][j]=tam;
                }
              }
              return 
    0;
          }
          
    int indathuc(float a[max],int n)
          {
              
    int i;
              
    printf("f(x) = %.2f",a[0]);
              for(
    i=1;i<=n;i++){
                if(
    a[i]>0printf(" + %.2fx^%d",a[i],i);
                else if(
    a[i]<0printf(" - %.2fx^%d",-a[i],i);
              }
          }
          
    float ytaix(float a[],float b[],int n,float x)
          {
              
    int i,j;
             
    float lx,px;
              
    lx=0;
              
    //inxy(a,b,n);
              
    for(i=0;i<=n;i++)
              {
                 
    px=1;
                 for(
    j=0;j<=n;j++)
                 {
                    if(
    j!=i)
                    {
                       
    px*=(x-a[j])/(a[i]-a[j]);
                    }
                 }
                 
    printf("px[%d] = %f\n",i,px);
                 
    lx+=b[i]*px;
              }
              return 
    lx;
          }
          
    float ytaix2(float b[],int n,float x)
          {
            
    int i;
              
    float kq=b[0],x_mu=1;
              for(
    i=1;i<=n;i++)
              {
                 
    x_mu*=x;
                 
    kq+=b[i]*x_mu;
              }
              return 
    kq;
          }
          
    int main()
          {
              
    int n;
              
    float a[max][max],b[max],x[max],y[max],L[max][max],U[max][max],x1[max],y1[max],x0;
              
    printf("Nhap bac cua da thuc: ");scanf("%d",&n);
             
    nhapxy(x,y,n);
              
    chuyen(x,y,n,a,b);
              
    phanra(a,L,U,n+1);
              
    giai_LX(L,y1,b,n+1);
              
    giaiUX(U,x1,y1,n+1);
              
    //xuat(a,n+1);
              //printf("\n---------------------\n");
              //xuatMTB(b,n+1);
             
    printf("\n---DA THUC BAN DAU---\n");
              
    indathuc(x1,n);
              
    char c;
              
    point1:
              
    printf("\n---------------------\n");
              
    printf("Nhap x = ");scanf("%f",&x0);
              
    printf("Ket qua theo phuong phap Lagrange: y(%.2f) = %.2f\n",x0,ytaix(x,y,n,x0));
              
    printf("Ket qua tinh da thuc: y(%.2f) = %.2f\n",x0,ytaix2(x1,n,x0));
             
    printf("Ban co tiep tuc ko? (C/K)\n");c=getch();
              if(
    c=='c' || c=='C') goto point1;
             return 
    0;
          } 
    Đã được chỉnh sửa lần cuối bởi peterdrew : 09-05-2010 lúc 11:24 PM. Lý do: Đặt code vào thẻ!

  4. #4
    Ngày gia nhập
    05 2010
    Bài viết
    3

    huhuhuhhu.vẫn chưa có giải đáp àh.còn mấy tiếng nữa thôi.HuHu

Các đề tài tương tự

  1. Bài tập C++ chương trình thức hiện nội suy hàm bằng đa thức nội suy Lagrange
    Gửi bởi hoangkianh31592 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 12-02-2011, 09:18 PM
  2. Bài tập C++ Hàm đa thức nội suy Lagrange
    Gửi bởi hoangkianh31592 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 26-01-2011, 10:58 AM
  3. Hỏi về đa thức Lagrange
    Gửi bởi it4viet trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 24-09-2008, 07:42 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn