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

Đề tài: Hàm legendre đệ quy ko tính được.

  1. #1
    Ngày gia nhập
    09 2011
    Bài viết
    0

    Mặc định Hàm legendre đệ quy ko tính được.

    Chào các bạn, hôm nay mình đang làm cái chương trình C truyền số liệu để Gnuplot vẽ đồ thị hàm legendre tính bằng đệ quy.
    Code:
    #include "stdio.h"
    
    int main()
    {
        FILE *pipe = popen("E:\\pmht\\gnuplot\\binary\\pgnuplot -persist","w");
        //fprintf(pipe,"f(x)= 0.125*(x*x*x*x*35-30*x*x+3) \n");
        fprintf(pipe, "f(x,n)= (n==0)?1:((n==1)?x:(((2*n-1)/n)*x*f(x,(n-1))-((n-1)/n)*f(x,(n-2)))) \n");
        //fprintf(pipe,"f(x,n)= if(n==");
        fprintf(pipe,"set xrange [-1:1] \n");
        fprintf(pipe,"set yrange [-1:1] \n");
        //fprintf(pipe,"set sample 100 \n");
        //fprintf(pipe,"set log y\n");
        fprintf(pipe,"print f(0,2) \n");
        fprintf(pipe,"plot f(x,4) with lines \n");
        close(pipe);
        return 0;
    
    }
    Nhưng vẽ mãi vẫn sai, vì ở Gnuplot hàm ko dùng được if, else nên mình phải dùng dạng ? và : để tính nên mình nghĩ mình sai ở đoạn bôi đỏ, biết sai nhưng chỉnh mãi ko ra có bạn nào biết ko ? Mình xin cảm ơn.

  2. #2
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Vì mình chả pro gì nên chả biết cái chương trình bạn làm cái việc gì
    Tuy nhiên ở fprintf(...) mà cả cái đám đỏ đỏ đấy bạn đặt trong " " thì nó chỉ in cái đám kí tự đó vào file thôi chứ có tính toán dc gì đâu @@
    Um Mani Padme Hum...!!

  3. #3
    Ngày gia nhập
    09 2011
    Bài viết
    0

    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    Vì mình chả pro gì nên chả biết cái chương trình bạn làm cái việc gì
    Tuy nhiên ở fprintf(...) mà cả cái đám đỏ đỏ đấy bạn đặt trong " " thì nó chỉ in cái đám kí tự đó vào file thôi chứ có tính toán dc gì đâu @@
    Không, cái trong dấu "" là cái mình gửi vào chương trình gnuplot để tính bạn ạ. lệnh fprintf chứ có phải lệnh printf đâu?

  4. #4
    Ngày gia nhập
    09 2011
    Bài viết
    0

    Tiện thể cho mình hỏi luôn, số là mình có bài tập là cho 1 hàm số. Phải tính được giá trị của hàm số đó trong 1 khoảng rồi lưu vào file text. Ví dụ khoảng từ 1 đến 2 thì phải tính 100 giá trị x chạy trong đó rồi tính ra 100 giá trị của hàm rồi lưu vào file text thì phải dùng thuật toán ntn vậy? Mình xin chân thành cảm ơn.

  5. #5
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Trích dẫn Nguyên bản được gửi bởi qwerty68 Xem bài viết
    Không, cái trong dấu "" là cái mình gửi vào chương trình gnuplot để tính bạn ạ. lệnh fprintf chứ có phải lệnh printf đâu?
    Theo ngu kiến của mình thì fprintf nó làm y chang printf nhưng ko in ra màn hình mà in vào file thôi chứ có gì khác nhau đâu ??
    Cho nên cách dùng và định dạng, xuất như nào nó giống nhau.
    Do đó cái đoạn "thực hiện gọi đệ quy" mà bạn đặt trong " " thì nó chỉ ghi ra file là cái câu đó chứ có thực hiện dc tính toán gì đâu
    Trích dẫn Nguyên bản được gửi bởi qwerty68 Xem bài viết
    Tiện thể cho mình hỏi luôn, số là mình có bài tập là cho 1 hàm số. Phải tính được giá trị của hàm số đó trong 1 khoảng rồi lưu vào file text. Ví dụ khoảng từ 1 đến 2 thì phải tính 100 giá trị x chạy trong đó rồi tính ra 100 giá trị của hàm rồi lưu vào file text thì phải dùng thuật toán ntn vậy? Mình xin chân thành cảm ơn.
    Nếu bạn thích các khoảng x = nhau thì cứ chia khoảng [a;b] thành 100 điểm x . Mỗi điểm vậy ta Tính toán f(x) rồi in ra file
    Còn nếu ko thích các khoảng giống nhau thì bạn dùng Random sinh ra số x trong khoảng [a;b] sao cho x sinh ra ko dc trùng nhau rồi tính f(x) -> in ra file
    Và ta lặp lại công việc đó 100 lần
    Um Mani Padme Hum...!!

  6. #6
    Ngày gia nhập
    09 2011
    Bài viết
    0

    Mặc định Hàm legendre đệ quy ko tính được.

    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    Theo ngu kiến của mình thì fprintf nó làm y chang printf nhưng ko in ra màn hình mà in vào file thôi chứ có gì khác nhau đâu ??
    Cho nên cách dùng và định dạng, xuất như nào nó giống nhau.
    Do đó cái đoạn "thực hiện gọi đệ quy" mà bạn đặt trong " " thì nó chỉ ghi ra file là cái câu đó chứ có thực hiện dc tính toán gì đâu

    Nếu bạn thích các khoảng x = nhau thì cứ chia khoảng [a;b] thành 100 điểm x . Mỗi điểm vậy ta Tính toán f(x) rồi in ra file
    Còn nếu ko thích các khoảng giống nhau thì bạn dùng Random sinh ra số x trong khoảng [a;b] sao cho x sinh ra ko dc trùng nhau rồi tính f(x) -> in ra file
    Và ta lặp lại công việc đó 100 lần
    Mình đã tìm được lỗi sai, cái kia là ghi vào file GNuplot.exe bạn ạ. File này là một dạng tính toán đơn giản, nó là một phần mềm chuyên dụng nên những cái kia ghi vào file là dòng lệnh để file đó tính toán bạn ạ.
    Mình tìm ra lỗi sai là phải viết số dạng 4.0 thay vì 4 vì nếu ko file kia sẽ hiểu đó là dạng integer. Cảm ơn bạn nhé

  7. #7
    Ngày gia nhập
    10 2011
    Bài viết
    552

    À, ra vậy
    Thì ra chương trình kia nó đọc text rồi suy ra hàm số hả ^^
    Sr vì đã ko biết gì còn cố tỏ ra nguy hiểm
    Um Mani Padme Hum...!!

  8. #8
    Ngày gia nhập
    10 2011
    Bài viết
    46

    Xài gnuplot với Latex đã lâu mà quên mất ứng dụng nó vào C! Thanks bạn cho câu hỏi này.

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