How can I expand polynomials with matlab?
92 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Sachi
am 14 Jan. 2015
Beantwortet: Star Strider
am 14 Jan. 2015
Can matlab expand something like the following and represent it in terms of powers of 'x'?
x(x-7)(x-6) + (x+4)(x-9)(x-2) + x(x-8)(x+1) ----> k_1 x^3 + k_2 x^2 + k_3 x + k_4
1 Kommentar
Akzeptierte Antwort
John D'Errico
am 14 Jan. 2015
Trivial. With or without the symbolic toolbox. First, with...
syms x
P = expand(x*(x - 7)*(x - 6) + (x + 4)*(x - 9)*(x - 2) + x*(x - 8)*(x + 1))
P =
3*x^3 - 27*x^2 + 8*x + 72
Without the symbolic toobox, but with my sympoly toolbox , as found on the file exchange. Its free, but less capable than the symbolic one.
sympoly x
P = x*(x - 7)*(x - 6) + (x + 4)*(x - 9)*(x - 2) + x*(x - 8)*(x + 1)
P =
72 + 8*x - 27*x^2 + 3*x^3
In either case, it is easy enough to extract the numeric coefficients alone, if that is what you wanted.
And if you have neither toolbox and you like to do your own work (hey the sympoly toolbox is FREE after all)
coef = conv(conv([1 0],[1 -7]),[1 -6]) + ...
conv(conv([1 4],[1 -9]),[1 -2]) + ...
conv(conv([1 0],[1 -8]),[1 1])
coef =
3 -27 8 72
0 Kommentare
Weitere Antworten (1)
Star Strider
am 14 Jan. 2015
An alternative using poly (assuming I got the maths correct) is:
% f(x) = x(x-7)(x-6) + (x+4)(x-9)(x-2) + x(x-8)(x+1)
rts1 = [ 0 7 6];
rts2 = [-4 9 2];
rts3 = [ 0 8 -1];
trm1 = poly(rts1);
trm2 = poly(rts2);
trm3 = poly(rts3);
ply = trm1 + trm2 + trm3;
produces:
ply =
3 -27 8 72
0 Kommentare
Siehe auch
Kategorien
Mehr zu Number Theory finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!