Jump to content

Talk:Chakravala method

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Shreevatsa (talk | contribs) at 20:25, 1 April 2015 (Improving the description of the method: concern). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

WikiProject iconMathematics Start‑class Low‑priority
WikiProject iconThis article is within the scope of WikiProject Mathematics, a collaborative effort to improve the coverage of mathematics on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
StartThis article has been rated as Start-class on Wikipedia's content assessment scale.
LowThis article has been rated as Low-priority on the project's priority scale.
WikiProject iconIndia Start‑class Low‑importance
WikiProject iconThis article is within the scope of WikiProject India, which aims to improve Wikipedia's coverage of India-related topics. If you would like to participate, please visit the project page.
StartThis article has been rated as Start-class on Wikipedia's content assessment scale.
LowThis article has been rated as Low-importance on the project's importance scale.
Note icon
This article was last assessed in May 2012.

Details

Would be great if someone could add some actual details about how this method works - especially as the article claims it is very simple. Gandalf61 08:16, 14 April 2006 (UTC)[reply]

I just added an "example", except that it's way too long, and I gave up before the answer was actually reached, because it's just so tedious. (Simple, but tedious.) If someone adds a proof that this method actually works, without any ad-hoc final steps or handwaving, I might add an implementation in C; but if we can't prove that it will terminate, there's not much point in pursuing that route. --Quuxplusone 22:48, 4 December 2006 (UTC)[reply]
It looks as if there is a little "bait and switch" between 61 and 67, as well as being unclear whether the 61 case was solved in the 7th, 9th or 12th centuries. --Rumping (talk) 15:03, 14 August 2008 (UTC)[reply]
I just finished the example, which required only two more iterations. In maths, persistence is your friend! Xanthoxyl (talk) 09:50, 29 January 2009 (UTC)[reply]

Nearest-square continued fraction

I'm an algorithmist, not a number-theoretician, but most NT's I've spoken to agree with me that the chakravala is easiest viewed (and thus implemented) as a special type of CF (continued fraction).

