Clear Filters
Clear Filters

For some reason, I am not getting plots when I put in this code for this question.

5 views (last 30 days)
The question states: insert the plots obtained for the following three cases in the figure below.
In the title of the plot replace “Roots of Polynomial” with your “Last_Name, FirstName”
a. a=1, b=3, c=4
b. a=1, b=4, c=4
c. a=1, b=3, c=2
My code says:
% Enter the real coefficients of a quadratic polynomial
disp('Enter the coeffs of the quadratic: a x^2 + b x + c')
a = input('Enter the coeff. of x^2 term: a = 1');
b = input('Enter the coeff. of x^1 term: b =3 ');
c = input('Enter the coeff. of x^0 term: c =4 ');
% Compute the Discriminant: Delta = b^2 - 4ac
Delta = b^2 - 4*a*c;
% Solve for the roots of the quadratic polynomial
if Delta < 0 % Case of real and distinct roots
x1 = (-b + sqrt(Delta)) / 2*a;
x2 = (-b - sqrt(Delta)) / 2*a;
fprintf(' Real and distinct roots: x1 = %4.2f x2 = %4.2f\n', x1, x2)
elseif Delta == 0 % Case of real repeated roots
x1 = -b / (2*a);
x2 = x1;
fprintf(' Real and repeated roots: x1 = %4.2f x2 = %4.2f\n', x1, x2)
else % Case of complex roots
x1 = (-b + sqrt(Delta)) / (2*a);
x2 = (-b - sqrt(Delta)) / (2*a);
fprintf(' Imag roots: x1 = %g + j%g and x2 = %g + j%g \n',...
real(x1), imag(x1), real(x2), imag(x2));
end
plot = [num2str(a), 'x^2 + ', num2str(b), 'x + ',num2str(c)];
% Plot the two roots
poly(real(x1), imag(x1),'rx', real(x2), imag(x2),'bo', 'MarkerSize',16, 'LineWidth',5)
title(['Roots of polynomial: f(x) = ', poly, ' = 0'], 'FontSize', 16)
xlabel('Real Axis');
ylabel('Imag Axis')
legend(['x_1=',num2str(x1)],['x_2=',num2str(x2)])
grid
Basically, my problem is that I am not getting any graphs and plots from my code. What should I do differently?
  1 Comment
Walter Roberson
Walter Roberson on 14 Oct 2023
plot = [num2str(a), 'x^2 + ', num2str(b), 'x + ',num2str(c)];
That creates a variable named plot that is a character vector. After you execute that line, you will not be able to call plot() as a function until that plot variable is cleared or goes out of scope.

Sign in to comment.

Answers (1)

Torsten
Torsten on 14 Oct 2023
Edited: Torsten on 14 Oct 2023
if Delta > 0 % Case of real and distinct roots
x1 = (-b + sqrt(Delta)) / (2*a);
x2 = (-b - sqrt(Delta)) / (2*a);
fprintf(' Real and distinct roots: x1 = %4.2f x2 = %4.2f\n', x1, x2)
instead of
if Delta < 0 % Case of real and distinct roots
x1 = (-b + sqrt(Delta)) / 2*a;
x2 = (-b - sqrt(Delta)) / 2*a;
fprintf(' Real and distinct roots: x1 = %4.2f x2 = %4.2f\n', x1, x2)
And I don't know what you expect from the command
poly(real(x1), imag(x1),'rx', real(x2), imag(x2),'bo', 'MarkerSize',16, 'LineWidth',5)
Maybe you mean
plot(real(x1), imag(x1),'rx', real(x2), imag(x2),'bo', 'MarkerSize',16, 'LineWidth',5)
But this will only plot 2 points. A graph of the parabola together with the roots/root/non-existing real roots would be helpful.

Categories

Find more on Specifying Target for Graphics Output in Help Center and File Exchange

Products


Release

R2023a

Community Treasure Hunt

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

Start Hunting!