문제

이것은 내가 지금까지 가지고있는 것이지만 그것이 옳다고 생각하지 않습니다.

for (int i = 0 ; i < 5; i++)
{
    for (int j = 0;  j < 5; j++)
    {
        matrix[i][j] += matrix[i][j] * matrix[i][j];
    }
}
도움이 되었습니까?

해결책

나는 당신이 그 자체로 매트릭스를 곱할 수 있다고 생각하지 않습니다.

for (i = 0; i < 5; i++) {
    for (j = 0; j < 5; j++) {
        product[i][j] = 0;
        for (k = 0; k < 5; k++) {
            product[i][j] += matrix[i][k] * matrix[k][j];
        }
    }
}

덜 순진한 매트릭스 곱셈을 사용 하더라도이 O 이외의 것 (n3) 알고리즘), 여전히 추가 스토리지가 필요합니다.

다른 팁

제안 : 숙제가 아닌 경우 자신의 선형 대수 루틴을 작성하지 않으면 많은 동료 검토 된 라이브러리를 사용하십시오.

이제 코드에 대해, 용어로 용어로 용어를하고 싶다면, 당신은 잘못하고 있습니다. 당신이하고있는 일은 각 값에 정사각형과 원래 값에 할당하는 것입니다 (n*n+n 또는 (1+n)*n, 당신이 가장 좋아하는 것이 무엇이든)

그러나 대수적 의미에서 정통 매트릭스 곱셈을하고 싶다면 두 번째 매트릭스 열로 첫 번째 매트릭스 행의 스칼라 제품을 수행해야한다는 것을 기억하십시오 (또는 다른 방법으로는 확실하지 않습니다). .

for i in rows:
    for j in cols:
        result(i,j)=m(i,:)·m(:,j)

그리고 스칼라 제품 "·"

v·w = sum(v(i)*w(i)) for all i in the range of the indices.

물론이 방법을 사용하면 다음 단계에서 덮어 쓰는 값이 필요하기 때문에 제품을 제자리에 할 수 없습니다.

또한 Tyler McHenry의 의견을 조금 더 설명하여 행으로 행을 곱해야한다는 냉담함으로, "내부 치수"매트릭스의 올바른 용어인지 확실하지 않습니다. A ~이다 m x n, B ~이다 n x o 그리고 A*C ~이다 m x o), 당신의 경우, 매트릭스는 정사각형 인 경우에만 제곱 될 수 있습니다 (그는 그분).

예를 들어 매트릭스로 조금 플레이하고 싶다면 옥타브를 시도 할 수 있습니다. 매트릭스를 제곱하는 것은 쉽습니다 M*M 또는 M**2.

그것은 내가 본 매트릭스 곱셈 정의가 아닙니다. 표준 정의는입니다

for (i = 1 to m)
   for (j = 1 to n)
      result(i, j) = 0
      for (k = 1 to s)
         result(i, j) += a(i, k) * b(k, j)

알고리즘을 일종의 의사 코드로 제공합니다. 이 경우 A는 AMXS 매트릭스이고 B는 SXN이고 결과는 AMXN이고 구역은 1로 시작합니다.

매트릭스를 제자리에 곱하면 값을 사용하기 전에 값을 덮어 쓰기 때문에 잘못된 답변이 나타납니다.

내가 매트릭스 수학을 한 지 너무 오래 걸렸습니다 (그리고 나는 조금만 그 일을했습니다). += 연산자는 값을 가져옵니다 matrix[i][j] 그리고 그것에 값을 추가합니다 matrix[i][j] * matrix[i][j], 내가 생각하지 않는 것은 당신이하고 싶은 일입니다.

글쎄, 그것은 그것이하는 일이 행/열을 제곱 한 다음 행/열에 추가하는 것 같습니다. 그게 당신이 원하는 일입니까? 그렇지 않다면 변경하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top