Why sym2poly function converts a random string to s polynomial?

1 次查看(过去 30 天)
Why sym2poly function converts a random string ('cacssd' for example) to [1 0] polynomial?
syms s
rt='cacd';
num=sym(rt);
snum=sym2poly(num)
I want to handle an error for this but unfortunatly there is no error. Any idea?

采纳的回答

sadel
sadel 2011-5-30
Ok , I found the answer!!!
syms s
rt='cacd';
try
u=eval(rt)
num=sym(rt);
snum=sym2poly(num)
catch
warndlg('Invalid variable','!!Warning!!')
end
  6 个评论
Walter Roberson
Walter Roberson 2011-5-30
If that's what you wanted, they just use
if ismember('s',symvar(insertfunction))
snum = sym2poly(sym(insertfunction));
else
warn='Invalid variable'
end
However, the presence of s as a free variable in insertfunction does not establish that insertfunction codes a polynomial.
sadel
sadel 2011-5-31
Thank you but this doesn't work right if I insert the polynomial '5'.
With my code I receive the number 5. And with yours I receive warn='Invalid variable'. My requirements were my function to recognize polynomials of any order and not recognize expressions like exp() sqrt() pow().

请先登录,再进行评论。

更多回答(1 个)

Paulo Silva
Paulo Silva 2011-5-29
The result [1 0] means that there's a symbolic variable with 1 for it's coefficient, the polynomial is:
1*cacd+0
  6 个评论
Walter Roberson
Walter Roberson 2011-5-30
casd *does* have "the type of a polynomial", just as much as 1*x+0 does.
Perhaps what you want is to restrict to certain variables and then use coeff() or coeffs() to detect whether those variables occur.

请先登录,再进行评论。

标签

尚未输入任何标签。


Translated by