7
Tôi có hai ma trận: A và B.Làm việc với ma trận, đẩy mạnh khuôn khổ, iOS
- Làm thế nào tôi có thể lưu trữ chúng?
- Làm cách nào tôi có thể tính toán ma trận nghịch đảo của ma trận A bằng cách sử dụng khung tăng tốc?
- Làm cách nào để tìm sản phẩm của A * B?
- Tôi có thể chuyển ma trận A bằng cách sử dụng khung tăng tốc như thế nào?
Cảm ơn bạn đã trả lời câu hỏi của mình!
tập tin Helper
#import <Foundation/Foundation.h>
#include <Accelerate/Accelerate.h>
@interface Working_with_matrices : NSObject
-(int)invert_matrix:(int) N andWithMatrix:(double*) matrix;
@end
tập tin thực hiện
#import "Working_with_matrices.h"
#include <Accelerate/Accelerate.h>
@implementation Working_with_matrices
-(int) matrix_invert:(int) N andWithMatrix:(double*)matrix
{
int error=0;
int *pivot = malloc(N*N*sizeof(int));
double *workspace = malloc(N*sizeof(double));
dgetrf_(&N, &N, matrix, &N, pivot, &error);
if (error != 0) {
NSLog(@"Error 1");
return error;
}
dgetri_(&N, matrix, &N, pivot, workspace, &N, &error);
if (error != 0) {
NSLog(@"Error 2");
return error;
}
free(pivot);
free(workspace);
return error;
}
Gọi mã của tôi từ chức năng chính
#import <Foundation/Foundation.h>
#import "Working_with_matrices.h"
int main(int argc, const char * argv[])
{
int N = 3;
double A[9];
Working_with_matrices* wm=[[Working_with_matrices alloc]init];
A[0] = 1; A[1] = 1; A[2] = 7;
A[3] = 1; A[4] = 2; A[5] = 1;
A[6] = 1; A[7] = 1; A[8] = 3;
[wm invert_matrix:N andWithMatrix:A];
// [ -1.25 -1.0 3.25 ]
// A^-1 = [ 0.5 1.0 -1.5 ]
// [ 0.25 0.0 -0.25 ]
for (int i=0; i<9; i++)
{
NSLog(@"%f", A[i]);
}
return 0;
}
Cảm ơn bạn đã phát lại! Tôi muốn biết doest thư viện này làm việc trong dự án iOS? Và nếu có, làm thế nào tôi có thể đưa thư viện này vào dự án Xcode của tôi? –
Có, khung tăng tốc khả dụng cho iOS. Bạn có thể thêm nó bằng cách làm theo các hướng dẫn này. http://stackoverflow.com/a/3377682/385017 –
Thật hoàn hảo! Tôi đã biên soạn ví dụ này (http://stackoverflow.com/questions/11282746/how-to-perform-matrix-inverse-operation-using-the-accelerate-framework/11321499#11321499). Tuy nhiên, khi tôi viết trình bao bọc lớp cho các hàm này, tôi không thể biên dịch dự án của mình do thông báo lỗi "để vô tình loại trừ" NSInvalidArgumentException ', lý do:' - [Working_with_matrices invert_matrix: andWithMatrix:]: selector không nhận dạng được gửi tới instance 0x10750dd90 ' ". Bạn sẽ rất tốt để giải thích làm thế nào tôi có thể sửa lỗi này? Cảm ơn bạn! –