Làm thế nào để đảo ngược một ma trận affine với các giá trị nhỏ?


7

Tôi đang sử dụng ma trận biến đổi affine để chuyển đổi tọa độ 2D từ màn hình (cường độ 10e3) sang các phần nhỏ của bộ fractal (cường độ nhỏ nhất là 10e-15).

Tôi cũng cần ánh xạ theo cách khác, vì vậy tôi chỉ cần đảo ngược ma trận. Nó hoạt động khi các cường độ không quá xa nhau, nhưng nó thất bại khi định thức quá gần với 0 được biểu thị bằng các số kép tiêu chuẩn.

Các ma trận tôi sử dụng có dạng:

a c e
b d f
0 0 1

Và thuật toán đảo ngược tôi có là:

var dt = a * d - b * c;
return new Matrix(d/dt, -b/dt, -c/dt, a/dt, (c * f - d * e) / dt, -(a * f - b * e) / dt);

Có một cách khác để đảo ngược ma trận? Tôi không giỏi toán, vì vậy tôi sẽ cần một giải pháp đơn giản, và tôi có thể tìm mã, hoặc một thuật toán, cho.

Một ví dụ về ma trận như vậy:

 3.26091378894248e-9   -1.882689453850103e-9   -0.7172216437740687
-1.882689453814925e-9  -3.2609137888815494e-9  -0.23371832131832268
 0                      0                       1

Tôi không thấy vấn đề gì, nhân đôi có thể đại diện cho những con số nhỏ bằng 10 ^ -308.
Yves Daoust

1
Có lẽ vấn đề của bạn có thể xuất phát từ thứ tự ops trong tính toán của bạn. Bạn có thể có một cái gì đó như (BigValue + SmallValue) - BigValue, và thay vì nhận "SmalValue", bạn nhận được 0.
Simon F

1
Chỉ xảy ra với tôi rằng bạn dường như, một cách xoay vòng, R, đã theo một bản dịch T. Nếu bạn có thể tách chúng ra, để có được Nghịch đảo (R * T), bạn có thể thực hiện Nghịch đảo (T) * Nghịch đảo (R) , cả hai đều tầm thường. Điều đó sẽ giúp?
Simon F

Simon, bạn nói đúng về vấn đề xuất phát từ việc nhân số lượng các cường độ khác nhau. Ma trận phức tạp hơn R * T; nó cũng là một thang đo và có thể là một phép nhân của bất kỳ affine nào .. Tuy nhiên, tôi đã cố gắng khắc phục vấn đề này, xem bên dưới. Cảm ơn bạn đã giúp đỡ.
ngày

Bạn nên hỏi trên diễn đàn toán học!
Fabrice NEYRET

Câu trả lời:


7

Tôi tìm thấy một giải pháp cho vấn đề cụ thể của tôi. Thay vì tính toán định thức và đánh vào bức tường chính xác, tôi sử dụng phương pháp Gauss-Jordan từng bước.

Trong trường hợp cụ thể của tôi về ma trận biến đổi affine và phạm vi giá trị tôi sử dụng, tôi không gặp phải bất kỳ vấn đề chính xác nào theo cách này.

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.