C语言 解一元二次方程,求虚数解:共轭复根

什么是一元二次方程 :(来自百度百科)

只含有一个未知数(一元),并且未知数项的最高次数是2(二次)的整式方程叫做一元二次方程。标准形式为:ax²+bx+c=0(a≠0)。

用求根公式法解一元二次方程的一般步骤为:
①把方程化成一般形式
,确定a,b,c的值(注意符号);
②求出判别式
的值,判断根的情况;
③在
(注:此处△读“德尔塔”)的前提下,把a、b、c的值代入公式
进行计算,求出方程的根。
判别式:
    一元二次方程的根与根的判别式 有如下关系:
①当
时,方程有两个不相等的实数根;
②当
时,方程有两个相等的实数根;
③当
时,方程无实数根,但有2个共轭复根。
共轭复根的求法:
       在计算的时候,仍然按照求一元二次方程的办法进行计算,
      只不过将判别式中的负号提到根号外,变成i就可以了。
                     x=(-b±√(-△)i)/2a
//ax^+bx+c=0  △=b^-4ac  x=(-b±(√-△)i)/2a
//例:x^+2x+5=0  △=-16  x=(-2±4i)/2=-1±2i
//例:x^+3x+4=0  △=-7  x=(-3±7i)/2
#include 
#include 

int main()
{
        int a,b,c;
        float x1,x2,d;
        printf("输入方程的三个系数:");
        scanf("%d %d %d",&a,&b,&c);
        printf("方程:");
        printf("%dx^2",a);
        if(b>0) printf("+");
        printf("%dx",b);
        if(c>0) printf("+");
        printf("%d的解为: ",c);

        if(a!=0)
        {
                d=sqrt(b*b-4*a*c);
                if(d>0)//判别式大于零,有两个不相等的实数根
                {
                    x1=(-b+d)/(2*a);
                    x2=(-b-d)/(2*a);
                    if(x10)
                            printf("+%.2f*i,",second);
                        else
                            printf("%.2f*i,",second);
                        printf("x2=%.2f",first);
                        if(-second>0)
                            printf("+%.2f*i\n",-second);
                        else
                            printf("%.2f*i\n",-second);

                    }
                    else
                    {
                        first=-b;
                        second=(-(b*b-4*a*c));
                        printf("x1=(%.2f",first);
                        if(second>0)
                            printf("+根号(%.2f)*i)/%d,",second,2*a);
                        else
                            printf("根号(%.2f)*i)/%d",second,2*a);
                        printf("x2=(%.2f",first);
                        if(-second>0)
                            printf("+根号(%.2f)*i)/%d\n",second,2*a);
                        else
                            printf("-根号(%.2f)*i)/%d\n",second,2*a);
                    }
//                    printf("x1=(-%d±(√%d i)/2*%d)",b,-(b*b-4*a*c),a);

                }
        }
        else
            printf("不是一元二次方程\n");
        return 0;
}
测试1:
输入方程的三个系数:1 2 3
方程:1x^2+2x+3的解为: △=根号(-8)<0,方程在实数范围内无解,虚数解为:
x1=-1.00+1.41*i,x2=-1.00-1.41*i
测试2:
输入方程的三个系数:1 2 5
方程:1x^2+2x+5的解为: △=根号(-16)<0,方程在实数范围内无解,虚数解为:
x1=-1.00+2.00*i,x2=-1.00-2.00*i
测试3:
输入方程的三个系数:1 3 4
方程:1x^2+3x+4的解为: △=根号(-7)<0,方程在实数范围内无解,虚数解为:
x1=(-3.00+根号(7.00)*i)/2,x2=(-3.00-根号(7.00)*i)/2



你可能感兴趣的:(C语言 解一元二次方程,求虚数解:共轭复根)