01. 目的

求一元二次方程 ax2+bx+c=0ax^2+bx+c=0ax2+bx+c=0 的根,分情况讨论,结果保留2位小数。

02. 一元二次方程ax2+bx+c=0ax^2+bx+c=0ax2+bx+c=0 的根

由代数基本定理,一元二次方程有且仅有两个根(重根按重数计算):x=−b±b2−4ac2ax = \dfrac{-b \pm \sqrt{b^2 - 4ac}}{2a} x=2a−b±b2−4ac​​根的情况由判别式b2−4ac\sqrt{b^2 - 4ac}b2−4ac​决定 ,利用一元二次方程根的判别式b2−4ac\sqrt{b^2 - 4ac}b2−4ac​可以判断方程的根的情况。

一元二次方程 的根与根的判别式 有如下关系:

①当b2−4ac>0\sqrt{b^2 - 4ac}> 0b2−4ac​>0 时,方程有两个不相等的实数根;
②当 b2−4ac=0\sqrt{b^2 - 4ac}=0b2−4ac​=0时,方程有两个相等的实数根;
③当 b2−4ac&lt;0\sqrt{b^2 - 4ac}&lt; 0b2−4ac​<0 时,方程无实数根,但有2个共轭复根。

上述结论反过来也成立。

方程的形式与系数a、b、c的关系
① 如果系数a、b、c都为0,则输出“方程不存在!";
② 如果a和b为0,c不为0,此时c=0不是方程,输出"方程不存在!";
③ 如果当a为0,且b、c不为0时,方程变为一元一次方程bx+c=0,此时方程
只有一个解;
④根据判别式确定方程的解。

###03. 求根代码

package com.test;//创建一个test包import java.util.Scanner;//导入java.util包中的Scanner类(使用此类可以方便的完成输入流的输入操作)
import java.math.BigDecimal;//导入java.math包中的BigDecimal(用来对超过    16位有效位的数进行精确的运算)//对一元二次方程中各系数的不同情况作讨论,列出不同情况下根的分布,最终求出存在的根
public class Squ { //定义一个公共类---Squpublic static void main(String[]args){   double X1,X2;//定义临时变量X1,X2;System.out.println("方程表达式为:ax2+bx+c=0");//显示台输出---方程表达式为:ax2+bx+c=0@SuppressWarnings("resource")Scanner sc=new Scanner(System.in);//用Scanner类获取控制台的输入(即获得从键盘输入的数)System.out.println("请输入a的值:");//显示台输出提示---输入a的值//每一次从键盘输入值后回车执行后面的内容double a=sc.nextDouble();//接受控制台输入的数字给形参a赋值System.out.println("请输入b的值:");//显示台输出提示---输入b的值double b=sc.nextDouble();//接受控制台输入的数字给形参b赋值System.out.println("请输入c的值:");//显示台输出提示---输入c的值double c=sc.nextDouble();//接受控制台输入的数字给形参c赋值double t=b*b-4*a*c;//定义一个变量t,且t=b*b-4*a*c,此时t为方程根的判别式//用判断语句对方程的系数的不同情况作讨论,并得出根的分布情况//① 判断当a、b、c都为0时,方程变为等式0=0;方程不存在!if(a==0 && b==0 && c==0){System.out.println("方程不存在!");//显示台输出}//② 当a、b都为0,而c不为0时,方程变为等式c=0,此中不含未知数,方程不存在!else if(a==0 && b==0 && c!=0){System.out.println("方程不存在!");//显示台输出}//③ 当a为0,且b、c不为0时,方程变为一元一次方程bx+c=0,此时方程只有一个解else if(a==0 && b!=0 && c!=0){System.out.println("此方程为一元一次方程");//显示台输出double result = (-1 * c) / b;//定义一个变量result存放方程的解;此时解为:-c/bSystem.out.println(resetValue(result)+"方程的解为:");}//④ 以上定义了t=b*b-4*a*c,若t>0,则t的开方为实数,此时方程有两个不同的实根,且两实根为相反数else if(t>0){System.out.println("方程有两个实根");//显示台输出//第一根的算法:((-b) + Math.sqrt(t)) / 2 * a( Math.sqrt是指math方法中的sqrt类,即开方)X1= ((-b) + Math.sqrt(t)) / 2 * a;//第一根的算法:((-b) - Math.sqrt(t)) / 2 * aX2= ((-b) - Math.sqrt(t)) / 2 * a;//显示台输出两根的值System.out.println("X1="+resetValue(X1));System.out.println("X2="+resetValue(X2));}//⑤ 如果t<0,则t开方后产生虚数,此时方程有一对共轭副根else if(t<0){double X4,X5;//定义临时变量X4、X5//⑥ 如果b不等于0,则其根为共轭副根,根由虚部和实部组成if(b!=0){X4=(-1*b)/(2*a);//根的实部X5=Math.sqrt(-1*t)/(2*a);//根的虚部System.out.println("方程有一对共轭副根:");//显示台输出//输出时toString()表示用科学计数法输出根的值;加i指虚部的表示法;其中的"+、-"连接根的实部和虚部,形成共轭System.out.println("X1="+resetValue(X4).toString()+"+"+resetValue(X5).toString()+"i");//输出第一个根的值System.out.println("X2="+resetValue(X4).toString() + "-"+ resetValue(X5).toString() + "i");//输出第二个根的值}//⑦ 若b=0,则此时根只有虚部没有实部,是一对共轭副根,实部为0else{double X6=Math.sqrt(-1*t)/(2*a);//根中只有虚部System.out.println("方程有一对相反虚根:");//显示台输出//输出时toString()表示用科学计数法输出根的值;加i指虚部的表示法;其中的"+、-"连接根的实部和虚部,形成共轭,此时实部为0System.out.println("X1=0-"+resetValue(X6).toString()+"i");System.out.println("X2=0+"+resetValue(X6).toString()+"i");}}//⑧ 若t=0,则方程有一个实根else if(t==0){double X3=(-1*b)/2*a;//根的计算System.out.println("方程有一个实根");//显示台输出System.out.println("方程的解为:"+resetValue(X3));//显示台输出方程的解}}//使用静态方法将定义的值由double类型转换为BigDecimal类型(声明)private static BigDecimal resetValue(double n) {// TODO 自动生成的方法存根BigDecimal bd=new BigDecimal(n);//将n的值赋给形参bd//返回的值保留两位小数,默认用四舍五入方式 (ROUND_HALF_UP表示遇5进1;setScale规定要保留的小数位数)return bd.setScale(2,BigDecimal.ROUND_HALF_UP);}}

###04. 运行结果

java基础 --- 求一元二次方程的根(分情况讨论)相关推荐

