求解一元三次方程的方法java实现
来源:互联网 发布:吉他定音器软件 编辑:程序博客网 时间:2024/06/05 07:17
public double findFS(double a, double b, double c, double d) {
double FS = 0;
double A, B, C, delta;
double x1, x2, x3;
A = b * b - 3 * a * c;
B = b * c - 9 * a * d;
C = c * c - 3 * b * d;
delta = B * B - 4 * A * C;
if (A == 0 && B == 0) {
x1 = x2 = x3 = -c / b;
}
/*
* Shengjin’s Distinguishing Means ①:当A=B=0时,方程有一个三重实根;
* ②:当Δ=B^2-4AC>0时,方程有一个实根和一对共轭虚根; ③:当Δ=B^2-4AC=0时,方程有三个实根,其中有一个两重根;
* ④:当Δ=B^2-4AC<0时,方程有三个不相等的实根。
*/
if (delta > 0) {
double y1 = A * b + 3 * a * (-B + Math.pow(B * B - 4 * A * C, 0.5))
* 0.5;
double y2 = A * b + 3 * a * (-B - Math.pow(B * B - 4 * A * C, 0.5))
* 0.5;
x1 = (-b - (Math.pow(y1, 1 / 3.0) + Math.pow(y2, 1 / 3.0)))
/ (3 * a);
x2 = x3 = -999999999;
} else if (delta == 0) {
double K = B / A;
x1 = -b / a + K;
x2 = x3 = -K * 0.5;
} else {
double T = (2 * A * b - 3 * a * B) / (2 * Math.pow(A, 3 / 2.0));
double temp = Math.acos(T);
x1 = (-b - 2 * (2 * Math.pow(Math.cos(temp / 3.0), 0.5))) / (3 * a);
x2 = (-b + Math.pow(A, 0.5) * Math.cos(temp / 3.0) + Math.pow(3,
0.5)
* Math.sin(temp / 3.0))
/ (3 * a);
x3 = (-b + Math.pow(A, 0.5) * Math.cos(temp / 3.0) - Math.pow(3,
0.5)
* Math.sin(temp / 3.0))
/ (3 * a);
}
FS = maxNum(x1, x2, x3);
return FS;
}
- 求解一元三次方程的方法java实现
- 一元三次方程的求解
- 一元三次方程的求解
- 一元三次方程求解
- 一元三次方程求解
- 一元三次方程求解
- 一元三次方程求解
- 一元三次方程求解
- 一元三次方程求解
- 一元三次方程求解
- 一元三次方程求解
- 一元三次方程求解
- 一元三次方程求解
- 一元三次方程求解
- 一元三次方程求解
- 一元三次方程求解
- 一元三次方程求解c++实现
- 一元三次方程的求解问题
- 几个排序算法的java实现
- hibernate save和persist的区别
- Android开发之fedora13下编译Android源码
- CDN详解
- CustomValidator验证控件 的使用方法
- 求解一元三次方程的方法java实现
- Remember ahead and afterward matrimony a matron have to reside away from the 10 men
- 性能优化
- hundred Chinese {newspaper} site
- 程序架构与编码规范
- zoj 1671 Walking Ant
- 关于php中的自动加载类
- linux学习笔记(一) linux下安装jdk、tomcat
- Request获取url信息的各种方法比较