Azzera filtri
Azzera filtri

Find the roots of a complicated expression

1 visualizzazione (ultimi 30 giorni)
Is it possible find the roots of a complicated expression like this:
-190 + 100/(1+0.01+x) + 80/(1+0.02+x)^2 + 20/(1+0.03+x)^3
Is there a way to rearrange this into a polynomial first, and then seek its roots?
(It would be easy if the denominators in the expression were simply (1+x), but in this complicated expression each denominator is different.)

Risposta accettata

Walter Roberson
Walter Roberson il 27 Dic 2021
format long g
syms x
y = -190 + 100/(1+0.01+x) + 80/(1+0.02+x)^2 + 20/(1+0.03+x)^3
y = 
xsol = solve(y)
xsol = 
double(xsol)
ans =
0.0141995305746602 + 0i -1.01003015681544 + 0i -1.02053169387449 - 0.00181744153124217i -1.02053169387449 + 0.00181744153124217i -1.28839509826828 - 0.204565386093891i -1.28839509826828 + 0.204565386093891i
  1 Commento
Tim Berry
Tim Berry il 27 Dic 2021
Modificato: Tim Berry il 27 Dic 2021
Thank you Walter, this is brilliant. In case it is of interest, the background to my question is I am investigating whether complex numbers can occur in various problems. Cheers!

Accedi per commentare.

Più risposte (1)

Torsten
Torsten il 27 Dic 2021
Modificato: Torsten il 27 Dic 2021
syms x
expr_orig = -190 + 100/(1+0.01+x) + 80/(1+0.02+x)^2 + 20/(1+0.03+x)^3;
expr = expr_orig*(1+0.01+x)*(1+0.02+x)^2*(1+0.03+x)^3;
expr = simplify(expr)
c = sym2poly(expr);
sol = vpa(roots(c));
format long
sol
  1 Commento
Tim Berry
Tim Berry il 27 Dic 2021
Modificato: Tim Berry il 27 Dic 2021
Thank you so much Torsten, this is fantastic. In case it is of interest, the background to my question is I am investigating whether complex numbers can occur in various problems. Cheers!

Accedi per commentare.

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Prodotti


Release

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by