I can't find a way to use lcoeff; degree; coeff in a home program...
Code:
CAS.numer("(2+x^2)/(1+x)") is ok => x^2+2
CAS.denom("(2+x^2)/(1+x)") is ok => x+1
but :
CAS.coeff("x^2+2,2") =>0
CAS.lcoeff("3*x^3+2*x") => 3*x^2+2 in place of 3
CAS.degree("3*x^3+2*x") => 0 !!
CAS.froot("(1+x^2)/(1-x)") =>[] !!
In my mind string inside CAS.cas_stuff("...") is the good practice ?
these code doesn't work...
Code:
f:="numer((1+x^2)/(1+x))";
num:=CAS(f);
I need these functions in a home program because i'd like to compute symbolicaly the phase \(\varphi\) of a transfer functions \(\dfrac{P(s)}{Q(s)}\cdot e^{-k\cdot s}\) initially placed in F0 to F9 var in term of 'X' in a FUNCTION APP like
"froot" from CAS give me all roots of numerator and denom with multiplicity so :
\(F(s)=K\cdot\dfrac{(s-r1)...(s-r_n)}{(s-p_1)...(s-p_m)}\cdot e^{-k\cdot s}\) with \(n \leq m\)
\(\varphi=arg(F(i\cdot \omega) \)
lcoeff(numer)/lcoeff(denom) give me \(K\) so first term of \(\varphi\) is known
I can easily compute the major terms of the sum of \( \varphi\) : \(+/-m_i\cdot atan \dfrac{\beta_i-\omega}{\alpha_i}\) where \(\omega \) is the pulsation ; \(\alpha_i; \beta_i ;m_i \) are resp the real part the imaginary part and multiplicity of roots and poles of \(F(s)\)
I need to test if an exp term is there to add the last term in the phase sum... Don't know how to parse yet...
At the end I want to place these phase functions in F_i var's in term of 'X' for plot...
I try these way to plot bode phase without +/- pi discontinuity... At the end I want to keep benefits of the function app plot facility (max, zero etc...)
(02-14-2015 07:35 PM)dg1969 Wrote: [ -> ]I can't find a way to use lcoeff; degree; coeff in a home program...
Code:
CAS.numer("(2+x^2)/(1+x)") is ok => x^2+2
CAS.denom("(2+x^2)/(1+x)") is ok => x+1
but :
CAS.coeff("x^2+2,2") =>0
CAS.lcoeff("3*x^3+2*x") => 3*x^2+2 in place of 3
CAS.degree("3*x^3+2*x") => 0 !!
CAS.froot("(1+x^2)/(1-x)") =>[] !!
In my mind string inside CAS.cas_stuff("...") is the good practice ?
these code doesn't work...
Code:
f:="numer((1+x^2)/(1+x))";
num:=CAS(f);
Tried with the emulator, and everything works properly here for me. As for
CAS.coeff("x^2+2,2") =>0
are you sure you didn't mean
CAS.coeff("x^2+2","2")
Notice the quotes around each argument (the second set of quotes is unnecessary since the 2 is not symbolic)
Han. You are absolutely irreplaceable ! Thank you for your endless patience.
I just found something you already knew. Integrated help does not give the exact syntax for the HOME side which is in fact different from the CAS side.
In CAS side:
Code:
froot((1+x^3)/(1+2*x))
is ok not need the second argument: 'x'
but it is essential in the "home" side. The aid does not indicate
expect for :
Code:
CAS.coeff("x^2+3-2*x","x","2")
(I am the only guilty 3 args clearly mentioned in the help)
so
Code:
CAS.froot("(1+x^2)/(2*x+x^3)","x")
or with a single string :
Code:
CAS.froot("(1+x^2)/(2*x+x^3),x") working perfectly !
It's the same thing for other commands that I mentioned...
Han, you know what ? You are my best cyber-friend :o)