2012-11-12 66 views
12

Có phương pháp nào thực hiện điều đó không? Tôi có một ứng dụng mà tôi cần khu vực dưới đường cong, và tôi đã đưa ra công thức, vì vậy nếu tôi có thể làm việc tích hợp trên tay, tôi sẽ có thể làm điều đó theo chương trình? Tôi không thể tìm thấy tên của phương pháp tôi đang đề cập đến, nhưng hình ảnh này chứng minh điều đó: http://www.mathwords.com/a/a_assets/area%20under%20curve%20ex1work.gifTính diện tích chính xác dưới đường cong trong Java

Chỉnh sửa: với mọi người trả lời, tôi đã thực hiện quy tắc hình chữ nhật, hình thang và Simpson. Tuy nhiên, chúng giống như 10k + sọc chính xác và tôi không thể tìm thấy phiên bản tích hợp của một hàm? Nếu không, phải có một lý do đẫm máu tốt cho điều đó.

+3

'Lý do tốt đẫm máu' là nó thường 'cứng đẫm máu'. –

+0

Nếu ai đó từng làm điều đó trước đây, chúng tôi có thể sử dụng triển khai và tích hợp của anh ấy sẽ ngắn gọn như "nhập xxx; xxx.integrate (fctn);" hoặc tôi có thiếu gì đó ở đây không? –

+0

Điều đó rất đúng. Tôi không chắc rằng ai đó đã làm điều này cho Java.Có lẽ một câu hỏi khác –

Trả lời

4

Tích hợp số
Có nhiều phương pháp có thể được sử dụng. Để biết mô tả, hãy xem trong số Numerical Recipes: The Art of Scientific Computing.
Đối với Java, có thư viện Apace Commons, có thể được sử dụng. Các thói quen tích hợp nằm trong phần Numerical Analysis.

hội nhập Symbolic
Check-out jScience. Functions mô-đun "cung cấp hỗ trợ cho phân tích toán học biểu tượng khá đơn giản (để giải các phương trình đại số, tích hợp, phân biệt, tính toán các biểu thức, vv)".
Nếu loại chức năng được đưa ra, nó có thể được tích hợp nhanh hơn trong trường hợp cụ thể hơn khi sử dụng một số thư viện chuẩn.

0

Tôi khuyên bạn nên sử dụng quy tắc Simpsons hoặc quy tắc hình thang, bởi vì nó có thể quá phức tạp để tích hợp mọi loại biểu đồ.

1

Để tính toán chính xác, bạn cần có một thư viện số computer algebra system để thực hiện các thao tác tượng trưng. Các hệ thống như vậy khá phức tạp để thực hiện và tôi không quen thuộc với bất kỳ thư viện nguồn mở, chất lượng cao nào cho Java. Một thay thế, mặc dù, giả sử nó đáp ứng yêu cầu của bạn, sẽ là để ước tính diện tích dưới đường cong bằng cách sử dụng trapezoidal rule. Tùy thuộc vào mức độ chính xác mà bạn yêu cầu kết quả của mình, bạn có thể thay đổi kích thước của các phân mục tương ứng.

0

Bạn có thể sử dụng numerical integration, sử dụng một số quy tắc, như đã đề cập Simpsons, Hình thang hoặc Monte-Carlo simulation. Nó sử dụng trình tạo giả ngẫu nhiên.

Bạn có thể thử một số thư viện để tích hợp tượng trưng, ​​nhưng tôi không chắc chắn rằng bạn có thể có được biểu diễn tượng trưng cho mọi tích phân.

0

Một trong những dạng tích hợp số phổ biến nhất là kỹ thuật Runge-Kutta thứ tự 4 (RK4). Đó là việc triển khai thực hiện như sau:

double dx, //step size 
     y ; //initial value 
for(i=0;i<number_of_iterations;i++){ 
    double k1=f(y); 
    double k2=f(y+dx/2*k1); 
    double k3=f(y+dx/2*k2); 
    double k4=f(y+dx*k3); 
    y+= dx/6*(k1+2*k2+2*k3+k4); 
} 

và sẽ hội tụ nhanh hơn nhiều so với hình chữ nhật, hình thang, và quy tắc của Simpson. Nó là một trong những kỹ thuật thường được sử dụng để tích hợp trong mô phỏng vật lý.

Các vấn đề liên quan