선형 행을 사용하여 직사각형 행렬이있는 경우 (게시물 하단의 첫 번째 관측에서 예상되는 수치 정보 참조) 그의 dimmension은 qxn
이고 따라서 q<=n
이고 나는 몇 가지 square invertible matrix T=[C;R]
을 만들고 싶습니다.직사각형 행렬을 완성하여 여러 개의 정사각형 역전 식 조건부 행렬을 생성하십시오.
여기에서 중요한 점은 행렬 T가 잘 조절되어야한다는 것입니다 (조건 수는 1에 가깝습니다). 그러나, 프로세스가 매우 빠른 지침이기 때문에 실행
clear all
C=[1 0]; %example
tol=0.1;
n=size(C,2);
q=size(C,1);
singularity=1;
it=0;
while(singularity==1)
a=-5;
b=5;
R=a + (b - a) .* rand(n - q, n); %generates randomic R matrix with numerical values beetwen 'a' and 'b'
M=[C;R];
if(abs(cond(M)-1)<tol) %cond(M) computes the condition number of M
singularity=0;
end
it=it+1;
end
이 알고리즘은 700 ~ 2K 반복 (의 범위에 수렴 C=[1 0]
을 고려 :
이제 C=[1 0 0]
을 고려하면 반복이 2kkk 이상이므로 처리를 중단해야했습니다.
관측 : usuaally 내 C
행렬의 값의 수치는 (하나의 10) 작은 양의 정수, 0 내지 5, 0으로 작은 racional 수있을 것이다. 중요
: 내가 할 하나의 주어진 행렬 C
를 들어 하지 필요 M
이 잘 조절 된 것 단 하나의 매트릭스 R
. 내 응용 프로그램에서, 내가 R
(내가 원하는만큼) 주어진 하나의 C
, 그래서 내가 왜 R
랜덤 생성하려고했는데,하지만 불행히도 매우 비효율적 인 방식으로 주어진 매트릭스가 필요합니다.
비고 : 나는 M이 잘 조절 된 후 다른 잘 조절 행렬은 이전의 여러 될 수 있지만, 나는 다른 접근을 시도 싶은 것을 하나 개의 R 같은 찾을 수 있습니다 물론.
대신 당신이'쓸 수있는 루프 중첩이, 나는이 제로가되도록을하는 것이 가장 간단 할 것이라고 생각 조건 번호를 분석
R = A + (B - A) . * rand (n - q, n);''R'을 생성합니다. – rahnema1
이제 코드가 더 간단합니다 – gustavoreche
이상! – rahnema1