Two MATLAB questions about syms

2 views (last 30 days)
yishuai
yishuai on 6 Feb 2023
Edited: yishuai on 7 Feb 2023
I use matlab syms to define a function
where as follows
syms x y [5,1] matrix;
syms z;
f = (y-z*x).'*(y-z*x)
Now, I have two questions:
1. How to expand the expression of f using MATLAB?
It seems that
expand(f)
does not work! and the other functions such as simplify, collect do not work neither. So I want to know how to expand and simplify this expression in a correct way?
2. How to define the function via an output of diff?
I have tried to define a function first as
syms x y w [5,1] matrix;
syms z t;
f = @(x,y,z) (y-z*x).'*(y-z*x);
phi = @(t) f(x+t*w,y,z);
Then I compute the derivative of ϕ using diff:
diff(phi(t),t);
But I don't know how to make the resulted expression as a function of t (so that I can evaluate the expression of )? subs seems not work!
For the moment, I just copy the expression of computed by diff and define it manually. Hoping to get some better way to do it.
Thanks a lot for any comments and suggestions.

Answers (1)

Walter Roberson
Walter Roberson on 6 Feb 2023
Edited: Walter Roberson on 6 Feb 2023
You are using the "matrix" keyword, which treats the names as matrices . In order to "expand" it you would have to convert to individual symbols
syms x y [5,1] matrix;
syms z;
f = (y-z*x).'*(y-z*x)
f = 
expanded = symmatrix2sym(f)
ans = 
But I don't know how to make the resulted expression as a function of t
You cannot do that. You cannot use a symmatrix in a symfun at this time.
  1 Comment
yishuai
yishuai on 7 Feb 2023
Edited: yishuai on 7 Feb 2023
@Walter Roberson Thanks for your comments. Indeed, it's not very suitable to convert it as individual symbols to me since what I really need is to get such expression in matrix operations, and I have to do some similar computations to more complicated function f in my next step, where the dimension of each syms is something like for matrix and for vector. Since nothing is changed if the matrix size is dimentionally compatible, so I can simplify it as something like . But in viewing of the so-complicated individual expressions, I really don’t want to manually summarize the matrix operations from individual ones... Thanks a lot again for your kind comments.

Sign in to comment.

Categories

Find more on Get Started with Symbolic Math Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!