  1. java计算一元二次方程的根_java基础 --- 求一元二次方程的根(分情况讨论)-Go语言中文社区...

    package com.test;//创建一个test包 import java.util.Scanner;//导入java.util包中的Scanner类(使用此类可以方便的完成输入流的输入操作) ...

  2. 计算概论(A)/基础编程练习1(8题)/4:求一元二次方程的根

    1 #include<stdio.h> 2 #include<math.h> 3 int main() { 4 // 待解方程数目 5 int n; 6 scanf(" ...

  3. 7-157 求一元二次方程的根 (20 分)

    7-157 求一元二次方程的根 (20 分) 本题目要求一元二次方程ax2+bx+c=0的根,结果保留2位小数. 输入格式: 输入在一行中给出3个浮点系数a.b.c,中间用空格分开. 输出格式: 根据 ...

  4. 实验3-1 求一元二次方程的根 (20 分)

    实验3-1 求一元二次方程的根 (20 分) 本题目要求一元二次方程ax^2+bx+c=0的根,结果保留2位小数. 输入格式: 输入在一行中给出3个浮点系数a.b.c,中间用空格分开. 输出格式: 根 ...

  5. Java求一元二次方程的根

    求一元二次方程的根. [问题描述]编写程序,从键盘输入三个系数ax2+bx+c=0,计算方程的解并输出.需要考虑方程有虚根.方程有实根.方程是一元一次方程.没有根等.输出方程的解并保留6位小数. im ...

  6. 7-1 求一元二次方程的根 (20 分)

    7-1 求一元二次方程的根 (20 分) #include "stdafx.h" #include "math.h" int _tmain(int argc, ...

  7. C语言小白初试 7-1 求一元二次方程的根 (20 分)

    7-1 求一元二次方程的根 (20 分) 本题目要求一元二次方程的根,结果保留2位小数. 输入格式: 输入在一行中给出3个浮点系数a.b.c,中间用空格分开. 输出格式: 根据系数情况,输出不同结果: ...

  8. 【Java】求一元二次方程根

    [Java]求一元二次方程根 效果 代码 package com.cxl.demo19_Exception; //求一元二次方程根 import java.util.Arrays; import ja ...

  9. 例题(8.3) 求一元二次方程的根 (1051)

    题目 - 例题(8.3) 求一元二次方程的根 (1051)   来源 计算概论05 描述 利用公式  x1 = (-b + sqrt(b*b-4*a*c))/(2*a)  x2 = (-b - sqr ...

  10. C++第9周项目5参考——求一元二次方程的根

    课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目5:求一元二次方程的根]输入一元二次方程ax2+bx+c=0的各项系 ...

最新文章

  1. android 设置控件的透明度
  2. 提高数据中心空间使用率,助力数字新基建
  3. Rethinking算法实习生
  4. 20佳带给你灵感的优秀个人博客设计案例
  5. 前端使用正则表达式获取地址栏URL参数的值并将需要的参数值展示在页面
  6. linux:tr的用法
  7. ARM联合创始人:若被英伟达收购 将是一场灾难
  8. Kubernetes 开发流程中的三个关键步骤
  9. Laravel框架学习笔记(一)——phpstudy下的安装配置
  10. es6调用c语言sdk,ES6 关于对象的扩展-contracts-WinFrom控件库|.net开源控件库|HZHControls官网...
  11. 支持向量机c++实现
  12. 强命名防止dll被篡改
  13. OA+CRM+ERP
  14. 踩了阿里云播放器的一个坑
  15. Mobileye上演IPO生死时速
  16. 偏向锁、轻量级锁和重量级锁
  17. python使用jpype模块调用java的jar包来实现功能
  18. 浙大超厉害计算机硕士生导师
  19. html用div排版类型table,DIV排版和Table排版的区别
  20. 大一寒假训练:集训内容考试(二)【未完待续】

热门文章

  1. Android文字转语音播报
  2. 服务器系统事件6013,系统-事件ID:6013
  3. Pr学习笔记——添加字幕流
  4. java专业考独立本科_复旦大学-计算机网络(独立本科B080709)(停考过渡)
  5. mapped file has no Team ID and is not a platform binary (signed with custom identity or adhoc?
  6. 视频接口详细设计方案
  7. 普通人下场全球贸易,新一轮结构性机会浮出水面
  8. 传奇java手游_Java手机游戏神灯传奇代码JAVA游戏源码下载
  9. skiller v3 beta2 发布
  10. 微信小程序---购物车功能(选中与取消选中,全选与取消全选)