What am I doing wrong? Matrix operators

3 次查看(过去 30 天)
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