levmar

Phần mềm chụp màn hình:
levmar
Các chi tiết về phần mềm:
Phiên bản: 2.6
Ngày tải lên: 15 Apr 15
Nhà phát triển: Manolis Lourakis
Giấy phép: Miễn phí
Phổ biến: 18

Rating: 5.0/5 (Total Votes: 1)

levmar là một thực hiện các phi tuyến Levenberg-Marquardt hình vuông ít nhất các thuật toán trong C / C ++.

Những thói quen lmder từ Minpack, thực hiện trong đầu những năm 80 tại quốc gia Argonne Lab, có lẽ là các sử dụng rộng rãi nhất thực hiện miễn phí của thuật toán LM. lmder được viết bằng FORTRAN77 và trong những năm qua đã chứng tỏ là một mảnh đáng tin cậy của phần mềm. Xét rằng thói quen FORTRAN có thể được gọi từ C / C ++, người ta có thể tự hỏi về động lực để viết một phiên bản của LM trong C. Vâng, vấn đề là khi FORTRAN được gọi từ C, lập trình viên cần phải nhận thức (và phù hợp với ) một số quy định liên quan đến tên mangling, lý luận đi qua, đa chiều bố trí bộ nhớ mảng, công ước liên kết, vv, mà là không tự nhiên so với quy tắc C thông thường. Lý do thứ hai là phương pháp này cho là hiển nhiên rằng một trình biên dịch FORTRAN cho các môi trường lập trình mục tiêu có sẵn, mà có thể không nhất thiết phải là trường hợp. Một lý do khác đã làm với thất bại để hiểu các hoạt động bên trong của một thực hiện FORTRAN: Thỉnh thoảng, khi nó là cần thiết để hiểu chính xác những gì các mã FORTRAN có, số phần nào đó của nó có thể dường như không thể hiểu được lập trình mà không cần bất kỳ kiến ​​thức của FORTRAN. Tự động FORTRAN để dịch C (ví dụ f2c) không giải quyết vấn đề từ khi có mã C được sản xuất là khá khó đọc cho con người "không quen". Hơn nữa, tài liệu mô tả toán học khi mà thực hiện được dựa trên có thể làm mờ hoặc không thể tiếp cận. Cuối cùng nhưng không kém, một ứng cử viên thực hiện LM trong C nên được miễn phí và kỹ thuật âm thanh. Ví dụ, các biến thể của thuật toán C LM thể hiện trong "Bí quyết Numerical" cuốn sách (tức là mrqmin), không phải là luôn luôn là một lựa chọn khả thi: Bên cạnh đó nó được bản quyền, nó được cho là đã thiếu vững mạnh

. Vì những lý do trên, tôi đã phát triển gói levmar bao gồm C hiện thực của LM hương vị mà còn là có thể sử dụng với C ++. levmar bao gồm việc triển khai chính xác LM kép và duy nhất, cả hai đều có sự khác biệt tích và hữu hạn xấp xỉ Jacobians. Nó được cung cấp miễn phí, theo các điều khoản của Giấy phép Công cộng GNU. Các lý thuyết toán học đằng sau levmar không bị giới được mô tả chi tiết trong các bài giảng phương pháp được cho Non-Linear Least Squares vấn đề, bởi K. Madsen, HB Nielsen và O. Tingleff, Đại học Kỹ thuật Đan Mạch; Matlab hiện thực của các thuật toán được trình bày trong các bài giảng cũng có sẵn. Tuy nhiên lưu ý rằng việc xây dựng các vấn đề giảm thiểu áp dụng ở đây là hơi khác với mô tả trong các bài giảng Sử dụng

Chức năng của:.

Levmar cung cấp một số chức năng người dùng có thể được gọi tuân theo sau quy ước đặt tên: Bức thư đầu tiên (d hay s) xác định chính xác gấp đôi hoặc đơn và hậu tố (_der hoặc _dif) biểu thị Jacobian phân tích hoặc gần đúng. Nếu có, các lec, bc và các thành phần blec nghĩa phương trình tuyến tính, hộp và hộp đồng thời và hạn chế phương trình tuyến tính, tương ứng. Cụ thể hơn, levmar bao gồm các chức năng dưới đây:

Unconstrained tối ưu hóa

dlevmar_der (): độ chính xác kép, tích Jacobian
dlevmar_dif (): độ chính xác kép, sai phân hữu hạn xấp xỉ Jacobian slevmar_der
(): độ chính xác duy nhất, phân tích Jacobian slevmar_dif
(): độ chính xác duy nhất, khác biệt hữu hạn xấp xỉ Jacobian

tối ưu hóa Constrained

dlevmar_lec_der () : độ chính xác kép, hạn chế phương trình tuyến tính, phân tích Jacobian
dlevmar_lec_dif (): độ chính xác kép, hạn chế phương trình tuyến tính, sự khác biệt hữu hạn xấp xỉ Jacobian
slevmar_lec_der (): độ chính xác duy nhất, hạn chế phương trình tuyến tính, phân tích
Jacobian slevmar_lec_dif (): độ chính xác duy nhất, hạn chế phương trình tuyến tính, sự khác biệt hữu hạn xấp xỉ Jacobian

dlevmar_bc_der (): độ chính xác kép, hạn chế ô, Jacobian tích
dlevmar_bc_dif (): độ chính xác kép, hạn chế ô, hữu hạn chênh lệch xấp xỉ Jacobian
slevmar_bc_der (): độ chính xác duy nhất, hạn chế ô, phân tích Jacobian slevmar_bc_dif
(): độ chính xác duy nhất, hạn chế ô, sai phân hữu hạn xấp xỉ Jacobian

