dll에서 함수를 가져오는 문제를 이해하는 데 도움이 됩니다. - 페이지 10

 

모든 것이 문서에 설명된 대로 정확하게 밝혀졌습니다!

rmatrixsvd 기능은 "정직"합니다!

자체를 확인하는 방법에 대한 질문은 더 이상 관련이 없습니다. 확인했습니다. 작동합니다.

실제로 검사는 원래 행렬을 비교하는 것으로 구성됩니다.

제품 U x S x Vt.

.

나는 또한 대각선 행렬, 가능한 모든 행 크기 3..10 - 열 3..10을 확인했습니다.

원래 매트릭스와 복원된 매트릭스의 차이점에 대해 다소 엄격한 확인을 했습니다.

이중 델타 = arr(행, 열) - usRvt(행, 열);
if(delta > 0.00000000001) { throw "모든 것이 나쁩니다"; }

이 조건은 저에게 효과가 없었습니다.

.

비공개 메시지를 보냈습니다 .

 

괜찮은!!!

비공개 메시지를 보냈습니다 .

 
boysn >> :

좋아, 내가 설명하려고 노력할게...


정방 행렬이 충분히 큰 경우(예: 1000x1000) 이등분을 통해 모든 고유값을 찾는 것은 비효율적이며 여기에서 현대 특이값 분해 알고리즘의 작동 원리가 전면에 나옵니다. 행렬을 2대각선으로 축소 QR 알고리즘에 의한 후속 대각화 형식. http://alglib.sources.ru/ 사이트의 텍스트를 인용하고 있습니다. 그 뒤에 다음과 같은 문구가 나옵니다. 이 간단한 구성표는 완벽하게 작동하지만 보완할 수 있어 프로그램 속도를 크게 높일 수 있습니다. 아래에 설명된 개선된 알고리즘의 체계는 LAPACK 패키지(서브루틴 xGESVD)에서 거의 완전히 차용되었습니다. 알고리즘에 대한 전체 설명: http://alglib.sources.ru/matrixops/general/svd.php

저것들. 내 작업을 위해 1000x1000 또는 그 이상 정도의 큰 행렬과 함께 작동하는 빠른 알고리즘이 필요하며 벡터와 함께 정확히 모든 특이값이 필요합니다. 완전한 분해. 따라서 http://alglib.sources.ru/ 라이브러리에 정착했습니다. 게다가 C++에는 이미 기성품 코드가 있습니다. 300줄의 코드에 대한 알고리즘이 있지만 3000줄의 코드보다 느립니다.

1000x1000 매트릭스가 비-퇴화(무의미하지 않음)가 될 것이라고 확신합니까?

https://ru.wikipedia.org/wiki/%D0%92%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B5%D0%BD%D0%BD%D0 %B0%D1%8F_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0

사실은 백만 개의 샘플, 즉 1000x1000이 있는 실제 비무작위 데이터에서 데이터와 행렬 사이의 선형 종속성이 종종 명확하게 추적되어 의미를 잃는다는 것입니다. 이것은 1000x1000 행렬에 문제가 없다는 것을 의미하지 않습니다. 개인적으로 정수 최적화와 같은 여러 실제 다단계 알고리즘을 알고 있습니다. 이러한 큰 행렬은 문제를 해결하기 위해 특별히 컴파일됩니다. 그렇지 않으면 문제를 해결할 수 없습니다. , 즉 차원을 늘려서 해결합니다. 이러한 큰 행렬은 인위적으로 만들어지며 해당 세그먼트는 실제로 다른 버전의 작업, 즉 거의 선형 의존적이지 않습니다.

프로그램을 조각하기 전에 다음 질문에 답해야 합니다. 1000x1000 매트릭스가 퇴화되지 않았습니까?

 
AlexEro писал(а) >>

1000x1000 매트릭스가 비퇴화(무의미한 것이 아님)가 될 것이라고 확신합니까?

https://ru.wikipedia.org/wiki/%D0%92%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B5%D0%BD%D0%BD%D0 %B0%D1%8F_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0

사실은 백만 개의 샘플, 즉 1000x1000이 있는 실제 비무작위 데이터에서 데이터와 행렬 사이의 선형 종속성 이 종종 명확하게 추적되어 의미를 잃는다는 것입니다. 이것은 1000x1000 행렬에 문제가 없다는 것을 의미하지 않습니다. 개인적으로 정수 최적화와 같은 여러 실제 다단계 알고리즘을 알고 있습니다. 이러한 큰 행렬은 문제를 해결하기 위해 특별히 컴파일됩니다. 그렇지 않으면 문제를 해결할 수 없습니다. , 즉 차원을 늘려서 해결합니다. 이러한 큰 행렬은 인위적으로 만들어지며 해당 세그먼트는 실제로 다른 버전의 작업, 즉 거의 선형 의존적이지 않습니다.

프로그램을 조각하기 전에 다음 질문에 답해야 합니다. 1000x1000 매트릭스가 퇴화되지 않았습니까?

보자, 보자...

 
jartmailru писал(а) >>

비공개 메시지를 보냈습니다.

괜찮은!!!

비공개 메시지를 보냈습니다.

 

DLL을 가져올 수 없습니다. (((

MS Visual C++에서 DLL을 작성했습니다.

//MyDll.h

#define MY_EXPORT extern "C" __declspec( dllexport )
MY_EXPORT int CALLBACK Return1();

//MyDll.cpp

MY_EXPORT int CALLBACK Return1() { return 1; }

//MyDll.def

라이브러리 "MyDll"

수출 반품1@1

컴파일 후 MyDll.dll과 MyDll.lib를 얻었습니다.

또한 DLL을 사용하여 C++로 마이크로 프로그램을 작성했습니다. 프로젝트 설정에서 MyDll.lib를 지정했습니다. DLL과 잘 작동합니다.

그런 다음 전문가\라이브러리 디렉터리에 MyDll.dll 파일을 넣어 MT4에서 DLL 가져오기를 시도했습니다. 설명서에서 * .lib에 대한 내용을 찾지 못해서 넣지 않았습니다.
//ImportDll.mqh(expersions\include 디렉토리에 있음)
#가져오기 "MyDll.dll"

정수 반환1();

//ImportDll.mq4(expersions\indicators 디렉토리에 있음)
#include <ImportDll.mqh>
정수 초기화()

{

Print("리턴1="+리턴1());

리턴(0);
}

ImportDll.ex4를 실행하면 dll 호출이 허용되지 않습니다. 'MyDll.dll' - 'Return1'
HELP .... 이미 이끼를 부수고 있습니다.