c 语言 matlab 计算a*(x^2)+b*x+c=0 怎么算出来不一样。什么地方有问题?
c:#include<stdio.h>#include<math.h>intmain(void){floata,b,c;doubledisc,twoa,term1,ter...
c:
# include <stdio.h>
# include <math.h>
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<0.0)
printf("complex root :\n real part=%f,imag part=%f\n",term1,term2);
else
printf("real root :\n root1=%f,root2=%f\n",term1,term2);
}
}
我用a=2 b=6 c=1在
matlab里计算
matlab:
>> 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的 不一样。??
谢谢 展开
# include <stdio.h>
# include <math.h>
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<0.0)
printf("complex root :\n real part=%f,imag part=%f\n",term1,term2);
else
printf("real root :\n root1=%f,root2=%f\n",term1,term2);
}
}
我用a=2 b=6 c=1在
matlab里计算
matlab:
>> 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的 不一样。??
谢谢 展开
4个回答
展开全部
term2=sqrt(fabs (disc))/twoa;
这一句应该是:
term2=sqrt(fabs (disc)/twoa);
这一句应该是:
term2=sqrt(fabs (disc)/twoa);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
printf("real root :\n root1=%f,root2=%f\n",term1,term2);
这句本身就不对吧
term1和term2合起来才是二次方程的解吧
这句本身就不对吧
term1和term2合起来才是二次方程的解吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、第一个if语句后要用大括号括起来,因为超过1 行语句
2、实数根分别是 term1+term2,term1-term2
2、实数根分别是 term1+term2,term1-term2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询