function input arguments error
74 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Cesar Cardenas
le 29 Août 2025 à 0:54
Modifié(e) : VBBV
le 29 Août 2025 à 7:28
not sure how to solve this issue with function arguments,
I'm trying to do this to figure out how to return a vector y that contains both solutions: a logical variable isreal indicating whether the results were real (isreal=1) or imaginary (isreal=0). not sure if it would be the right approach.
Any help will be appreciated, thank you
myquad
Not enough input arguments.
Error in myquad (line 3)
D = b^2 - 4*a*c;
^
function [y, isreal] = myquad(a, b, c)
% Calculate the discriminant
D = b^2 - 4*a*c;
% Calculate the two solutions using the quadratic formula
y(1) = (-b + sqrt(D)) / (2*a);
y(2) = (-b - sqrt(D)) / (2*a);
% Check if the solutions are real
isreal = all(isreal(y));
% If the discriminant is negative, the solutions are complex
if D < 0
y = [NaN, NaN]; % Return NaN for complex solutions
isreal = 0; % Set isreal to false
end
end
%In the command window I'm trying to call the function like this;
y = myquad(1, -2, 1);
disp(y); % Output: [1, 1]
disp(isreal); % Output: 1
1 commentaire
Réponse acceptée
Torsten
le 29 Août 2025 à 1:05
Modifié(e) : Torsten
le 29 Août 2025 à 1:25
Don't use isreal as a variable name: isreal is a MATLAB function that you overwrite this way.
[y, is_real] = myquad(1, -2, 1);
disp(y); % Output: [1, 1]
disp(is_real); % Output: 1
function [y, is_real] = myquad(a, b, c)
D = b^2 - 4*a*c;
if D >=0
is_real = true;
y = [(-b + sqrt(D)) / (2*a),(-b - sqrt(D)) / (2*a)];
else
is_real = false;
y = [NaN, NaN];
end
end
4 commentaires
Plus de réponses (1)
Matt J
le 29 Août 2025 à 1:04
Modifié(e) : Matt J
le 29 Août 2025 à 1:30
Your code uses 'isreal' as both the name of a function and a variable. You can resolve the conflict by renaming the output, e.g.,
[y,isReal] = myquad(1, -2, 1)
function [y, isReal] = myquad(a, b, c)
% Calculate the discriminant
D = sqrt(b^2 - 4*a*c);
isReal=isreal(D);
if ~isReal, y=nan(1,2); return; end
% Calculate the two solutions using the quadratic formula
y = (-b + [-1,1]*D) / (2*a);
end
0 commentaires
Voir également
Catégories
En savoir plus sur Dates and Time dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!