What am I doing wrong? Matrix operators

조회 수: 16 (최근 30일)
Kevin Carty
Kevin Carty 2020년 2월 22일
댓글: Preet Talati 2021년 2월 3일
function surfaceArea = surfaceBalloon(Volume,M)
% Your code goes here %
radius = ((3*Volume)./((2+M)*pi))^1/3;
surfaceArea = pi*radius^2.*(2+sqrt(1+M^2));
end
What is wrong with my code? It says:
Error using ^ (line 51)
Incorrect dimensions for raising a matrix to a power. Check that the
matrix is square and the power is a scalar. To perform elementwise
matrix powers, use '.^'.
Error in surfaceBalloon (line 5)
surfaceArea = pi*radius^2.*(2+sqrt(1+M^2));
I thought you didn't have to use dot operators unless you are multiplying, dividing, or raising two matricies. I am raising the radius variable to 1/3 which is a scalar value. Am i missing something?
  댓글 수: 2
Stephen23
Stephen23 2020년 2월 22일
편집: Stephen23 2020년 2월 22일
"Am i missing something?"
The difference between matrix and array operations.
"I thought you didn't have to use dot operators unless you are multiplying, dividing, or raising two matricies. I am raising the radius variable to 1/3 which is a scalar value."
I don't think that rule-of-thumb is correct. Instead:
  • use matrix operations when doing linear algebra,
  • otherwise use array operations.
Because, as the documentation makes clear, matrix operations apply the rules of linear algebra.
Preet Talati
Preet Talati 2021년 2월 3일
You need to add a dot operator to all the exponent calculations and your 1/3 needs to be (1/3).

댓글을 달려면 로그인하십시오.

답변 (1개)

Star Strider
Star Strider 2020년 2월 22일
If you want to raaise the elements of a matrix to a power, use element-wise exponentiation with the dot operator: .^ and see: Array vs. Matrix Operations for details.
Matrix exponentiation (and several other operattions) are only defined for square matrices. See the Wikipedia article on the Cayley-Hamilton theorem for that discussion.

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by