• 盛金公式入门


    盛金公式

    昨天做一道二分的题目,就是一元三次方程求三个根,然后从小到大输出。

    我发现好多大佬都是用的盛金公式或者牛顿迭代(听说比二分快)。

    所以我打算学习一下,对于盛金公式我只找了百度和作业帮的资料,还有一些学术网站的证明(肯定不会看%%%)

    所以我打算简单的介绍一下盛金公式。

    假设一元三次方程:aX3+bX2+cX+d=0

    首先和一元二次方程类似,他也有重根判别式:
    A=b*b-3*a*c;

    B=b*c-9*a*d;

    C=c*c-3*b*d;

    derta=B2-4*A*C;//总判别式

    当A=B=0时:

    盛金公式1:X1=X2=X3=-b/(3*a)=-c/b=-3d/c

    1

    当derta>0时:

    盛金公式2:Y1,2=A*b+3*a*(-B±sqrt(B2-4*AC))/2;   i2=1

           X1=(-b-(pow(Y1,1/3)+pow(Y2),1/3))/(3*a);

           X2,3=(-b+(pow(Y1,1/3)+pow(Y2,1/3))±sqrt(3)*(pow(Y1,1/3)-pow(Y2,1/3)*i/2)/2)/(3*a);

    1

    当derta=0时:

    盛金公式3:K=B/A;(A!=0)

           X1=-b/a+K;

           X2=X3=-K/2;

    3

    当derta<0时:

    盛金公式4:T=(2*A*b-3*a*B)/(2*sqrt(A*A*A))  θ=arccos(T)//C语言中为acos(T)  (A>0&&-1<T<1)

              X1=(-b-2*sqrt(A)*cos(θ/3))/(3*a);

          X2,3=(-b+sqrt(A)*(cos(θ/3)±sqrt(3)sin(θ/3)))/(3*a);

    4

    然后我们就能根据不同的要求求出一元三次的三个解。

    是不是觉得盛金公式法有点像一元二次方程的万能公式法。

    具体的练习:https://www.luogu.com.cn/problem/P1024    //就是一道经典的盛金公式求解题目(但是好像暴力能过,因为精度很小)

    题解:https://www.cnblogs.com/Mangata/p/13520980.html

    但是盛金公式求解有个问题(在计算机上),因为盛金公式可能会用到sin,cos等三角函数,就会很容易造成精度不足,所以请谨慎使用

    能二分尽量二分(毕竟精度能自己控制=_=)。

  • 相关阅读:
    什么是内部类
    "=="和equals方法究竟有什么区别?
    SWFUpload乱码问题的解决
    xStream转换XML、JSON
    Java文件下载
    笔记摘录
    Javascript 函数传参问题
    JQUERY伸缩导航
    ruby关于flip-flop理解上一个注意点
    ruby 使用Struct场景
  • 原文地址:https://www.cnblogs.com/Mangata/p/13518617.html
Copyright © 2020-2023  润新知