problem with symbolic factorization with two symbols

조회 수: 4 (최근 30일)
rustem
rustem 2023년 10월 21일
편집: Torsten 2023년 10월 21일
The output is not a factorized one. I want this form : (s+s1)*(s+s2)*(s+s3). What is the problem?
syms s K
factor(s^3 + 10*s^2 + (21+K)*s + 4*K, [s, K],'FactorMode','full')
The output is
4*K + 21*s + K*s + 10*s^2 + s^3
  댓글 수: 1
Dyuman Joshi
Dyuman Joshi 2023년 10월 21일
It is factorized according to the inputs given.
From the documentation - F = factor(x,vars) returns an array of factors F, where vars specifies the variables of interest. All factors not containing a variable in vars are separated into the first entry F(1). The other entries are irreducible factors of x that contain one or more variables from vars.
Note the last sentence.
What is the expected output from the vectorization?

댓글을 달려면 로그인하십시오.

채택된 답변

John D'Errico
John D'Errico 2023년 10월 21일
편집: John D'Errico 2023년 10월 21일
That you want to see a simple set of factors is not relevant. You essentially need to obtain the roots of this cubic polynomial in s, where K is a parameter, which would give you that factorization.
syms s K
sroots = solve(s^3 + 10*s^2 + (21+K)*s + 4*K,s,'maxdegree',3)
sroots = 
As you can see, they are fairly messy, and depending on the value of K, they may well be complex even if K is real. This is expected for any cubic polynomial, that we may find exactly two conjugate complex roots.
The factors now are just
prod(s-sroots)
ans = 
We can expand that to show the result recovers your original polynomial.
simplify(expand(ans))
ans = 
Finally, why did not factor understand what you wanted to see? You gave it two variables s and K. How should factor possibly know that you wanted it to do what I just did, essentially, that s is the variable of interest, and K a symbolic parameter in the problem? Software cannot read your mind, at least, not yet.
  댓글 수: 7
Walter Roberson
Walter Roberson 2023년 10월 21일
Factorization of expressions with real components (or components of unknown reality) traditionally only proceeds to the point where any further factoring would require use of imaginary components.
syms x
factor(x^2 + 1)
ans = 
factor(x^2 - 1)
ans = 
P1 = expand((x-2) * (x+7) * (x-7))
P1 = 
factor(P1)
ans = 
P2 = expand((x-2) * (x+7i) * (x-7i))
P2 = 
factor(P2)
ans = 
P3 = expand((x-2i) * (x+7) * (x-7))
P3 = 
factor(P3)
ans = 
Torsten
Torsten 2023년 10월 21일
편집: Torsten 2023년 10월 21일
I cannot see a rule when "factor" works and when if does not work.
syms x
P2 = expand((x-2) * (x+7i) * (x-7i))
P2 = 
factor(P2,x,'FactorMode','complex')
ans = 

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Torsten
Torsten 2023년 10월 21일
Here are the factors:
syms s K
eqn = s^3 + 10*s^2 + (21+K)*s + 4*K == 0;
factors = solve(eqn,s,'MaxDegree',3)
factors = 
  댓글 수: 2
Dyuman Joshi
Dyuman Joshi 2023년 10월 21일
Shouldn't the factors be
s - roots_of_equation
Torsten
Torsten 2023년 10월 21일
Yes, I should have said: -s1, -s2 and -s3 from the factorization (s+s1)*(s+s2)*(s+s3).

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Symbolic Variables, Expressions, Functions, and Preferences에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by