计算a*x^2+b*x+c=0 用c语言 和matlab算出来 结果不一样 什么地方错了? 谢谢c:# include # include int main(void){float a,b,c;double disc,twoa,term1,term2;scanf("%f %f %f",&a,&b,&c);if(a==0)if(b==0)printf("wrong\n");elseprintf("=%f\n",
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 11:44:51
计算a*x^2+b*x+c=0 用c语言 和matlab算出来 结果不一样 什么地方错了? 谢谢c:# include # include int main(void){float a,b,c;double disc,twoa,term1,term2;scanf("%f %f %f",&a,&b,&c);if(a==0)if(b==0)printf("wrong\n");elseprintf("=%f\n",
计算a*x^2+b*x+c=0 用c语言 和matlab算出来 结果不一样 什么地方错了? 谢谢
c:
# include
# include
int main(void)
{
float a,b,c;
double disc,twoa,term1,term2;
scanf("%f %f %f",&a,&b,&c);
if(a==0)
if(b==0)
printf("wrong\n");
else
printf("=%f\n",-c/b);
else
{
disc=b*b-4*a*c;
twoa=2*a;
term1=-b/twoa;
term2=sqrt(fabs (disc))/twoa;
if(disc> solve('2*x^2+6*x+1=0','x')
ans =
-3/2+1/2*7^(1/2)
-3/2-1/2*7^(1/2)
结果和c的 不一样.?
谢谢
计算a*x^2+b*x+c=0 用c语言 和matlab算出来 结果不一样 什么地方错了? 谢谢c:# include # include int main(void){float a,b,c;double disc,twoa,term1,term2;scanf("%f %f %f",&a,&b,&c);if(a==0)if(b==0)printf("wrong\n");elseprintf("=%f\n",
楼主你的tem1=-b/twoa=-b/(2*a)
tem2=sqrt(fabs (disc))/twoa=sqrt(b*b-4*a*c)
这两个明显还不是方程的根吖,根据公式(-b±sqrt(b*b-4*a*c))/2*a应该是term1+term2和term1-term2.
还有就是我感觉你上面判断的
if(a==0)
if(b==0)
我猜测你是想让a b都不为0吧?,那么写成if(a==0&&b==0)好点吧,但是根据你下面的printf("=%f\n",-c/b),可以看出明显b不能为0,但是a却没有要求,而要让a*x^2+b*x+c=0有解的话只要a,b不同时为0就行了,再根据你的-c/b,得知b不能为0,那么判断的时候我感觉只需要判断if(b==0)就可以了,a可以取任意值.楼主可以试着修改一下,还有什么问题我们再一起讨论~!
结果怎么个不一样法了?
顺便说哈
你的term1和term2本来就不是方程的解啊
解应该是(-b+-sqrt(disc))/2a
大概就是-term1+term2和-term1-term2
赞同
依若可芯
的回答