The classical CF method (aka "English method") of solving Pell's equation involves an RCF (Regular Continued Fraction). The chakravala corresponds (in CF terms) to the NSCF (Nearest-Square Continued Fraction). An Indian mathematician named A.A.K. Ayyangar noticed this in the 1930's, but his work remains relatively unknown (Selenius cites AAK's results but nevertheless manages to claim credit for himself for unravelling the "true nature of chakravala"). If you have an algorithm for RCF it is easily adapted to yield NSCF, and also to get another variant called NICF (Nearest-Integer CF). Both NSCF and NICF are optimal CF's (ie: are the shortest-length CF's possible).

A friend of mine hosts a Number Theory website and we've co-written some papers on this. I'll come back with links when I can find them. DeadHead52 (talk) 11:32, 12 September 2008 (UTC)[reply]

Confusing sentence

What does this mean? "The problems Brahmagupta, in 628, used the chakravala method to solve indeterminate quadratic equations, including the Pell equation" Shreevatsa (talk) 13:43, 29 January 2009 (UTC)[reply]

I've revised it. Xanthoxyl (talk) 15:01, 29 January 2009 (UTC)[reply]
Still doesn't make sense -- how could Brahmagupta use the chakravala method in 628 when the article says it's due to Jayadeva and Bhaskara in the 10th and 12th centuries? Shreevatsa (talk) 15:38, 29 January 2009 (UTC)[reply]
Because Brahmagupta came up with the rough idea but could not generalize it effectively. Xanthoxyl (talk) 01:47, 30 January 2009 (UTC)[reply]
Thanks, makes sense now :) I guess the article should either mention something like "the chakravala method has its roots in Brahmagupta's..." or say "...solved by Brahmagupta in 628 using the idea that led to the chakravala method were..." or something like that, to avoid the same confusion for others. Shreevatsa (talk) 02:06, 30 January 2009 (UTC)[reply]

The example

There is something wrong with the example. In the very first iteration, we have "and take t so that the absolute value of m^2 − 67 is minimized. The result is t = − 2, m = 7, m^2 − 67 = − 18." But if we had taken t = 3 instead, then m = -8 and m^2 - 67 = -3, whose abs value is lower than -18. 91.189.72.18 (talk) 18:43, 21 February 2009 (UTC)[reply]

Hmm, that seems right! The article needs to be fixed... How did you happen to catch it? Shreevatsa (talk) 19:41, 21 February 2009 (UTC)[reply]
I've added an explanation. Xanthoxyl (talk) 19:53, 21 February 2009 (UTC)[reply]
Makes sense now. Perhaps we should include a general description of the method before the examples, including details like this. Shreevatsa (talk) 20:03, 21 February 2009 (UTC)[reply]

There's a similar problem with the second iteration t = -2 would produce a smaller value. The first exception (new x would be 0) doesn't apply. Why is it discarded? —Preceding unsigned comment added by 64.213.65.34 (talk) 09:31, 1 April 2009 (UTC) http://cs.annauniv.edu/insight/insight/maths/algebra/indet/chakra.htm shows a method that actually works —Preceding unsigned comment added by 64.213.65.34 (talk) 10:28, 1 April 2009 (UTC)[reply]

It looks like t is also being chosen such that . This makes sense, since we want x and y to be increasing, so I've added a small change to point this out, but this should probably be explained better. It's not explicitly mentioned in the version you linked, either, but it seems it is also necessary that when following that version. Asztal (talk) 18:31, 4 May 2009 (UTC)[reply]

Question

How did Brahmagupta use this method to get the answer for N=61, because this method can be used to find other solutions for the equation Nx^2 + k = y^2 if and only if one set of value for x and y are known? The solution set for N=61 is the first set of solution using which other set of solutions can be found. So this simply means that Brahmagupta had used other method to solve. Can anyone explain? Ranjitr303 (talk) 05:26, 25 June 2010 (UTC)[reply]

No, the method can be used to solve Nx² + 1 = y² starting from a solution to Nx² + k = y² for any k. Thus for N=61, we have a solution (61)1² + 3 = 8², i.e. a solution x=1, y=8, k=3. Now iterate, etc. BTW, Brahmagupta did not solve the N=61 case; the article states it was solved by Jayadeva and Bhaskara II. Shreevatsa (talk) 21:24, 25 June 2010 (UTC)[reply]

The cases where k is up to sign 1,2,4

The sentences " Optionally, we can stop when k is ±1, ±2, or ±4, as Brahmagupta's approach gives a solution for those cases." and "but since the right-hand side is among ±1, ±2, ±4, we can also use Brahmagupta's observation directly." are a bit unclear to me. What exactly is the observation, and how does one proceed? Evilbu (talk) 13:39, 13 August 2012 (UTC)[reply]

Amendments to the Chakravala Method for Solving Pell's Equation

Amendments to the Chakravala Method for Solving Pell's Equation

Amendment 1 - Addition of Variable, f, to Vector


The current method uses a vector ( x_current, y_current, k_current) with k_current = x_current^2-Ny_current^2

I propose to use a new vector ( f_new, x_new, y_new, k_new) with:

f_new = gcd(x_current, N) x_new = x_current/gcd(x_current, N) y_new = y_current and k_new = f_new.x_new^2-N.y_new^2/f_new

The result of combining 2 vectors (f1, x1, y1, k1) and (f2, x2, y2, k2) is (1, f1x1f2x2+Ny1y2, f1x1y2+f2x2y1, f1f2k1k2)

Reduction of a vector is a 2-step process. The first step is the current reduction step ( f, x, y, k)->( f'=f, x'=x/gcd(x, y), y'=y/gcd(x, y), k'=k/gcd(x, y)^2) The second step is (f', x', y', k')->( f=f'.gcd( x', N/f'), x=x'/gcd( x', N/f'), y=y', k=k'/gcd( x', N/f')

The method for finding a starter vector and for finding a vector through the BIG M method now should search for the optimum by using all factors of N < sqrt(N) for f.

Sometimes after a combination and reduction f > N/f. To keep f < N/f it might be necessary to employ a transpose transformation. ( f, x, y, k) -> ( f_transpose = N/f, x_transpose = y, y_transpose = x, k_transpose = -k)

Amendment 2 - Direct Solutions When |k| is in {1, 2, 4}


The current method would require that when k satisfies the condition above that the vector combine with itself (or sometimes - when |k| = 4 - the first vector encountered with |k|=4) until k=1.

In the following cases the solution can be obtained directly:

k=1 and f=1 - x_solution = x , y_solution = y |k| in { 1, 2} and not ( f=1 and k=1 ) - x_solution = (2fx^2-k)/|k| , y_solution = 2xy/|k| |k| = 4 and f is even - x_solution = (fx^2-2sgn(k))^2/2-1 , y_solution = xy(fx^2-2sgn(k))/2 k=4 and f=1 - x_solution = x(x^2-3)/2 , y_solution = y(x^2-1)/2 |k| = 4 and f is odd and f > 1 - x_solution = fx^2(fx^2-3sgn(k))^2/2-1, y_solution = xy(fx^2-sgn(k))(fx^2-3sgn(k))/2

If N is of the form f^2.x^2 plus or minus 1, 2 or 4 times f then a solution can be obtained without needing to look for a starter.

Amendment 3 - Before Resorting to Using BIG M, Search Previously Encountered Vectors for a Vector With Which to Combine


With the current method, if |k| is not in { 1, 2, 4}, the only option is to employ the BIG M method to obtain a vector.

However, a previously encountered vector would be suitable for combining with the current vector, if:

1) it is not the current vector or its transpose; and |k_prev.k_current| equals

i) 64 or 128 ( and mod( f_prev.x_prev.y_curr+f_curr.x_curr.y_prev, 4)=0); or ii) 1, 2 or 4 times a prime squared; or iii) 1, 2 or 4 times prime_1^2.prime_2 ( and there is a second previously encountered vector where |k| = prime_2 )

