package ClassWork;
import java.util.Scanner;
/**
* 【例3】一元三次方程求解
* 有形如:ax3+bx2+cx+d=0这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值≥1。
* 要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。
* 提示:记方程f(x)=0,若存在2个数x1和x2,且x1<x2,f(x1)*f(x2)<0,则在(x1,x2)之间一定有一个根。
* 输入:a,b,c,d 输出:三个实根(根与根之间留有空格)
* 【输入输出样例】
* 输入:1 -5 -4 20 输出:-2.00 2.00 5.00
* @author Ravanla
* @create 2019-04-26-19:12
*/
public class SolvingEquations {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入a, b, c, d(ax3+bx2+cx+d=0)");
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int d = sc.nextInt();
System.out.println("-------------枚举法-------------");
se01(a, b, c, d);
System.out.println("-------------分治法-------------");
se02(a, b, c, d);
}
// 分治法
private static void se02(int a, int b, int c, int d) {
int account = 0;
//没隔20为一个区间
for(int x = -100; x < 100; x += 1){
int x1 = x;
int x2 = x + 1;
if(f(x, a, b, c, d) == 0) System.out.println(x + " ");
else{
if(f(x1, a, b, c, d) * f(x2, a, b, c, d) < 0){
while (x2 - x1 >= 0.001) {
int mid = (x2 + x1)/2;
if(f(x1, a, b, c, d) * f(mid, a, b, c, d) <= 0) x2 = mid;
else x1 = mid;
}
System.out.println((double)x1);
}
}
// int x1 = x;
// int x2 = x + 1;
// if (f(x1, a, b, c, d) * f(x2, a, b, c, d) < 0) {
// //采用分治法
int left = x;
int right = x + 20;
// int mid;
// //二分法
// while(x1 <= x2){
// mid = (x1 + x2)/2;
// //如果中值小于0 左区间的数都小于0,让中值直接从左区间开始再算就好了
// if(f(mid, a, b, c, d) <= 0) x1 = mid + 1;
// //如果中值大于0 右区间的数都大于0,让中值直接从右区间开始再算就好了
// else x2 = mid - 1;
// }
// //找出三个根既可以结束搜索了
// if (++account == 3) {
// break;
// }
// //输出根
// System.out.print(x2 + " ");
// }
// if(f(x, a, b, c, d) == 0){
// System.out.println(x + " ");
// }
}
}
// 函数
public static double f(double x, double a, double b, double c, double d){
return x*x*x*a + b*x*x + c*x + d;
}
// 枚举法
public static void se01(double a, double b, double c, double d){
int account = 0;
for(int x = -100; x < 100; x++){
double x1 = (x - 0.05)/100;
double x2 = (x + 0.05)/100;
if(f(x1, a, b, c, d) * f(x2, a, b, c, d) < 0 || f(x, a, b, c, d) == 0){
System.out.print((double)x + " ");
//找出三个根既可以结束搜索了
if(++account == 3){
break;
}
}
}
}
}
原网址: 访问
创建于: 2023-12-05 18:18:29
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论