how to write a function for quadratic equation?

7 Ansichten (letzte 30 Tage)
jun
jun am 24 Sep. 2022
Kommentiert: jun am 24 Sep. 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 Kommentar
Dyuman Joshi
Dyuman Joshi am 24 Sep. 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.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Hiro Yoshino
Hiro Yoshino am 24 Sep. 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 Kommentar
jun
jun am 24 Sep. 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?

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Polynomials finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by