In light of this, if no direct solution is possible, one of a pair (or triplet for iii) of candidate vectors that satisfy one of the above conditions is a better starter vector than the one with lowest |k|.

Working Examples


N=28 (example of direct solution with |k|=4 and f is even) Current Method


Starter find ( floor(sqrt(N)), 1, floor(sqrt(N))^2-N)

       and  ( ceil(sqrt(N)), 1, ceil(sqrt(N))^2-N)

( 5, 1, -3) ( 6, 1, 8) neither vector has |k| in { 1, 2, 4}, so choose vector with lower |k| ( 5, 1, -3) |k| not in { 1, 2, 4}, so use BIG M ( M, 1, M^2-N) (5M+28, 5+M, -3(M^2-28)) we want mod(y=M+5,|-3|)=0 and |-3(M^2-N)| to be minimised => M=4 ( 48, 9, 36) reduce ( 16, 3, 4) |k| = 4, so combine with self ( 16, 3, 4) ( 508, 96, 16) reduce ( 127, 24, 1) k = 1, so solve x_solution = x = 127 y_solution = y = 24

New Method


Starter find ( f, floor(sqrt(N)/f), 1, f.floor(sqrt(N)/f)^2-N/f)

       and  ( f, ceil(sqrt(N)/f), 1, f.ceil(sqrt(N)/f)^2-N/f)

for f = all factors of N < sqrt(N) Set f=1 ( 1, 5, 1, -3) ( 1, 6, 1, 8) ignored because gcd( x, N/f ) > 1 Set f=2 ( 2, 2, 1, -6) ignored because gcd( x, N/f ) > 1 ( 2, 3, 1, 4) |k| is in { 1, 2, 4} so we can stop and use this vector to solve the equation directly x_solution = (fx^2-2sgn(k))^2/2-1 = 127 y_solution = xy(fx^2-2sgn(k))/2 = 24

N=46 (example where a previous candidate satisfies a condition in Amendment 3) Current Method


Starter find ( floor(sqrt(N)), 1, floor(sqrt(N))^2-N)

       and  ( ceil(sqrt(N)), 1, ceil(sqrt(N))^2-N)

( 6, 1, -10) ( 7, 1, 3) neither vector has |k| in { 1, 2, 4}, so choose vector with lower |k| ( 7, 1, 3)|k| not in { 1, 2, 4}, so use BIG M ( M, 1, M^2-N) ( 7M+46, M+7, 3(M^2-N)) we want mod(y=M+7,|3|)=0 and |3(M^2-46)| to be minimised => M=8 ( 102, 15, 54) reduce ( 34, 5, 6)|k| not in { 1, 2, 4}, so use BIG M ( M, 1, M^2-N) ( 34M+230, 5M+34, 6(M^2-46)) we want mod(y=5M+34,|6|)=0 and |6(M^2-46)| to be minimised => M=4 ( 34M+230, 5M+34, 6(M^2-46)) ( 366, 54, -180) ( 61, 9, -5)|k| not in { 1, 2, 4}, so use BIG M ( M, 1, M^2-N) ( 61M+414, 9M+61, -5(M^2-46)) we want mod(y=9M+61,|-5|)=0 and |-5(M^2-46)| to be minimised => M=6 — Preceding unsigned comment added by 203.13.3.89 (talk) 08:48, 5 September 2014 (UTC)[reply]

Improving the description of the method

I think that the decription of the method can be made more clear and compact. For example, the paragraph starting with In the general method, ... can be changed to the following:

The chakravala method takes as an input a non-square number and some solution for that such that . In every iteration, is composed with some trivial solution triple . For appropriate , the composition can be scaled down by applying Bhaskara's lemma

The major additions and modifications are:

  • "N cannot be a square", otherwise can get zero.
  • "for appropriate m the composition can be scaled down". As the decription mentions below, must be divisible by k for the scaling to work.
  • the solution triple , is now refered to as a "composition". This is to avoid repeating the phrase "solution triple", and show that it is an intermediate result.

In the next paragraph it can be mentioned that the m that minimizes is unique, but this is not very important. Nxavar (talk) 08:23, 1 April 2015 (UTC)[reply]

I think we should be careful about remaining true to the historical sources, and not imposing our own understanding on it. Different authors had slightly varying methods, and it would be better to talk of how they used it, rather than projecting modern terminology onto it. (For example they'd never say "we use Bhaskara's lemma here" -- they had a procedure, and now (with our Greek-inspired axiomatic-deductive conception of mathematics) we can justify the steps and make it seem as if the steps follow logically from other known facts, but in truth probably the steps came first (with some understanding and justification no doubt) and a formal justification later. So that is my concern. Shreevatsa (talk) 20:25, 1 April 2015 (UTC)[reply]