value must be a double scaler
28 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Mohamed Rashed
le 7 Mar 2021
Modifié(e) : Aghamarsh Varanasi
le 12 Mar 2021
so I am trying to make a cubic equation calculater in matlab but i keep getting the error :
Error using matlab.ui.control.internal.model.AbstractNumericComponent/set.Value (line 111)
'Value' must be a double scalar.
I am really not sure what it means but here is the code:
vala = app.a.Value;
valb = app.b.Value;
valc = app.c.Value;
vald = app.d.Value;
zz1 =(-valb/3*vala)-(1/3*vala)*(0.5*(2*valb^3-9*vala*valb*valc+27*vala^2*vald+sqrt(2*valb^3-9*vala*valb*valc+27*vala^2*vald)^2-(4*valb^2-3*vala*valc)^3)^0.5)^1/3-(1/3*vala)*(0.5*(2*valb^3-9*vala*valb*valc+27*vala^2*vald-sqrt(2*valb^3-9*vala*valb*valc-27*vala^2*vald)^2-(4*valb^2-3*vala*valc)^3)^0.5)^1/3;
zz2 =(-valb/3*vala)+(1+1i*sqrt(3)/6*vala*(0.5*(2*valb^3-9*vala*valb*valc+27*vala^2*vald+sqrt(2*valb^3-9*vala*valb*valc+27*vala^2*vald)^2-(4*valb^2-3*vala*valc)^3)^0.5)^1/3)+(1-1i*sqrt(3)/6*vala)*(0.5*(2*valb^3-9*vala*valb*valc+27*vala^2*vald-sqrt(2*valb^3-9*vala*valb*valc+27*vala^2*vald)^2-(4*valb^2-3*vala*valc)^3)^0.5)^1/3;
zz3 =(-valb/3*vala)+(1-1i*sqrt(3)/6*vala*(0.5*(2*valb^3-9*vala*valb*valc+27*vala^2*vald+sqrt(2*valb^3-9*vala*valb*valc+27*vala^2*vald)^2-(4*valb^2-3*vala*valc)^3)^0.5)^1/3)+(1+1i*sqrt(3)/6*vala)*(0.5*(2*valb^3-9*vala*valb*valc+27*vala^2*vald-sqrt(2*valb^3-9*vala*valb*valc+27*vala^2*vald)^2-(4*valb^2-3*vala*valc)^3)^0.5)^1/3;
app.x1.Value =zz1;
app.x2.Value =zz2;
app.x3.Value =zz3;
p.s if you know any simpler ways that would be big help
7 commentaires
Walter Roberson
le 8 Mar 2021
"puts in the polynomial x^2+x+1" -- puts in how? Are you expecting that app.b.Value will be a formula instead of a numeric value? If you are expecting a numeric value, then App Designer permits constructing a numeric edit field that does not permit arbitrary text.
Réponse acceptée
Aghamarsh Varanasi
le 12 Mar 2021
Modifié(e) : Aghamarsh Varanasi
le 12 Mar 2021
Hi Rashed,
As suggested by Walter, you can use the root function in MATLAB to find the roots of a cubic polynomial.
From the error that you have mentioned, it seems that you are using a Edit Field (numeric) for x1, x2 and x3. As you are solving a cubic equation, there might be a chance that the root could be a complex number. As a workaround I would suggest you to use Edit Field (Text) of MATLAB App Designer for fields x1, x2 ,x3 and use num2str to convert the roots to string.
So the code would be:
vala = app.a.Value;
valb = app.b.Value;
valc = app.c.Value;
vald = app.d.Value;
p = [vala valb valc vald];
r = root(p);
% here x1, x2 and x3 are Edit Field (Text)
app.x1.Value = num2str(r(1));
app.x2.Value = num2str(r(2));
app.x3.Value = num2str(r(3));
Hope this helps
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Startup and Shutdown dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!