37.2 怎么解一元三次方程?

用“盛金公式”求解:

----------------------------------------------main.cpp ------------------------------------------

main.cpp

float* roots_cubic_equation(float a, float b, float c, float d) {//the first element is the number of the real roots, and other elements are the real roots.//Shengjin's formulafloat *roots = new float[4];if (a == 0) {roots = roots_quadratic_equation(b, c, d);}else {float A = b*b - 3*a*c;float B = b*c - 9*a*d;float C = c*c - 3*b*d;float deita = B*B - 4*A*C;if ((A == B) && (A == 0)) {//the three roots are the sameif (a != 0) {roots[1] = -b/(3*a);}else {if (b != 0) {roots[1] = -c/b;}else {if (c != 0) {roots[1] = -3*d/c;}}}roots[2] = roots[1];roots[3] = roots[1];roots[0] = 3;}else if (deita > 0) {//only one real rootfloat y1 = A*b + (3*a/2)*(-B + sqrt(deita));float y2 = A*b + (3*a/2)*(-B - sqrt(deita));float pow_y1, pow_y2;if (y1 < 0) {//for pow(a,b), when b is not int, a should not be negative.pow_y1 = - pow(-y1, 1.0/3.0);}else {pow_y1 = pow(y1, 1.0/3.0);}if (y2 < 0) {pow_y2 = - pow(-y2, 1.0/3.0);}else {pow_y2 = pow(y2, 1.0/3.0);}roots[1] = (-b - pow_y1 - pow_y2) / (3*a);roots[0] = 1;}else if (deita == 0) {//three real roots and two of them are the samefloat K = B/A;roots[1] = -b/a + K;roots[2] = -K/2;roots[3] = -K/2;roots[0] = 3;}else if (deita < 0) {//three different real rootsfloat theta = acos((2*A*b-3*a*B) / (2*pow(A, 1.5)));roots[1] = (-b - 2*sqrt(A)*cos(theta/3)) / (3*a);roots[2] = (-b + sqrt(A) * (cos(theta/3) + sqrt(3)*sin(theta/3))) / (3*a);roots[3] = (-b + sqrt(A) * (cos(theta/3) - sqrt(3)*sin(theta/3))) / (3*a);roots[0] = 3;}}return roots;
}int main(){float *r;r = roots_cubic_equation(1.0, -6.0, 11.0, -6.0);//1,2,3
//        r = roots_cubic_equation(1.0, 0.0, -3.0, 2.0);//1,1,-2
//        r = roots_cubic_equation(1.0, 4.0, 5.0, 2.0); //-1,-1,-2
//        r = roots_cubic_equation(1.0, -3.0, 3.0, -1.0);for (int i=0; i<(r[0]+1); i++) {std::cout << "r[" << i << "]=" << r[i] << endl;}}

问题三十七:C++怎么解一元四次方程?(2)——怎么解一元三次方程相关推荐

  1. 问题三十七:C++怎么解一元四次方程?(3)——怎么解一元四次方程

    37.3 怎么解一元四次方程? 用"费拉里"方法求解:将四次方程化为两个二次方程,然后求解二次方程. --------------------------------------- ...

  2. 问题四十:对ray tracing圆环图形进行debug(2)——C++,用“笛卡尔”方法解一元四次方程

    第七步:用"笛卡尔"方法解一元四次方程 "笛卡尔"方法也就是"待定系数法" 通过"式子八"可以解出s(可能有0到3个实根 ...

  3. Fortran解一元四次方程程序

    一元四次方程, 沈天珩求根公式,  具体公式 详见百科链接: 程序由main.f90和输入文件abcde.para构成,abcde分别为 程序的结果将给出abcde取值,参数符合天珩求根公式第几定理, ...

  4. logit方程怎么写_一元四次方程的常规解法

    第一次写知乎文章还是有点小激动的,我不熟悉公式编辑,就用我的卑微MathType好了 这篇文章初中生也可以听懂的! 正文开始 我们考虑标准一元四次方程 这里a≠0,我们第一个想到的应该是配方法,我们令 ...

  5. 一元三次方程重根判别式_一元四次方程的常规解法

    第一次写知乎文章还是有点小激动的,我不熟悉公式编辑,就用我的卑微MathType好了 这篇文章初中生也可以听懂的! 正文开始 我们考虑标准一元四次方程 这里a≠0,我们第一个想到的应该是配方法,我们令 ...

  6. Fast Planner——KinodynamicAstar::estimateHeuristic()中一元三次方程和一元四次方程求解

    Fast Planner的代码中,前端路径搜索时需要评估路径的启发成本(函数KinodynamicAstar::estimateHeuristic),涉及到一元四次方程和一元三次方程的求解计算.Kin ...

  7. OpenCV学习笔记(三十六)——Kalman滤波做运动目标跟踪 OpenCV学习笔记(三十七)——实用函数、系统函数、宏core OpenCV学习笔记(三十八)——显示当前FPS OpenC

    OpenCV学习笔记(三十六)--Kalman滤波做运动目标跟踪 kalman滤波大家都很熟悉,其基本思想就是先不考虑输入信号和观测噪声的影响,得到状态变量和输出信号的估计值,再用输出信号的估计误差加 ...

  8. [Python从零到壹] 三十七.图像处理基础篇之图像融合处理和ROI区域绘制

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  9. 【正点原子Linux连载】第三十七章 Linux内核移植 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  10. python怎么算一元二次方程_python如何解一元二次方程

    本文收集整理关于python如何解一元二次方程的相关议题,使用内容导航快速到达. 内容导航: Q1:python 使用try except解一元二次方程问题 123456789101112131415 ...

最新文章

  1. 让android的TextView可以滚动
  2. 五个最不流行的桌面环境
  3. Pytho学习笔记:电子邮件1
  4. 全民大乐斗场服务器状态,看到最近很多人问重修,**说一下这个问题
  5. 微信公共平台接口开发--Java实现
  6. html模板安装到织梦,织梦网站安装教程 织梦模板通用安装图文教程
  7. 【Linux 线程】常用线程函数复习《三》
  8. android4.0 锁屏实现(转)
  9. NOR Flash擦写和原理分析 (二)
  10. 微服务的4个设计原则和19个解决方案
  11. 闪光css,css实现图片闪光效果
  12. VMware安装win7系统
  13. 拼音分词器_自动补全
  14. 客户价值分析(聚类)
  15. 3G与2G网络融合中组网策略(转)
  16. 揭秘虚拟化环境高可靠存储的构架和配置
  17. 利用最小二乘法进行参数估计
  18. 电信增值短信平台模块清单(100万级)
  19. 若依微服务版部署到IDEA(超详细,小白看了也能会)
  20. C#二维码条码生成存入文本加缓存

热门文章

  1. 国内搜索大哥iOS面试题
  2. 读书笔记 — Java高并发程序设计 — 第二章 — 基础(上)
  3. #iOS问题记录# 关于UITableViewcel的分割线去掉问题
  4. File Manipulation
  5. 从用户的角度看解决方案
  6. Log4net创建日志及简单扩展
  7. 【重点 递归 动态规划 正则表达式匹配】LeetCode 10. Regular Expression Matching
  8. 【机器学习】算法调参
  9. 浮点数运算中的舍入问题
  10. [转]『TensorFlow』读书笔记_TFRecord学习