how to write a function for quadratic equation?

4 visualizaciones (últimos 30 días)
jun
jun el 24 de Sept. de 2022
Comentada: jun el 24 de Sept. de 2022
I wrote this into matlab but it doesn't work where a=0, can someone explain why?
how can find x1, x2 where a=0?
function [x1,x2] = f (a,b,c)
d=b^2-4*a*c;
if d>=0
x1=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
plot(x1,0,'rx',x2,0,'rx')
hold on
fplot(@(x) a*x.^2+b*x+c)
hold off
else
[x1,x2]=deal([])
end
end
  1 comentario
Dyuman Joshi
Dyuman Joshi el 24 de Sept. de 2022
If a=0, then it's a straight line, it will only intersect the x-axis once.
Also, if a=0 then the expressions
x1=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
will become not defined.
You have to write a special condition for a=0, according to what you expect.

Iniciar sesión para comentar.

Respuestas (1)

Hiro Yoshino
Hiro Yoshino el 24 de Sept. de 2022
You can check the arguments before evaluating your statements this way:
[x1,x2] = f(1,-2,1)
x1 = 1
x2 = 1
[x1,x2] = f(0,-2,1)
Error using solution>f
Invalid argument at position 1. Value must not be zero.
function [x1,x2] = f(a,b,c)
arguments
a (1,1) {mustBeNonzero}
b (1,1) {mustBeReal}
c (1,1) {mustBeReal}
end
d=b^2-4*a*c;
if d>=0
x1=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
plot(x1,0,'rx',x2,0,'rx')
hold on
fplot(@(x) a*x.^2+b*x+c)
hold off
else
[x1,x2]=deal([])
end
end
  1 comentario
jun
jun el 24 de Sept. de 2022
it semms only a=non-zero case by argument state, did i understnad correctey?
If a=0 and non-a=/=0 situations need to be written separately as without setting arguments,
Where and how to add conditions for a=0 and a=/=0 situations?

Iniciar sesión para comentar.

Community Treasure Hunt

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

Start Hunting!

Translated by