View Single Post
Old 16-02-2008, 01:31 AM   #3
svn
Đệ tử 1 túi
 
Tham gia ngày: Sep 2006
Bài gửi: 24
:
Em làm 1 cái, nhưng mà bằng C# dc ko (nhìn code của VC ko thích tí nào, chỉ riêng VC mới ko thích thôi )
Hiện giờ thì mới chỉ có các phép tính cơ bản cho ma trận, phép xoay ma trận và giải hệ phi tuyến bằng Newton Raphson, giải hệ tuyến tính bằng nhân tử LU.
Đây là toàn bộ source và file dll đã biên dịch sẵn http://haminhtranhanh.googlepages.co...aMathTools.zip
Em làm cái này cùng với lv, nhưng cảm thấy lv chưa hoàn chỉnh nên đưa cái này lên thôi vậy
Đoạn code ví dụ sử dụng:
Code:
using HaMTHaMathTools;
Matrix R, PB1, y;

...
PB1 = Matrix.Normalize(ParallelRobot.B1 - ParallelRobot.P); //B1 và P của lớp ParallelRobot //cũng là các ma trận
PB1[2, 0] = 0; //truy xuất từng phần tử của ma trận
y = Matrix.Normalize(PB1 & ParallelRobot.N); //& là phép tính hữu hướng 2 vectơ (xem vectơ //là ma trận có số hàng hoặc số cột = 1
R = Transform.Rotation(u,PB1) * Transform.Rotation(v,y); //Tìm ma trận quay quanh vectơ //PB1 một góc u và quanh vectơ y 1 góc v
...
X = new Matrix(6, 1); //tạo mới một ma trận có 6 hàng và 1 cột
X[0, 0] = ParallelRobot.B1[0, 0]; X[1, 0] = ParallelRobot.B1[1, 0];
X[2, 0] = ParallelRobot.B2[0, 0]; X[3, 0] = ParallelRobot.B2[1, 0];
X[4, 0] = ParallelRobot.B3[0, 0]; X[5, 0] = ParallelRobot.B3[1, 0];
X = Numerics.NewtonRaphson(HeFtinhDonghocnghich, JacobiDonghocnghich, X, 5000, Math.Pow(10, -12)); //giải hệ phi tuyến với nghiệm ban đầu là X, số lần lặp tối đa là 5000, //sai số là 10^(-12)
...
Thư viện trên của em chưa hoàn chỉnh lắm, phần ma trận vẫn còn thiếu nhiều phép tính
Các lớp Matrix, Transform, Numerics nằm trong HaMTHaMathTools
Các bác xem qua, nếu có thể phát triển dc cho hoàn chỉnh thì ta làm luôn dc ko
svn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn