how to write a function for quadratic equation?

조회 수: 4 (최근 30일)
jun
jun 2022년 9월 25일
댓글: Dyuman Joshi 2022년 9월 26일
I wrote this into matlab but it doesn't work where express x1, x2, it express only one sol in d>=0 but ploting is work in d>=0. and it's error in d<0
why it doen't work and how to fix it?
function [x1,x2] = f(a,b,c)
if a==0
x1=-c/b;
x2=-c/b;
plot(x1,0,'gx',x2,0,'gx')
hold on
fplot(@(x) a*x.^2+b*x+c)
hold off
end
d=b^2-4*a*c;
if (d>=0)&&(~(a==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
elseif a==0
x1=-c/b;
x2=-c/b;
plot(x1,0,'gx',x2,0,'gx')
hold on
fplot(@(x) a*x.^2+b*x+c)
hold off
else
[x1 x2]=[]
end
  댓글 수: 4
Dyuman Joshi
Dyuman Joshi 2022년 9월 25일
Do you want to return empty values for if any/both of the two conditions - a==0 , d<0?
jun
jun 2022년 9월 25일
i want d<0 => empty value return
but a=0&d<0 => x1=x2=-c/b return that i want

댓글을 달려면 로그인하십시오.

채택된 답변

VBBV
VBBV 2022년 9월 25일
if (d>=0) & (~(a==0))
use binary operator &
  댓글 수: 11
jun
jun 2022년 9월 26일
Are you right about 'a==0'? If 'a=0', an error like this is displayed
Dyuman Joshi
Dyuman Joshi 2022년 9월 26일
Let me highlight it. See the green parts, both are same.
I would suggest you to remove the top one and edit last else as
elseif d<0
function [x1,x2] = f(a,b,c)
%{
if a==0
x1=-c/b;
x2=-c/b;
plot(x1,0,'gx',x2,0,'gx')
hold on
fplot(@(x) a*x.^2+b*x+c)
hold off
end
%}
d=b^2-4*a*c
if (d>=0)&&(~(a==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
%{
elseif a==0
x1=-c/b;
x2=-c/b;
plot(x1,0,'gx',x2,0,'gx')
hold on
fplot(@(x) a*x.^2+b*x+c)
hold off
%}
else
x1 = [];
x2 = [];
end
end

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Timing and presenting 2D and 3D stimuli에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by