dlevmar_blec_der (): double chính xác, hộp & hạn chế phương trình tuyến tính, phân tích Jacobian dlevmar_blec_dif
(): độ chính xác kép, hộp & hạn chế phương trình tuyến tính, sự khác biệt hữu hạn xấp xỉ Jacobian
slevmar_blec_der (): độ chính xác đơn, hộp & phương trình tuyến tính ràng buộc, Jacobian tích
slevmar_blec_dif (): độ chính xác đơn, hộp & phương trình tuyến tính ràng buộc, sự khác biệt hữu hạn xấp xỉ Jacobian

ý rằng việc sử dụng sự khác biệt hữu hạn để gần đúng các kết quả đánh giá lặp đi lặp lại trong Jacobian của chức năng được trang bị. Nhằm giảm thiểu tổng số các đánh giá này, các chức năng thực hiện các phép xấp xỉ xxxxxxx_dif cát tuyến để sử dụng các Jacobian bậc một bản cập nhật của Broyden. Tất cả các chức năng giải quyết các vấn đề tương tự, tức là họ tìm kiếm các vector tham số p mô tả tốt nhất (về định mức L2) đo vector x. Chính xác hơn, cho một chức năng vector f: R ^ m -> R ^ n với n> = m, họ tính toán ap cho f (p) ~ = x, tức là các chỉ tiêu bình || || e ^ 2 = | | xf (p) || ^ 2 được giảm thiểu. Ngoài ra, những hạn chế của hình thức hộp lb [i]

là gì mới trong phiên bản này:

  • Phiên bản này hỗ trợ thêm cho rộng đường chéo để xlevmar_bc_der (), mà có thể cải thiện hội tụ khi xuất phát điểm là xa minimizer đúng.
  • Một hệ thống giải tuyến tính hỗ trợ song song Cholesky decomposition với PLASMA, các thư viện đại số tuyến tính cho các bộ xử lý đa lõi.
  • giải quyết tuyến tính đã được cố định để họ hoạt động trên các tam giác dưới của ma trận đối xứng, mà kết quả trong hiệu suất bộ nhớ cache tốt hơn.
  • Các tập tin cấu hình CMake cho việc xây dựng dự án đã được sửa đổi.
  • Một số thay đổi nhỏ khác đã được thực hiện.

là gì mới trong phiên bản 2.5:

  • LƯU Ý CHO CÁC PHIÊN BẢN TRƯỚC NGƯỜI SỬ DỤNG: Đối với sự nhất quán hơn và tránh xung đột, tên của tập tin tiêu đề levmar đã được thay đổi từ lm.h để levmar.h; vui lòng cập nhật các tập tin nguồn của bạn cho phù hợp.
  • Thêm hỗ trợ cho giảm thiểu ô dưới đồng thời, phương trình tuyến tính và bất bình đẳng hạn chế (xem chức năng xlevmar_bleic_der () & xlevmar_bleic_dif ()).
  • wrappers tiện thực hiện để xlevmar_bleic_der () & xlevmar_bleic_dif () đối phó với các trường hợp hạn chế đơn giản, ví dụ như xlevmar_blic_der () & xlevmar_blic_dif () hỗ trợ giảm thiểu ô dưới và hạn chế bất bình đẳng chỉ tuyến tính.
  • Thêm một hệ thống giải tuyến tính dựa trên sự phân hủy UDUt (tức là, sqrt miễn Cholesky)
  • .
  • Loại bỏ một số sao chép bộ nhớ không cần thiết từ phần lớn những người giải quyết tuyến tính.
  • Thêm một dữ liệu phù hợp mới kiểm tra vấn đề (Osborne).
  • Thực hiện một vài thay đổi nhỏ khác.

là gì mới trong phiên bản 2.4:

  • LƯU Ý CHO CÁC PHIÊN BẢN TRƯỚC NGƯỜI SỬ DỤNG: Kích thước của các đối số thông tin (tức là, LM_INFO_SZ) đã được tăng lên bởi một để chứa một lĩnh vực mới trở lại (tức là, thông tin [9]) tương ứng với tổng số các hệ thống tuyến tính giải quyết trong quá trình giảm thiểu. Các chỉ số của lĩnh vực trước đây trở lại trong mảng thông tin thay đổi.
  • Thực hiện một chương trình cache-hiệu quả hơn cho việc tính toán gần đúng Hessian J ^ T * J và J ^ T * e cho vấn đề giảm thiểu quy mô nhỏ.
  • Đảm bảo rằng bất kỳ bộ nhớ làm việc được giữ lại giữa các lần giải quyết tuyến tính được phát hành khi chấm dứt thói quen levmar.
  • Đảm bảo rằng những người giải quyết tuyến tính sử dụng số tiền tối thiểu cần bộ nhớ phụ, tránh xuyên qua phân bổ.
  • Thực hiện một chương trình vòng lặp unrolling để tăng tốc tính toán của e = x-hx.
  • Cố định một vài vấn đề với sự liên kết bộ nhớ trên hệ thống 64 bit.
  • Thêm chức năng cho việc tính toán các hệ số xác định.
  • bị xử lý với một vài vấn đề nhỏ.

Phần mềm tương tự

MESH
MESH

3 Jun 15

SEAGE
SEAGE

15 Apr 15

Zasio
Zasio

3 Jun 15

Ý kiến ​​để levmar

Bình luận không
Nhập bình luận
Bật hình ảnh!