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

Đề tài: Hỏi về đa thức Lagrange

  1. #1
    Ngày gia nhập
    03 2008
    Bài viết
    7

    Mặc định Hỏi về đa thức Lagrange

    Đề bài là hãy viết chương trình tính gần đúng hàm số y =f(x) với bảng giá trị x, y cho trước = đa thức Lagrange.
    Em viết như sau để tình L[i] thì chạy được.

    Code:
    #include <stdio.h>
    #define n 2
    
    main()
    {
    float x[n], y[n], temp, X;
    int i,j;
    
    printf("Nhap vao so x: ");
    scanf("%f",&X);
    
    for (i=0; i<= n; i++)
    {
    printf(" x[%d] ", i);
    scanf("%f", &x[i]);
    }
    
    
    for(i=0; i <= n; i++)
    {
    
    temp = 1;
    for(j=0; j <= n; j++)
    
    if (j!=i) temp = temp*( (X-x[j]) / (x[i]-x[j]) );
    
    printf("\n%f",temp);
    
    
    }
    
    }
    Nhưng thay thay biến temp = mảng L[i] thì lại ko chạy được

    Code:
    #include <stdio.h>
    #define n 2
    
    void main()
    {
    float x[n], y[n], L[n], X;
    int i,j;
    
    printf("Nhap vao so x: ");
    scanf("%f",&X);
    
    for (i=0; i<= n; i++)
    {
    printf(" x[%d] ", i);
    scanf("%f", &x[i]);
    }
    
    
    
    
    for(i=0; i <= n; i++)
    {
    
    L[i] = 1;
    for(j=0; j <= n; j++)
    
    if (j!=i) L[i] = L[i]*( (X-x[j]) / (x[i]-x[j]) );
    
    
    printf("\n%f",L[i]);
    
    
    }
    
    }
    Xin hỏi lý do. Mong các anh giúp đỡ
    Thanks
    Đã được chỉnh sửa lần cuối bởi it4viet : 24-09-2008 lúc 03:53 AM.

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Mình thấy nó cho kết quả giống nhau mà, không sai gì cả. Nhưng bạn cần chú ý cách trình bày code
    Code:
    #include <stdio.h>
    #define n 2
    
    void main()
    {
    	float x[n], y[n], L[n], X;
    	int i,j;
    	printf("Nhap vao so x: ");
    	scanf("%f",&X);
    	for (i=0; i<= n; i++)
    	{
    		printf(" x[%d] ", i);
    		scanf("%f", &x[i]);
    	}
    	for(i=0; i <= n; i++)
    	{
    		L[i] = 1;
    		for(j=0; j <= n; j++)
    			if (j!=i)
    				L[i] = L[i]*( (X-x[j]) / (x[i]-x[j]) );
    		printf("\n%f",L[i]);
    	}
    }

  3. #3
    Ngày gia nhập
    03 2008
    Bài viết
    7

    Mình dùng C-Free dịch thì lại được rồi. Thanks bạn
    Nhưng mình có 1 thắc mắc

    Code:
    #include <stdio.h>
    #define n 2
    
    void main()
    {
    	float x[n], y[n], L[n], X;
    	int i,j;
    	printf("Nhap vao so x: ");
    	scanf("%f",&X);
    	for (i=0; i<= n; i++)
    	{
    		printf(" x[%d] ", i);
    		scanf("%f", &x[i]);
    	}
    
    	for (i=0; i<= n; i++)
    	{
    		printf(" y[%d] ", i);
    		scanf("%f", &y[i]);
    	}
    
    	for(i=0; i <= n; i++)
    	{
    		L[i] = 1;
    		for(j=0; j <= n; j++)
    			if (j!=i)
    				L[i] = L[i]*( (X-x[j]) / (x[i]-x[j]) );
    		printf("\n%f",L[i]);
    	}
    }
    Khi mình thêm đoạn bôi đen vào thì lại nhận được kết quả khác. Trong khi biểu thức tính L[i] của mình ko liên quan gì đến y[i]. Lỗi này là sao vậy
    Thanks
    Đã được chỉnh sửa lần cuối bởi it4viet : 24-09-2008 lúc 11:32 AM.

  4. #4
    Ngày gia nhập
    03 2008
    Bài viết
    7

    Đã update câu hỏi. Mong mọi người chỉ giùm

  5. #5
    Ngày gia nhập
    03 2008
    Bài viết
    7

    Đang cần gấp. Ai giúp em với ạ

  6. #6
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Mặc định Hỏi về đa thức Lagrange

    Khi mình thêm đoạn bôi đen vào thì lại nhận được kết quả khác. Trong khi biểu thức tính L[i] của mình ko liên quan gì đến y[i]. Lỗi này là sao vậy
    Đúng là hơi quái nhưng mình đã tìm ra lỗi rồi
    - Khi bạn khai báo biến float x[n], y[n], L[n], X; ở đây n=2 bạn đã cấp phát cho mỗi mảng x,y,L được 2 vùng nhớ mỗi vùng 4 byte
    - Nhưng khi bạn nhập mảng: for (i=0; i<= n; i++) nhìn vòng lặp có thể thấy bạn nhập đến 3 phần tử, vậy là mảng bị thiếu nên giá trị nhập vào cuối không còn chính xác, một số compile C khá thoải mái đã không báo lỗi này, dẫn đến kết quả thu được bị sai không rõ nguyên nhân.
    - Giờ bạn chỉ sửa lại một chút phần nhập mảng x,y là chạy tốt.
    Have fun!

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: 3
    Bài viết cuối: 11-11-2014, 11:52 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. Bài tập C nội suy đa thức lagrange
    Gửi bởi bongdang88 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 10-05-2010, 03:43 AM

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