HP50g simplifing a root
|
10-09-2020, 05:21 PM
(This post was last modified: 10-11-2020 11:32 AM by Albert Chan.)
Post: #21
|
|||
|
|||
RE: HP50g simplifing a root
I was being stupid. Why solve cubic equation for a
This is the way to get cube roots simplified: \(\sqrt[3]{A ± \sqrt{R}} = a ± \sqrt{r} \quad ⇒ \quad a = \large\frac{\sqrt[3]{A+\sqrt{R}} \;+\; \sqrt[3]{A-\sqrt{R}}}{2} \) Round a to closest halves, get r, and double check if it round-trip back to (A, R) Code: function simp_cbrt4(A,B,k) -- simplify cbrt(A + B * sqrt(k)) lua> simp_cbrt4(1859814842094, -59687820010, 415) 11589 -145 415 lua> simp_cbrt4(300940299,103940300,101) 99 100 101 lua> simp_cbrt(180, 23, 157) -- (a,b) can be halves 1.5 0.5 157 lua> simp_cbrt4(-36, 20, -7) -- work with complex roots too. 3 1 -7 lua> simp_cbrt4(81,30,-3) -- this is simplest, see comment from previous post. 4.5 0.5 -3 |
|||
10-10-2020, 03:58 PM
Post: #22
|
|||
|
|||
RE: HP50g simplifing a root
(10-09-2020 05:21 PM)Albert Chan Wrote: \(\sqrt[3]{A ± \sqrt{R}} = a ± \sqrt{r} \quad ⇒ \quad a = \large\frac{\sqrt[3]{A+\sqrt{R}} Slightly off topics. I was curious how to calculate a accurately (assumed R > 0) Since cube root is odd function, we pull out the sign. a = sign(A)/2 * (³√(|A|+√R) + ³√(|A|-√R)) Last term can be rewritten as ³√(A²-R) / ³√(|A|+√R) Let c = ³√(A²-R), d = ³√(|A|+√R)², we have: a = sign(A)/2 * (d + c) / √d Since both c, d are cube roots, we try identity c³ + d³ = (c + d) (c² - c d + d²) c³ + d³ = (A² - R) + (A² + R + 2|A|√R) = |2A| * (|A|+√R) = |2A| * d√d Substitute back in, many terms get cancelled, a = A / (c²/d - c + d) If ³√(A ± √R) can be simplified, c turns to integer (we had shown this earlier). In fact, the whole denominator turns to integer = a² + 3r = 4a² - 3c Code: function calc_a(A,R) lua> function test_a(A,R) : local q = sqrt(R) : return calc_a(A,R), (cbrt(A+q) + cbrt(A-q))/2 : end lua> lua> test_a(26, 15^2 * 3) 2 1.9999999999999982 lua> test_a(9416, 4256^2 * 5) 11 11.000000000000005 lua> test_a(300940299,103940300^2 * 101) 99 99.00000000000006 |
|||
10-10-2020, 04:49 PM
Post: #23
|
|||
|
|||
RE: HP50g simplifing a root
(10-10-2020 03:58 PM)Albert Chan Wrote: Substitute back in, many terms get cancelled, a = A / (c²/d - c + d) Proof is trivial: if ³√(A ± √R) = a ± √r, then c = ³√(A² - R) = a² - r d = ³√(|A|+√R)² = (|a|+√r)² c²/d + d - c = (|a|-√r)² + (|a|+√r)² - c = (2a² + 2r) - (a² - r) = a² + 3r |
|||
10-11-2020, 06:28 PM
(This post was last modified: 10-12-2020 05:19 AM by Albert Chan.)
Post: #24
|
|||
|
|||
RE: HP50g simplifing a root
(10-09-2020 02:31 PM)Albert Chan Wrote: Lets rearrange the cubic to match form x³ + 3px - 2q = 0 Instead of cubic discriminant, we can show this with more familiar quadratic discriminant. Let f(x) = 4x³ - 3*c*x - A, so that f(a) = 0 f(x) = 4 * (x-a) * (x² + a*x + (a² - 3*c/4)) Quadratic discriminant = a² - 4*(a² - 3*c/4) = -3*(a² - c) = -3*r → if r < 0 (due to R < 0), f got 3 real roots. We can solve the quadratics, but unnecessary. If we have 1 solution, where (a ± √r)³ = A ± √R, we can get the other 2. (a ± √r)³ = ((a ± √r) × w)³ = ((a ± √r) / w)³, where w = (-1)^(2/3) Example, simplify ³√(36 + 20i√7) >>> from mpmath import * >>> A, B, k = 36, 20, -7 >>> z = A + B*sqrt(k) >>> q = cbrt(z); print q (3.79128784747792 + 1.27520055582102j) >>> c = cbrt(A*A-B*B*k); print c 16.0 q looks hopeless to simplify, but c is integer, thus possible. Perhaps the "nice" root is not the principle root ? >>> w = exp(2j/3*pi) >>> print q*w, q/w (-3.0 + 2.64575131106459j) (-0.791287847477919 - 3.92095186688561j) >>> a = -3 >>> f = lambda x: 4*x**3 - 3*c*x - A >>> print f(a) 0.0 >>> print a, (A/a - a*a)/3 -3 -7.0 We have ³√(36 + 20i√7) = (-3 + i√7) / (-1)^(2/3) However, converted to form a ± √r, expression look messier than original ³√(A + √R) |
|||
10-12-2020, 03:17 AM
(This post was last modified: 10-13-2020 12:08 PM by Albert Chan.)
Post: #25
|
|||
|
|||
RE: HP50g simplifing a root
(10-11-2020 06:28 PM)Albert Chan Wrote: Example, simplify ³√(36 + 20i√7) Here is a novel way to solve for r instead, then get a. (Note: b can be halves, just like a) R/r = (B/b)² = (3c + 4r)² = integer, where r = b²k For this case, we hit the jackpot. If b=±1, 3c+4r = 3c+4k = B r = k = -7 a = A / (c+4r) = 36/ (16-28) = -3 3*arg(a±√r) = 3*atan2(±√7, -3) ≈ ±2.3098 pi We need to match above angle to arg(A+√R), which is on the first quadrant. +2.3098 pi - 2 pi = 0.3098 pi matches. ³√(36 + 20i√7) = (-3 + i√7) / (-1)^(2/3) This is just for fun. No need to solve the cubics. Directly calculate ³√(A+√R) (previous post) is preferred. Comment: Solving for b instead, we can take square root of both side B/b = 3c + 4r = 3c + 4kb² = integer This removed the ambiguity of b = ±1 to b = B/(3c + 4kb²) = 1 Above example need to match angles anyway, so I skipped this. |
|||
10-12-2020, 08:49 PM
Post: #26
|
|||
|
|||
RE: HP50g simplifing a root
Hello Albert,
I'm really stunnig about your investigations in this topic. Wow, in future I should be more careful in arising such topics! ;-) |
|||
10-12-2020, 10:54 PM
Post: #27
|
|||
|
|||
RE: HP50g simplifing a root
(10-09-2020 02:31 PM)Albert Chan Wrote: Lets rearrange the cubic to match form x³ + 3px - 2q = 0 I just realized my direct calculation for a is really using Cardano's formula a = ³√(q + √Δ) + ³√(q - √Δ) = ³√((A/8) + √(R/64)) + ³√((A/8) - √(R/64)) = (³√(A+√R) + ³√(A-√R)) / 2 |
|||
10-12-2020, 11:45 PM
(This post was last modified: 10-13-2020 12:02 AM by CMarangon.)
Post: #28
|
|||
|
|||
RE: HP50g simplifing a root
Hello!
Well, I conclude that HP50 does not have the formulas below, into memory. Maybe, it can be included, in next ROM update. Formula: (A ± B⋅√k)^(1/3) = a ± b⋅√k See also post #22, from Albert Chan, above. Carlos (BR) (10-09-2020 02:31 PM)Albert Chan Wrote:(10-09-2020 12:20 AM)Albert Chan Wrote: Unfortunately, our divisors based cube root simplify routines were flawed ! Carlos - Brazil Time Zone: GMT -3 http://area48.com |
|||
10-13-2020, 06:30 AM
Post: #29
|
|||
|
|||
RE: HP50g simplifing a root
Hello Albert,
Quote:a = ³√(q + √Δ) + ³√(q - √Δ) This was the origin of my thoughts for simplyfing, because I construct examples to test cardanos formular i keyed in my HP50g and I got that kind of "garbage" for simple solutions i. e. 1 minus root of two. So my question arises, why my calc cannot simplify this...the rest is history in nearly 30 posts... |
|||
10-13-2020, 06:36 AM
Post: #30
|
|||
|
|||
RE: HP50g simplifing a root
Hello CMaragon,
don't wait for a rom update, I'm feared you don't live long enough, because the HP50g is no longer produced and so the last rom version is 2.15. It's a pity, but for HP calc department is "prime time". |
|||
10-13-2020, 06:46 AM
Post: #31
|
|||
|
|||
RE: HP50g simplifing a root
(10-12-2020 11:45 PM)CMarangon Wrote: Well, I conclude that HP50 does not have the formulas below, into memory. Sadly the 50g was discontinued 5 years ago. There will be no ROM update There are only 10 types of people in this world. Those who understand binary and those who don't. |
|||
10-24-2020, 02:19 PM
Post: #32
|
|||
|
|||
RE: HP50g simplifing a root
(10-11-2020 06:28 PM)Albert Chan Wrote: We have ³√(36 + 20i√7) = (-3 + i√7) / (-1)^(2/3) Mathematica gives many "simplifed" forms, here are 2 of them. (-3+i√7) * (-1-i√3)/2 = (√21+3)/2 + i/2*(3√3-√7) = (√21+3)/2 + i/2*√(34-6√21) I was curious, given √(34-6√21), how to "simplify" to (3√3-√7) ? (10-09-2020 05:21 PM)Albert Chan Wrote: \(\sqrt[3]{A ± \sqrt{R}} = a ± \sqrt{r} \quad ⇒ \quad a = \large\frac{\sqrt[3]{A+\sqrt{R}} We can use the same trick (if LHS is real, for both ±) \( \sqrt{A ± B\sqrt{c d}} = a\sqrt{c} \,±\, b\sqrt{d} \quad ⇒ \quad a\sqrt{c} = \large\frac{\sqrt{A+B\sqrt{c d}}\;+\;\sqrt{A-B\sqrt{c d}}}{2} \) lua> A, B, k = 34, -6, 21 lua> C = B * sqrt(k) lua> mean = (sqrt(A+C) + sqrt(A-C))/2 lua> mean^2 27 27 = 3*3*3 = a*a*c. We try a=c=3, d=7, so just solve for b: (3√3 + b√7)² = (27+7b²) + 6b√21 = 34 - 6√21 We have b = -1, thus √(34 - 6√21) = 3√3 - √7 It is nice that XCas do this automatically XCas> simplify(√(34-6*√(21))) → 3√3 - √7 |
|||
« Next Oldest | Next Newest »
|
User(s) browsing this thread: 4 Guest(s)