Làm thế nào để bạn cải thiện độ chính xác của phương pháp sai phân hữu hạn để tìm hệ thống eigensystem của ODE tuyến tính số ít


11

Tôi đang cố gắng giải một phương trình loại:

(2x2f(x))ψ(x)=λψ(x)

Trong đó f(x) có cực đơn giản tại 0 , cho N eigenvalues ​​và eigenvector nhỏ nhất . Các điều kiện biên là: ψ(0)=0ψ(R)=0 , và tôi chỉ nhìn vào các chức năng trên (0,R] .

Tuy nhiên, nếu tôi thực hiện một phương pháp sai phân hữu hạn rất đơn giản, cách đều nhau, thì giá trị riêng nhỏ nhất là rất không chính xác, (đôi khi có một giá trị riêng "sai" có độ lớn âm hơn so với giá trị mà tôi biết nên có, thực "Giá trị riêng thứ nhất" trở thành thứ hai, nhưng vẫn còn nghèo).

Điều gì ảnh hưởng đến độ chính xác của sơ đồ sai phân hữu hạn như vậy? Tôi cho rằng điểm kỳ dị là nguyên nhân gây ra vấn đề, và một lưới cách đều nhau sẽ cải thiện đáng kể mọi thứ, có bài báo nào có thể chỉ cho tôi một phương pháp khác biệt hữu hạn không đồng nhất tốt không? Nhưng có lẽ một sơ đồ khác biệt cao hơn sẽ cải thiện nó nhiều hơn? Làm thế nào để bạn quyết định (hoặc chỉ là "thử cả hai và xem")

lưu ý: sơ đồ sai phân hữu hạn của tôi là tam giác đối xứng trong đó có 3 đường chéo là:

(12Δ2,1Δ2f(x),12Δ2)

Trong đó là khoảng cách lưới. Và tôi đang giải ma trận bằng cách sử dụng một bộ giải đối xứng trực tiếp (tôi cho rằng độ chính xác không bị ảnh hưởng mạnh bởi bộ giải, tôi có sai không?)Δ


Không phải là trung hạn của stprint hữu hạn khác nhau của bạn là để thay thế? 1Δ2f(x)
Wolfgang Bangerth

Câu trả lời:


6

Nếu bạn muốn tăng độ chính xác của sơ đồ sai phân hữu hạn, bạn luôn có thể thử tăng mức độ của khuôn tô. Tuy nhiên, trên các điểm tương đương, điều này có thể dẫn đến sự mất ổn định về số. Để tránh những vấn đề này và vẫn có được độ chính xác cao, tôi khuyên bạn nên sử dụng Phương pháp quang phổ .

Nếu vấn đề của bạn có các cực cố định, bạn có thể cố gắng khắc phục chúng bằng cách tách tên miền của mình và giải quyết hai vấn đề được ghép nối.

chebguif(x)

chebguiu(x)u(x)x=λu[1,1]

Sử dụng <code> chebgui </ code> để tính toán giá trị riêng và mã riêng của phương trình vi phân bậc hai đơn giản.

Cập nhật

Nếu bạn muốn giải quyết vấn đề này mà không cần quá nhiều vào Chebfun, tất cả các chi tiết nên có trong Chương 9 của cuốn sách " Phương pháp quang phổ trong Matlab " của Nick Trefethen .


Tôi đã chỉnh sửa bài viết gốc của mình để làm rõ rằng tôi không thực sự tìm AT cực, chỉ rất gần nó. Cảm ơn thông tin, tôi sẽ phải kiểm tra chebfun.
Andrew Spott

3
Bình chọn xuống mà không bình luận? Xin vui lòng, vì lợi ích của tất cả, bạn có thể chỉ ra làm thế nào câu trả lời này có thể được cải thiện?
Pedro

0

Một cách để nhanh chóng làm cho mọi thứ tốt hơn (mặc dù có thể không tốt hơn nhiều ) là xem xét sự giống nhau giữa các phương pháp sai phân hữu hạn bậc thấp nhất mà bạn sử dụng và phương pháp phần tử hữu hạn bậc thấp nhất. Nếu bạn tính toán ma trận ba đường chéo bạn có được từ việc sử dụng các hàm hình dạng phần tử hữu hạn tuyến tính trong 1d, thì sự rời rạc của các đạo hàm thứ hai sẽ trông giống hệt nhau (lên đến một yếu tố nhưng bạn sẽ có một thuật ngữ khác cho những gì tắt . Tôi không biết trông như thế nào trong trường hợp của bạn, nhưng ngay bây giờ bạn sử dụng , thay vào đó, nó sẽ giống như trong đóf ( x ) ψ ( x ) f ( x ) f ( x i ) x i + 1 x i - 1 f ( x ) φ i ( x ) φ i ( x ) x i f ( x )Δxf(x)ψ(x)f(x)f(xi)xi1xi+1f(x)φi(x)φi(x)là hàm mũ đạt cực đại tại . Nếu đủ đơn giản, thì bạn có thể tính chính xác tích phân này và nó sẽ cung cấp một ma trận chính xác hơn mà bạn phải tìm giá trị riêng.xif(x)

Tất nhiên, nếu bạn đã thực hiện các phần tử hữu hạn, bạn cũng có thể đầu tư vào việc sử dụng các phần tử bậc cao hơn, điều đó cũng không khó khăn hơn trong 1d.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.