(12C Platinum) Cubic Equation

01122019, 09:27 AM
(This post was last modified: 01122019 09:55 AM by Gamo.)
Post: #1




(12C Platinum) Cubic Equation
ALG mode program solution of a Cubic Equation by Newton's Method.
f(x) = aX^3 + bX^2 + cX + d = 0 Successive approximations to a root are found by Xi+1 = 2aXi^3 + bXi^2 d / 3aXi^2 + 2bXi + c Guess X0  Remark: This program is use to solve for "REAL ROOT"  Procedure: f PRGM // Each new program or GTO 000 a [R/S] b [R/S] c [R/S] d [R/S] X0 [R/S] Display shown each successive approximation until root is found. If more than one Real Solutions enter another guess and [R/S] Maximum of 3 Real Root.  Example: x^3  4x^2 + 6x  24 = 0 f [PRGM] or [GTO] 000 1 [R/S] 4 [CHS] [R/S] 6 [R/S] 24 [CHS] [R/S] 20 [R/S] // My starting guess Display successive approximation search and stop when root is found. Answer Display 4 X=4  2x^3 + 3x^2 + 4x  5 = 0 f [PRGM] or [GTO] 000 2 [CHS] [R/S] 3 [R/S] 4 [R/S] 5 [CHS] [R/S] 10 [R/S] ...............display 1.8508 0 [R/S] .................display 1 5 [CHS] [R/S] ..........display 1.3508  Program: ALG Mode Code:
Gamo 

01122019, 01:39 PM
(This post was last modified: 11162019 10:28 PM by Albert Chan.)
Post: #2




RE: (12C Platinum) Cubic Equation
Hi Gamo
It might be better if iteration formula is *not* simplified: X(i+1)= Xi  (aXi^3 + bXi^2 + cXi + d) / (3aXi^2 + 2bXi + c) Simplified form may introduce subtraction cancellation error on the *last* iteration. BTW, Professor Kahan had a systemetic way to get a good guess X0: https://apps.dtic.mil/dtic/tr/fulltext/u2/a206859.pdf, page 5 Using your examples: f(x) = x^3  4x^2 + 6x  24 f(4/3) = 2.7475³, f'(4/3) = 2/3 ≥ 0 guess = 4/3  (1)(2.7475) = 4.0809 x = 4.0809 → 4.0023 → 4.0000 f(x) = 2x^3 + 3x^2 + 4x  5 f(1/2)/2 = 1.0772³, f'(1/2)/2 = 1.6583² < 0 guess = 1/2  1.324718 (1) max(1.0772, 1.6583) = 1.6968 x = 1.6968 → 1.4145 → 1.3536 → 1.3508 Update: if we need the other roots, Kahan's algorithm suggested this: Deflate cubic to quadratic: a X² + e X + f = 0 IF x³ > d/a THEN (f=d/x, e=(fc)/x) ELSE (e=ax+b, f=ex+c) 

02042019, 04:10 PM
(This post was last modified: 09022019 08:52 PM by Albert Chan.)
Post: #3




RE: (12C Platinum) Cubic Equation
Another way to get good guess is "look" at shape of curve
Example 1: x^3  4x^2 + 6x  24 = 0 x((x2)² + 2) = 24 ~ 2.88³ Any guess > 2 work. Say, guess = 3 X = 3 > 4.6667 > 4.1220 > 4.0051 > 4.0000 Example 2: 2x^3 + 3x^2 + 4x  5 = 0 x^3  1.5x^2  2x + 2.5 = 0 x((x0.75)²  2.5625) = 2.5 ~ 1.36³ If RHS is 0, we have roots 0.8508, 0, 2.3508, with LHS interval signs =  +  + Any guess < 0.8508 work. Say, guess = 1.5 X = 1.5 > 1.3649 > 1.3509 > 1.3508 Since LHS interval (0, 2.3508) also is negative, eqn might have 3 real roots. Indeed it does, 3 roots = 1.3508, 1.0000, 1.8508 

02042019, 08:13 PM
Post: #4




RE: (12C Platinum) Cubic Equation
Or then use the builtin polynomial solver with this program:
Code: 01 1 1 Examples: \(x^3  4x^2 + 6x  24 = 0\) Enter coefficients: 1 CF_{0} 4 CF_{j} 6 CF_{j} 24 CF_{j} Enter guess: 20 R/S 4.0000 \(2x^3 + 3x^2 + 4x  5 = 0\) Enter coefficients: 2 CF_{0} 3 CF_{j} 4 CF_{j} 5 CF_{j} Enter guess: 5 R/S 1.8508 Enter guess: 0.5 R/S 1.0000 The advantage is that the same program can be used for higher order polynomials. Cheers Thomas PS: Cf. HP12C’s Serendipitous Solver 

02052019, 04:24 AM
Post: #5




RE: (12C Platinum) Cubic Equation
Thanks Thomas Klemm
The build in Polynomial Solver work very good. On Original 12C work well but On 12C Platinum need to adjust guesses differently. Your second example with two real roots. First guess 5 R/S display 1 Second guess 0.5 R/S display 1 Remark: second guess needed to be 3 to get answer For 1.8508 Can the guess be negative integer? I try 1 and Error 5 shown. Gamo 

02052019, 06:09 AM
Post: #6




RE: (12C Platinum) Cubic Equation
(02052019 04:24 AM)Gamo Wrote: Can the guess be negative integer? It appears that you can't solve for negative roots. But you can just do a transformation: \(x \rightarrow x\) This transforms the equation to: \(2x^3 + 3x^2  4x  5 = 0\) Enter coefficients: 2 CF_{0} 3 CF_{j} 4 CF_{j} 5 CF_{j} Enter guess: 1 R/S 1.3508 And then transform the result back again to get the solution of the original equation: 1.3508 Cheers Thomas 

02052019, 06:20 AM
Post: #7




RE: (12C Platinum) Cubic Equation  
02052019, 10:24 PM
Post: #8




RE: (12C Platinum) Cubic Equation
(02042019 08:13 PM)Thomas Klemm Wrote: \(x^3  4x^2 + 6x  24 = 0\) Above entered coefficients order are good for root finding, and to evaluate polynomial. Example, with above entered polynomial, calculate f(X = 12.34) 1 Enter 12.34 [Δ%] [i] ; showed rate of 1134%, X = 1 + i NPV 0 PMT FV CHS ; showed 1320.018504 < f(X) Confirm with Horners rule: 12.34 Enter Enter Enter RCL 0 * RCL 1 + * RCL 2 + * RCL 3 + ; showed 1320.018504 Doing the same with reversed ordered entry is not as accurate: 24 CHS CF0 6 CFj 4 CHS CFj 1 CFj 1 Enter 12.34 [1/x] [Δ%] [i] ; showed rate of 91.89627229%, X = 1/(1 + i) NPV ; showed 1320.018507, +3 ULP error 

« Next Oldest  Next Newest »

User(s) browsing this thread: 1 Guest(s)