盛金公式入門


盛金公式

昨天做一道二分的題目,就是一元三次方程求三個根,然后從小到大輸出。

我發現好多大佬都是用的盛金公式或者牛頓迭代(聽說比二分快)。

所以我打算學習一下,對於盛金公式我只找了百度和作業幫的資料,還有一些學術網站的證明(肯定不會看%%%)

所以我打算簡單的介紹一下盛金公式。

假設一元三次方程: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等三角函數,就會很容易造成精度不足,所以請謹慎使用

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM