How to get norm (magnitude) of a vector the simple way?

I just want to get the norm of
syms phi the;
c = [-cos(phi)*sin(the)^2;-sin(phi)*sin(the)^2; - cos(the)*sin(the)*cos(phi)^2 - cos(the)*sin(the)*sin(phi)^2]
norm(c,2)
isn't really simplifying anything
If I type it manually:
simplify(sqrt(cos(phi)^2*sin(the)^4+sin(phi)^2*sin(the)^4+sin(the)^2*cos(the)^2))
I get a simple answere:
(sin(the)^2)^(1/2)

5 Comments

Are the and phi symbolic variable?
I've tried to let c be a [1x1] to [1x4] vector with inserting some commas in the code. I do not find any combination, where norm( c ) equals (sin(the)^2)^(1/2), which is the same as abs(sin(the)).
Therefore I do not understand, how you simplify what to get this result. Of course norm does not simplify anything, because the purpose of norm() is to calculate a norm. Simplifications are done by simplify().
Hi Niklas,
If your last two vector elements were
- cos(the)*sin(the)*cos(phi) - cos(the)*sin(the)*sin(phi)
i.e. cos(phi) and sin(phi) not squared, then you would get what you say. But since cos(phi) and sin(phi) are squared, you don't.
I'm sorry for forgetting the simicolons in c. It might have been hard for you to reproduce what I was trying to create.

Sign in to comment.

 Accepted Answer

Hi,
From the documentation of norm and simplify you could find the usage of both these functions. norm would be used to calculate the norm of a vector/matrix but not for an expression. simpify would be used in the simplification of an algebric expression.

1 Comment

well, it actually works if u were to incorporate some assumptions:
assume(phi>0);assume(the>0); assume(phi,'real'); assume(the,'real')
then, under these conditions
simplify(norm(c))
will simplify a lot (actually >0 not necessary)

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!