2009-07-15 35 views
5

Phương pháp hoặc thuật toán thông thường được sử dụng để vẽ phương trình tiềm ẩn của 2 biến là gì?Làm thế nào để vẽ phương trình tiềm ẩn

tôi đang nói về phương trình như,

sin (x * y) * y = 20

x * x - y * y = 1

vv

Liệu có ai biết Maple hay Matlab làm như thế nào không? Ngôn ngữ mục tiêu của tôi là C#.

Rất cám ơn!

Trả lời

9

Một cách để thực hiện việc này là lấy mẫu chức năng trên lưới 2D thông thường. Sau đó, bạn có thể chạy một thuật toán như hình vuông diễu hành trên lưới 2D kết quả để vẽ các đường đẳng hướng.

Trong câu hỏi có liên quan, ai đó cũng liên kết với mã nguồn gnuplot. Nó khá phức tạp, nhưng có thể đáng để trải qua. Bạn có thể tìm thấy ở đây: http://www.gnuplot.info/

+2

Cảm ơn bạn đã cung cấp từ khóa phù hợp để tìm kiếm. Tìm kiếm này (http://www.google.com.sg/search?q=Marching+squares+contours) đặc biệt là đã ném lên một số liên kết thú vị. – ARV

+0

@ARV trong đó các liên kết thú vị đó đã giải quyết được vấn đề của bạn. Bạn có thể tạo mã C# thành công không – MySchizoBuddy

5

Lặp lại giá trị x trên phạm vi bạn muốn vẽ. Đối với mỗi giá trị cố định của x, giải phương trình số bằng phương pháp như interval bisection hoặc Newton-Raphson method (để bạn có thể tính đạo hàm bằng cách sử dụng sự phân biệt ngầm định hoặc có thể phân biệt bằng số). Điều này sẽ cung cấp cho bạn giá trị tương ứng của y cho một số x nhất định. Trong hầu hết các trường hợp, bạn sẽ không cần quá nhiều lần lặp lại để nhận được kết quả chính xác là rất và rất hiệu quả.

Lưu ý rằng bạn sẽ cần phải chuyển đổi phương trình thành dạng f(x) = 0, mặc dù điều này luôn là tầm thường. Điều tốt đẹp về phương pháp này là nó hoạt động cũng như cách khác vòng (tức là dùng một phạm vi cố định của y và tính toán x cho mỗi giá trị).

-3

tôi nghĩ,

trong MATLAB bạn đưa mảng làm đầu vào cho x.

sau đó cho mỗi x, nó tính toán y.

sau đó rút ra dòng từ x0, y0 để x1, y1

sau đó rút ra dòng từ x1, y1 là x2, y2

...

...

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