精华内容
下载资源
问答
  • 一元二次方程ax2+bx+c=0,输入a,b,c三个系数,求解方程,结果有三种情况:两个实数根、一个实数根、两个复数根。/*** Equation.java*/package cn.edu.uibe.oop;/*** 计算一元二次方程的根* @author TongQiang**/...

    一元二次方程ax2+bx+c=0,输入a,b,c三个系数,求解方程,结果有三种情况:两个实数根、一个实数根、两个复数根。

    /**

    * Equation.java

    */

    package cn.edu.uibe.oop;

    /**

    * 计算一元二次方程的根

    * @author TongQiang

    *

    */

    public class Equation {

    double a,b,c; //方程的系数

    double x1,x2; //两个根

    double r; //实部

    double v; //虚部

    int type; //0表示一个根,1表示两个实根,2表示两个复数的根

    public Equation(double a,double b,double c){

    this.a = a;

    this.b = b;

    this.c = c;

    }

    private double delta(){

    return b*b-4*a*c;

    }

    public void calculate(){

    double d = delta();

    if(Math.abs(d) < 1E-5){

    type = 0;

    x1 = -b/(2*a);

    x2 = x1;

    }else if(d > 0){

    type = 1;

    x1 = (-b+Math.sqrt(d))/(2*a);

    x2 = (-b-Math.sqrt(d))/(2*a);

    }else{

    type = 2;

    r = -b/(2*a);

    v = Math.sqrt(-d)/(2*a);

    }

    }

    public void showResult(){

    switch(type){

    case 0:

    System.out.println("方程只有一个实根,x1=x2="+x1);

    break;

    case 1:

    System.out.println("方程有两个实根,分别是:x1="+x1+"\tx2="+x2);

    break;

    case 2:

    System.out.println("方程有两个复数根,分别是:"+r+"+"+v+"i,\t"+r+"-"+v+"i");

    break;

    }

    }

    public static void main(String[] args) {

    Equation eq1 = new Equation(1,2,2);

    eq1.calculate();

    eq1.showResult();

    Equation eq2 = new Equation(1,-2,1);

    eq2.calculate();

    eq2.showResult();

    Equation eq3 = new Equation(1,6,5);

    eq3.calculate();

    eq3.showResult();

    }

    }

    分享到:

    18e900b8666ce6f233d25ec02f95ee59.png

    72dd548719f0ace4d5f9bca64e1d7715.png

    2009-09-25 23:46

    浏览 2308

    评论

    展开全文
  • 一元二次方程ax2+bx+c=0,输入a,b,c三个系数,求解方程,结果有三种情况:两个实数根、一个实数根、两个复数根。/*** Equation.java*/package cn.edu.uibe.oop;/*** 计算一元二次方程的根* @author TongQiang**/...

    一元二次方程ax2+bx+c=0,输入a,b,c三个系数,求解方程,结果有三种情况:两个实数根、一个实数根、两个复数根。

    /**

    * Equation.java

    */

    package cn.edu.uibe.oop;

    /**

    * 计算一元二次方程的根

    * @author TongQiang

    *

    */

    public class Equation {

    double a,b,c; //方程的系数

    double x1,x2; //两个根

    double r;     //实部

    double v;     //虚部

    int type;     //0表示一个根,1表示两个实根,2表示两个复数的根

    public Equation(double a,double b,double c){

    this.a = a;

    this.b = b;

    this.c = c;

    }

    private double delta(){

    return b*b-4*a*c;

    }

    public void calculate(){

    double d = delta();

    if(Math.abs(d) < 1E-5){

    type = 0;

    x1 = -b/(2*a);

    x2 = x1;

    }else if(d > 0){

    type = 1;

    x1 = (-b+Math.sqrt(d))/(2*a);

    x2 = (-b-Math.sqrt(d))/(2*a);

    }else{

    type = 2;

    r =  -b/(2*a);

    v = Math.sqrt(-d)/(2*a);

    }

    }

    public void showResult(){

    switch(type){

    case 0:

    System.out.println("方程只有一个实根,x1=x2="+x1);

    break;

    case 1:

    System.out.println("方程有两个实根,分别是:x1="+x1+"/tx2="+x2);

    break;

    case 2:

    System.out.println("方程有两个复数根,分别是:"+r+"+"+v+"i,/t"+r+"-"+v+"i");

    break;

    }

    }

    public static void main(String[] args) {

    Equation eq1 = new Equation(1,2,2);

    eq1.calculate();

    eq1.showResult();

    Equation eq2 = new Equation(1,-2,1);

    eq2.calculate();

    eq2.showResult();

    Equation eq3 = new Equation(1,6,5);

    eq3.calculate();

    eq3.showResult();

    }

    }

    展开全文
  • 关于一元二次方程 ,通过配方法可以求解: 设 ,则分为以下的三种情况当 时候,原方程有两个不相等的实数根: 当 时候,原方程有两个相等的实数根: 当 时候,原方程有一对共轭复数根: 一元三次方程第一步仍然是对一般形式的...

    d451527ef19d49eeec5634557388672f.png

    高次方程求解的一般方法是将高次方程通过配方求解,然后进行次数降解,高次方程转化为容易求解的低次方程.

    一元二次方程

    求解高次方程,一元二次方程是最为简单的方程.关于一元二次方程

    ,通过配方法可以求解:

    ,则分为以下的三种情况
    1. 时候,原方程有两个不相等的实数根:
    2. 时候,原方程有两个相等的实数根:
    3. 时候,原方程有一对共轭复数根:

    一元三次方程

    第一步仍然是对一般形式的方程进行配方处理:

    关于一元二次方程

    ,通过配方法可以求解:


    所以设

    原方程可以化为


    到此为止,下面有很多种方法求解三次方程

    方法一:卡丹公式
    意大利数学家卡尔达诺(G.Cardano)在1545年出版的《大术》一书中,首先发表了上述公式,此公式来自意大利数学家塔尔塔利亚(N.Tartaglia),但卡尔达诺给出了该公式的几何证明。求解的方法如下所示

    ,则有

    若对于任意
    成立,可以令

    或者表示为

    所以求解三次方程化解为求解一个二次方程:

    根据二次方程求根公式,判别式为

    ,设
    .所以得到

    或者

    或者

    其中

    .所以得到

    为了方便起见,可以统一写成以下的形式

    其中

    显然,当

    的时候,原方程有一个实数根和一对共轭复数根;

    的时候,易知
    由于

    d98340b7f707fc6159a14fde7d745473.png

    故而原方程有一个实数根和另外两个相等的实数根.

    时候,我们可设

    所以得到

    3c19978a361dcf12444143c5dbb373d2.png

    所以原方程有三个不相等的实数根.

    方法二:盛金公式法(包含有三角函数求解的方法)

    由于系数


    ,则系数化为

    则判别式化为

    所以设

    ,重新定义判别式
    .则

    所以得到

    ,所以原方程中的根可以表示为

    或者简写为

    时候,这时我们考虑到三角函数中三倍角公式

    实际上对应于这样的一个方程表达式:

    它的根分别为
    .

    如此,对上述方程的根扩大m倍数,即

    ,则可以得到方程

    对应于三次方程化简的形式

    ,则对照系数表达式可以得出:

    所以有

    所以原方程中的根可以表示为

    ,其中
    .

    一元四次方程

    一元四次方程的一般形式可以表达为

    其中

    ,经过配方可以得到

    .

    通过化简,设

    可以得到一元四次方程

    求解方法也有多种多样的方法,下面介绍这几种方法

    方法一:带入求解方法(置换群方法)

    ,则可以得到

    其中


    所以有

    带入原方程中得到

    所以得到

    所以得到一个三次方程

    即方程

    为方程的三个解,则方程的解为

    由于

    .

    可见在产生四次方程根的时候,产生了四个多余的根.所以就有以下的结论:

    的时候,公式变为:

    的时候,公式变为:

    时候,由三次方程可知
    中一个为实数,另外两个为共轭复数,不妨设

    所以当

    时候

    时候

    时候,必有
    .此时

    的时候,公式变为:

    的时候,公式变为

    所以当
    并且
    时候,原方程必有两个相等的实数根和另外两个与之不相等的实数根;若
    的时候,原方程必定有三个相等的实数根和另外一个与之不相等实数根;若
    时候,原方程有四个相等实数根.

    原方程有一对或者两对复数根.

    方法二:配方法(费拉里方法)
    由方程的化简形式,将低于4次的项移动到等式的右边可以得到,添加平方项

    ,并配方有


    所以我们取适当的值z,可以将方程右边化为一个完全平方式.令

    这是一个三次方程,求解这个三次方程就可以得到相应的四次方程的解.

    方法三:待定系数法求解


    将等式的右边展开可以得到

    对照系数可以得到

    由前两个方程可以得到

    带入到第三个方程中化简可以得到方程

    显然这是一个一元三次方程.通过求解这个三次方程可以得到相应的结果.

    待定系数的方法最初由笛卡尔提出求解.

    方法四:带入求解法(置换群)

    这个方法不同于方法一.这里设方程的解为

    由一元四次方程的一般形式可以化为


    现在对等式两边同乘以
    得到

    然后设

    ,

    ,

    .

    所以得到方程

    所以就会得到

    故而有

    很明显的目标就是将四次方程降次转化为三次方程进行求解.现在得到

    由于

    所以得到

    并且有

    所以得到


    由于

    所以根据上述的推论结果,就可以得到这样的一个结果

    所以现在我们就可以构造方程

    其中

    ,这就是我们即将要求的方程.这样我们非常惊奇地发现,这样构造的方程其实就是待定系数法所求解的方程表示的结果!求解这个方程就可以得到相应方程的解.

    综上所述,通过求解2,3,4次方程可以得到这样的一个规律,求解高次方程的方法基本就是通过降解未知数的次数然后再求解方程.由于准备不足,这篇文章有待更新,后续过程中我们还会讨论一些更高次的方程,尤其是对5次方程的讨论与求解.

    展开全文
  • #include //标准输入输出头文件  #include //数学函数的头文件  ... 用else if结构在复数范围内求解一元二次方程  函数功能:   实现在复数范围内求解一元二次方程  变量说明:   a,b,c
    1. #include <stdio.h>     //标准输入输出头文件    
    2. #include <math.h>      //数学函数的头文件  
    3. /***********主函数main()***********    
    4. 函数说明:    
    5.     用else if结构在复数范围内求解一元二次方程的根  
    6. 函数功能:    
    7.     实现在复数范围内求解一元二次方程的根  
    8. 变量说明:    
    9.     a,b,c为一元二次方程的三个系数    
    10.     p为一元二次方程判别式b*b-4*a*c的结果     
    11.     x1,x2为一元二次方程的两个实根 realpart,imagepart为一元二次方程的实部和虚部  
    12. 函数返回值:    
    13.     此处不需要返回值,因此返回值为0.    
    14. ***********************************/    
    15. int main()  
    16. {  
    17.     //临时变量,存放输入的系数  
    18.     float a,b,c,p;  
    19.     //临时变量,存放两个实根  
    20.     float x1,x2;  
    21.     //临时变量,存放虚部和实部  
    22.     float realpart,imagepart;  
    23.       
    24.     printf("请输入一元二次方程的系数a,b,c:\n");  
    25.     scanf("%f%f%f",&a,&b,&c);  
    26.     //当a等于0并且b等于0时无解  
    27.     if(0 == a && 0 == b )  
    28.     {  
    29.         printf("无解!");  
    30.     }  
    31.     //当a等于0并且b不等于0时只有一个解  
    32.     else if(0 == a && 0 != b)  
    33.     {  
    34.         printf("方程只有一个解:%.3f\n",-c/b);  
    35.     }  
    36.     else  
    37.     {  
    38.         p = b*b - 4*a*c;  
    39.         realpart = -b/(2*a);  
    40.         imagepart = sqrt(fabs(p)/(2*a));  
    41.         //当判别式p小于0时,有虚数解  
    42.         if(p < 0)  
    43.         {  
    44.             printf("方程有虚数解:\n");  
    45.             printf("%.3f+%.3fi\n",realpart,imagepart);  
    46.             printf("%.3f+%.3fi\n",realpart,imagepart);  
    47.         }  
    48.         //当判别式p大于0时,有实数解  
    49.         else if(p > 0)  
    50.         {  
    51.             x1 = realpart + imagepart;  
    52.             x2 = realpart - imagepart;  
    53.             printf("方程有两个实数解:\n");  
    54.             printf("x1=%.3f\n",x1);  
    55.             printf("x2=%.3f\n",x2);  
    56.         }  
    57.         //当判别式p等于0时,只有一个实数解  
    58.         else  
    59.         {  
    60.             printf("方程只有一个实数解:%.3f\n",realpart);  
    61.         }  
    62.     }  
    63.     return 0;  
    展开全文
  • 在学习复数时,最近有个别比较好学的同学提出一个问题:“对于复数系数一元二次方程,是否可以用求公式求解呢?”——回答是肯定的!关于复数集中解一元二次方程的问题。其实,在复数集内解关于x的一元二次方程ax2...
  • Java类求解一元二次方程

    万次阅读 2009-09-25 23:46:00
    http://blog.csdn.net/microtong OakCMS内容管理系统 http://www.oakcms.cn http://www.oakcms.net 一元二次方程ax2+bx+c=0,输入a,b,c三个系数,求解方程,结果有三种情况:两个实数根、一个实数根、两个复数根。...
  • 一元二次方程 ax²+bx+c=0 的包含3种情况(这里仅讨论a!=0的情况) #include<stdio.h> #include<math.h>void ax(int a,int b,int c); //δ>0void bx(int a,int b,int c); //δ=0void cx(int a,int b,...
  • 用c++编写求解一元二次方程的程序。包含了复数根求解
  • 记得在初中三年级就学过求解一元二次方程,万能的求公式就行了。最近看到卡耐基梅隆大学的一个教授发明了一种简单方法1,看起来有点意思,的确比求公式要简单很多。 具体方法 对于任意一个一元二次方程都可以...
  • 关于一元二次方程 ,通过配方法可以求解: 设 ,则分为以下的三种情况当 时候,原方程有两个不相等的实数根: 当 时候,原方程有两个相等的实数根: 当 时候,原方程有一对共轭复数根: 一元三次方程第一步仍然是对一般形式的...
  • 0 共轭复数根 那既然了解了大概了就贴上代码了 #define exp pow(10,-7)//C语言中一般float都会转换double 估计是因为double精度可以15位的原因把 float只可以6位 ,而如过你想跟高的精度可以定义下面的longdoule ...
  • 那个时候老师就告诉我们,一元二次方程一般有两个,一元n次方程则一般有n个。后来在课外书上了解到,这个结论最早是由数学王子高斯严格证明出来的。当时我就有一个疑惑,明明有些一元二次方程因为判别式小于0是...
  • 我们可以看到,相比于二次方程,三次方程求公式表达式要复杂的多,包含了一个二重根号,计算量庞大,而且大多数情况下会出现一对复数解,C语言不太好操作;在判别式小于0时,即使三个解都是实数,我们仍然需要对一...
  • 任何复系数一元n多项式 方程复数域上至少有一(n≥1),由此推出,n复系数多项式方程复数域内有且只有n个(重按重数计算) p(x)=an(x−z1)(x−z2)(x−z3)…(x−z1),zi∈C {\color{Purple}p (x) = a _{n}...
  • C语言编程100例之3

    2014-10-07 17:52:22
    //******求解一元二次方程****** //作者: Shelly //版本: v1.0 ...//主要功能: 在复数范围内求解一元二次方程 //使用语言: C语言 //********************************* #include //标准输入输出
  • 一元二次方程ax^2+bx+c=0的根。根据提示输入系数a、b、c的值,显示方程的根。注意a为0、b为0、实数根、复数根等不同情况。 输入格式: 依次输入a、b和c的 值 输出格式: 见样例,两个根之间用一个空格分隔 输入样例...
  • 过点(x1,f(x1))做曲线y = f(x)的切线,并求该切线与x轴的横坐标 x2 = x1-f(x1)/f'(x1),称x2为r的二次近似值。重复以上过程,得r的近似值序列,其中x(n+1)=x(n)-f(x(n))/f'(x(n)),称为r的n+1次近似值,上式称为...
  • 6.15 第种边界条件的三样条函数插值、微商与积分 6.16 第三种边界条件的三样条函数插值、微商与积分 6.17 二元三点插们 6.18 二元全区间插值 第7章 数值积分 7.1 数值积分类设计 7.2 变步长梯形求枳法 7.3 变...
  • C#数值计算算法编程 代码

    热门讨论 2009-12-11 11:31:58
    6.15 第种边界条件的三样条函数插值、微商与积分 6.16 第三种边界条件的三样条函数插值、微商与积分 6.17 二元三点插们 6.18 二元全区间插值 第7章 数值积分 7.1 数值积分类设计 7.2 变步长梯形求枳法 7.3 变...
  • 我想你可能只看得懂这个是牛顿提出的吧,其实它是牛顿解复杂方程的方法,通常这类方程没有求公式,不像一元二次方程有公式。 下面我来讲讲牛顿迭代法的几何方面的意义 首先画一个函数图像 在二次函数上取一个...
  • 6.12 求解对称正定方程组的共岿梯度法 6.13 求解线性最小二乘文体的豪斯伯尔德变换法 6.14 求解线性最小二乘问题的广义逆法 6.15 求解病态方程组 第7章 非线性方程方程组的求解 7.1 求非线性方程一个实的对分法 ...
  • 第7章 非线性方程方程组的求解 7.1 求非线性方程一个实的对分法 7.2 求非线性方程一个实的牛顿法 7.3 求非线性方程一个实的埃特金矢代法 7.4 求非线性方程一个实的连分法 7.5 求实系数代数方程全部的QR...
  • 第7章 非线性方程方程组的求解 7.1 求非线性方程一个实的对分法 7.2 求非线性方程一个实的牛顿法 7.3 求非线性方程一个实的埃特金矢代法 7.4 求非线性方程一个实的连分法 7.5 求实系数代数方程全部的QR...
  • 优化算法-牛顿法

    2018-03-11 15:23:00
    牛顿法(英语:Newton's method)又称为牛顿-...一般情况对于f(x)是一元二次的情况直接应用求公式就可以了,但是对于更高次(在5次方以上),没有求公式,于是牛顿想了个近似求解的办法——牛顿法 首先以一元...
  • 第7章 非线性方程方程组的求解 7.1 求非线性方程一个实的对分法 7.2 求非线性方程一个实的牛顿法 7.3 求非线性方程一个实的埃特金矢代法 7.4 求非线性方程一个实的连分法 7.5 求实系数代数方程全部的QR...
  • C++常用算法程序集

    热门讨论 2011-03-24 09:15:32
    5.7 第种边界条件的三样条函数插值、微商与积分301 5.8 第三种边界条件的三样条函数插值、微商与积分307 5.9 二元Lagrange插值314 5.10 最小二乘曲线拟合319 5.11 切比雪夫曲线拟合326 5.12 最佳一致逼近的里...
  • 第7章 非线性方程方程组的求解 7.1 求非线性方程一个实的对分法 7.2 求非线性方程一个实的牛顿法 7.3 求非线性方程一个实的埃特金矢代法 7.4 求非线性方程一个实的连分法 7.5 求实系数代数方程全部的QR...
  • 非线性方程方程组的求解 7.1 求非线性方程一个实的对分法 7.2 求非线性方程一个实的牛顿法 7.3 求非线性方程一个实的埃特金矢代法 7.4 求非线性方程一个实的连分法 7.5 求实系数代数方程...
  • 1.4.1 获得二叉树的深度和(顺序结构) 141 范例1-55 获得二叉树的深度和 141 ∷相关函数:BiTreeDepth函数 Root函数 1.4.2 获得二叉树的深度和(链表结构) 144 范例1-56 获得二叉树的深度和 144 ∷...

空空如也

空空如也

1 2
收藏数 32
精华内容 12
关键字:

一元二次方程复数根求解