ChatGPT is quite impressive! For those who do not have access to ChatGPT
and/or Python, can use it with SageCell at
https://tssfl.com/viewtopic.php?t=6651

SageCell supports countless Python libraries including SymPy.

I tested ChatGPT with a number of examples, it tries solve even complex
maths problems, e.g., :

Example 1:

Find a 4x4 matrix which is a Jordan canonical form of the matrix A =
matrix([[5, -1, 0, 0],[9, -1, 0, 0],[0, 0, 7, -2], [0, 0, 12, -3]]).

assistant:

To find the Jordan canonical form of a matrix, we need to find the
eigenvalues and eigenvectors, and then use them to construct the
Jordan blocks.

First, we find the eigenvalues of A by solving for the determinant of
(A - lambda*I), where I is the identity matrix:

|5 - lambda   -1           0           0          |
|9            -1 - lambda   0           0          |
|0             0           7 - lambda  -2          |
|0             0           12           -3 - lambda|

= (5 - lambda)(-1 - lambda)(7 - lambda)(-3 - lambda) - 9*(-1)*(7 - lambda)*(12)
= lambda^4 - 8*lambda^3 + 11*lambda^2 + 38*lambda - 360
= (lambda - 10)(lambda - 5)(lambda + 3)(lambda - 4)

Therefore, the eigenvalues are: lambda1 = 10, lambda2 = 5, lambda3 =
-3, lambda4 = 4.

Next, we find the eigenvectors corresponding to each eigenvalue. For
lambda1 = 10, we solve (A - 10*I)x = 0:

| -5   -1   0    0 |
|  9   -11  0    0 |
|  0   0   -3    -2 |
|  0   0   12   -13 |

By performing elementary row operations to reduce this matrix, we obtain:

| 1   0   0    1 |
|  0   1   0   3/2 |
|  0   0   1    2  |
|  0   0   0    0  |

So the eigenvector corresponding to lambda1 is x1 = [1, -3/2, -2, 1].

Similarly, for lambda2 = 5, we solve (A - 5*I)x = 0:

| 0   -1   0    0 |
| 9   -6  0    0 |
| 0   0   2   -2 |
| 0   0   12   -8 |

By performing elementary row operations to reduce this matrix, we obtain:

| 1  -3  0      0 |
|  0   0  1     -1 |
|  0   0  0      0 |
|  0   0  0      0 |

So the eigenvector corresponding to lambda2 is x2 = [3, 1, 0, 0].

For lambda3 = -3, we solve (A + 3*I)x = 0:

| 8   -1   0    0 |
|  9   -2   0    0 |
| 0   0   4   -2 |
| 0   0   12   -6 |

By performing elementary row operations to reduce this matrix, we obtain:

| 1  -1/2  0     0 |
|  0   0      1   -1/2 |
|  0   0      0     0    |
|  0   0      0     0    |

So the eigenvector corresponding to lambda3 is x3 = [1/2, 1, 1/2, 0].

Finally, for lambda4 = 4, we solve (A - 4*I)x = 0:

| 1   -1   0    0 |
| 9   -5   0    0 |
| 0   0   3   -2 |
| 0   0   12   -7 |

By performing elementary row operations to reduce this matrix, we obtain:

| 1  -1  0    0 |
|  0   0  1   -2/3 |
|  0   0  0    0    |
|  0   0  0    0    |

So the eigenvector corresponding to lambda4 is x4 = [1, 1/3, 0, 0].

We can now construct the Jordan canonical form of the matrix A by
arranging these eigenvectors in blocks, as follows:

J = [10  1   0   0 ]
        [0   10  0   0 ]
        [0   0   -3  1 ]
        [0   0   0   4 ]

This is the desired 4x4 Jordan canonical form of A.

Example 2:

Find an invertible 3x3 real matrix P which puts the matrix A =
matrix([[3,4,0],[-1, -3, -2],[1, 2, 1]]) into rational form.

assistant:

To put a matrix in rational form, we want to reduce it to row echelon
form and then perform row operations to get all leading coefficients
to be 1 and all other entries in the same columns to be 0. Here are
the steps to do it for matrix A:

Step 1: Choose the first element in the first row to be the pivot and
eliminate all entries in the column below it. To do this, subtract the
first row multiplied by (-1/3) from the second row, and add the first
row to the third row.

[3  4  0]
[0  1  2]
[4  6  1]

Step 2: Choose the second element in the second row to be the pivot
and eliminate all entries in the column below it. To do this, subtract
the second row multiplied by 2 from the third row.

[3  4  0]
[0  1  2]
[0 -2 -7]

Step 3: Choose the third element in the third row to be the pivot and
eliminate all entries in the column above it. To do this, add the
second row multiplied by 2 to the third row.

[3  4  0]
[0  1  2]
[0  0 -3]

Now we have the row echelon form of matrix A. To get it in rational
form, we can perform further row operations to get all leading
coefficients to be 1. We can achieve this by multiplying the third row
by -1/3.

[3  4  0]
[0  1  2]
[0  0  1]

Now we have the rational form of matrix A. To find the invertible
matrix P that puts A into this form, we need to keep track of the row
operations we performed.

First, we subtracted the first row multiplied by (-1/3) from the
second row. This is equivalent to multiplying by the matrix:

[1  0  0]
[-1/3  1  0]
[0  0  1]

Next, we added the first row to the third row. This is equivalent to
multiplying by the matrix:

[1  0  0]
[0  1  0]
[1  0  1]

Then, we subtracted the second row multiplied by 2 from the third row.
This is equivalent to multiplying by the matrix:

[1  0   0]
[0  1   0]
[0 -2   1]

Finally, we multiplied the third row by -1/3. This is equivalent to
multiplying by the matrix:

[1  0   0]
[0  1   0]
[0  0  -1/3]

To find P, we multiply these matrices in order:

P = [1  0   0] @ [-1/3  1  0] @ [1  0  0] @ [0  1  0] @ [0 -2  1] @ [1
 0  0] @ [0  1  0] @ [0  0  -1/3]

Simplifying this expression gives:

P = matrix([[-1/3, -8/3, -2/3],[1/3, 5/3, 2/3],[-4/3, -2/3, 1/3]])

We can check that matrix A can be transformed to its rational form by
multiplying it by P and verifying that the result is indeed the
rational form:

A_rational = P.inv() @ A @ P

Output:
A_rational = matrix([[1, 0, 0],[0, 1, 0],[0, 0, 1]])


Elimboto


On Wed, Mar 29, 2023 at 3:32 AM Aaron Meurer <asmeu...@gmail.com> wrote:

> If you don't have access to the ChatGPT beta, someone made a Streamlit app
> that does the same thing. You can give it a math problem and it uses
> ChatGPT to generate and run SymPy code to solve it
> https://mathgpt.streamlit.app/
>
> Aaron Meurer
>
> On Thu, Mar 23, 2023 at 3:28 PM Aaron Meurer <asmeu...@gmail.com> wrote:
>
>> Actually I didn't notice it but there's literally an example of ChatGPT
>> generating SymPy code and executing on
>> https://openai.com/blog/chatgpt-plugins (scroll down to where it says
>> "code interpreter"). It's their main example of calling out to Python.
>>
>> Aaron Meurer
>>
>> On Thu, Mar 23, 2023 at 2:42 PM Aaron Meurer <asmeu...@gmail.com> wrote:
>>
>>>
>>>
>>> On Thu, Mar 23, 2023 at 12:24 PM S.Y. Lee <sylee...@gmail.com> wrote:
>>>
>>>> Wolfram had recently announced the collaboration of chatGPT and wolfram
>>>> alpha
>>>> ChatGPT Gets Its “Wolfram Superpowers”!—Stephen Wolfram Writings
>>>> <https://writings.stephenwolfram.com/2023/03/chatgpt-gets-its-wolfram-superpowers/>
>>>
>>>
>>> I wouldn't call this a "collaboration". OpenAI is adding a plugin system
>>> to ChatGPT and Wolfram is one of the first plugins
>>> https://openai.com/blog/chatgpt-plugins.
>>>
>>> If you scroll down on that page, there is also a tool that lets it
>>> execute Python code. I don't know if it has access to SymPy, but it likely
>>> does, since it seems to have access to other popular libraries like pandas
>>> and matplotlib. If anyone has access to ChatGPT Plus, could you check?
>>>
>>>
>>>>
>>>> They start to use chatgpt to generate the Wolfram code.
>>>> And it is likely to help the issues with correctness about math or
>>>> science facts
>>>> because once it translates to the wolfram functions, and the wolfram
>>>> function runs without error, the answer is correct.
>>>>
>>>> However, the argument I'd give is that making a combination of code
>>>> with
>>>> *simplify, solve, integrate *are not still informative because even
>>>> though they do things logically correct,
>>>> they have problem that they can't inform people how to solve the
>>>> problems in details.
>>>>
>>>> So I'm thinking about an idea whether language models should really
>>>> generate a code that assembles the *rules* used in simplify, solve.
>>>> And then it can be more human readable (or can get more human readable
>>>> logic from it)
>>>> if it is like compose(solve_trig, simplify_cos, ...)
>>>> (in some pseudo sympy code)
>>>>
>>>
>>> A language model can do pretty much anything, so long as it's seen
>>> enough examples of it before.  You can often just give it examples of what
>>> you want in the prompt and it will figure it out.
>>>
>>> ChatGPT (and other LLMs) are basically just huge pattern matching
>>> machines. That's all they are, which is why they break down whenever they
>>> have to do actual logic or reason about something they haven't seen before.
>>> So I suspect they could be used quite successfully for symbolic pattern
>>> matching, especially when that pattern matching is "fuzzy", like trying to
>>> find the best heuristic function to apply to an expression.
>>>
>>> Aaron Meurer
>>>
>>>
>>>> On Saturday, December 17, 2022 at 5:47:39 PM UTC+9 smi...@gmail.com
>>>> wrote:
>>>>
>>>>> In reviewing a PR related to units, I found ChatGPT to get correct the
>>>>> idea that a foot is bigger than an inch, but it said that a volt is bigger
>>>>> than a statvolt (see quoted GPT response [here](
>>>>> https://github.com/sympy/sympy/pull/24325#issuecomment-1354343306)).
>>>>>
>>>>> /c
>>>>>
>>>>> On Thursday, December 15, 2022 at 1:58:33 PM UTC-6 Aaron Meurer wrote:
>>>>>
>>>>>> The trend with LLMs is much less structured. It doesn't use any
>>>>>> formalism. It just guesses the next character of the input based on
>>>>>> training on billions of examples.
>>>>>>
>>>>>> That's why I think that tools like SymPy that are more structured can
>>>>>> be useful. GPT can already write SymPy code pretty well, much better than
>>>>>> it can do the actual mathematics. It may be as simple as automatically
>>>>>> appending "and write SymPy code to verify this" to the end of a prompt
>>>>>> whenever it involves mathematics. This sort of approach has already been
>>>>>> proven to be able to solve university math problems (see
>>>>>> https://www.pnas.org/doi/pdf/10.1073/pnas.2123433119, where they
>>>>>> literally just take the input problem and prepend "use sympy" and the
>>>>>> neural network model does the rest).
>>>>>>
>>>>>> Aaron Meurer
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Thu, Dec 15, 2022 at 2:21 AM S.Y. Lee <syle...@gmail.com> wrote:
>>>>>>
>>>>>>> > My hope is that tools like SymPy can be used as oracles for tools
>>>>>>> like GPT to help them verify their mathematics.
>>>>>>>
>>>>>>> In the most general context, "correct mathematics" can also be
>>>>>>> considered some "grammar".
>>>>>>> So there should be some grammar between Type-0 grammar to Type-1
>>>>>>> grammar in Chomsky hierarchy
>>>>>>> <https://en.wikipedia.org/wiki/Chomsky_hierarchy>.
>>>>>>> In this context, a parser, or a parser with sympy oracle is the
>>>>>>> solution for such problem,
>>>>>>> such that any other ideas to solve such problem can be isomorphic to.
>>>>>>>
>>>>>>> However, building up such parser is off-direction for the researches
>>>>>>> of deep learning itself,
>>>>>>> because it would need a lot of efforts by experts, to interpret the
>>>>>>> sentence generated by GPT,
>>>>>>> and design a phrase structure grammar for it.
>>>>>>>
>>>>>>> I also thought about an idea that they can just tag arithmetics
>>>>>>> using SKI combinator calculus
>>>>>>> <https://en.wikipedia.org/wiki/SKI_combinator_calculus>.
>>>>>>> In this way, there is no wrong arithmetics for every random sequence
>>>>>>> of alphabets.
>>>>>>>
>>>>>>> However, I'm not sure that if this idea is already refuted by such
>>>>>>> contemporary researchers
>>>>>>> because it should be pretty much well-known.
>>>>>>>
>>>>>>> On Thursday, December 15, 2022 at 12:45:53 AM UTC+2
>>>>>>> asme...@gmail.com wrote:
>>>>>>>
>>>>>>>> I've seen many examples on Twitter and elsewhere of chatgpt doing
>>>>>>>> terribly on actual mathematics. I instead asked it to "Find the extreme
>>>>>>>> values of the function x^3 + 5x^2 + 3x - 9". It got the first part 
>>>>>>>> with the
>>>>>>>> derivative and the quadratic equation correct, but then did faulty
>>>>>>>> arithmetic when plugging the values back into the expression (the 
>>>>>>>> correct
>>>>>>>> values are 0 and -256/27). It makes a sign error and also gets the 
>>>>>>>> addition
>>>>>>>> wrong even with the wrong sign.
>>>>>>>>
>>>>>>>> My hope is that tools like SymPy can be used as oracles for tools
>>>>>>>> like GPT to help them verify their mathematics. Obviously in this case 
>>>>>>>> you
>>>>>>>> don't need SymPy to just verify arithmetic, but I've also seen it do 
>>>>>>>> just
>>>>>>>> as poorly on symbolic algebra problems.
>>>>>>>>
>>>>>>>> I've also pasted the full log below:
>>>>>>>>
>>>>>>>> [image: Screen Shot 2022-12-14 at 3.41.32 PM.png]
>>>>>>>> [image: Screen Shot 2022-12-14 at 3.41.42 PM.png]
>>>>>>>>
>>>>>>>> To find the extreme values of a function, we need to find the
>>>>>>>> critical points of the function, which are the points at which the
>>>>>>>> derivative of the function is equal to 0 or does not exist.
>>>>>>>>
>>>>>>>> The derivative of the function x^3 + 5x^2 + 3x - 9 is 3x^2 + 10x +
>>>>>>>> 3. To find the critical points, we need to solve the equation 3x^2 + 
>>>>>>>> 10x +
>>>>>>>> 3 = 0.
>>>>>>>>
>>>>>>>> To solve this equation, we can use the quadratic formula:
>>>>>>>>
>>>>>>>> x = (-b ± √(b^2 - 4ac)) / 2a
>>>>>>>>
>>>>>>>> where a, b, and c are the coefficients of the quadratic equation
>>>>>>>> ax^2 + bx + c = 0. In our case, a = 3, b = 10, and c = 3, so the 
>>>>>>>> formula
>>>>>>>> becomes:
>>>>>>>>
>>>>>>>> x = (-10 ± √(10^2 - 4 * 3 * 3)) / 2 * 3
>>>>>>>>
>>>>>>>> = (-10 ± √(100 - 36)) / 6
>>>>>>>>
>>>>>>>> = (-10 ± √(64)) / 6
>>>>>>>>
>>>>>>>> = (-10 ± 8) / 6
>>>>>>>>
>>>>>>>> = (-18, -2) / 6
>>>>>>>>
>>>>>>>> = (-3, -1/3)
>>>>>>>>
>>>>>>>> These are the critical points of the function x^3 + 5x^2 + 3x - 9.
>>>>>>>>
>>>>>>>> To find the extreme values of the function, we need to evaluate the
>>>>>>>> function at these critical points and at any points where the 
>>>>>>>> derivative
>>>>>>>> does not exist. In this case, the derivative exists for all values of 
>>>>>>>> x, so
>>>>>>>> we only need to evaluate the function at the critical points.
>>>>>>>>
>>>>>>>> If we plug in the critical points into the function, we get:
>>>>>>>>
>>>>>>>> x^3 + 5x^2 + 3x - 9 = (-3)^3 + 5(-3)^2 + 3(-3) - 9 = -27 + 45 + 9 -
>>>>>>>> 9 = 8
>>>>>>>>
>>>>>>>> and
>>>>>>>>
>>>>>>>> x^3 + 5x^2 + 3x - 9 = (-1/3)^3 + 5(-1/3)^2 + 3(-1/3) - 9 = -1/27 +
>>>>>>>> 5/9 + 1 - 9 = 5/9 - 1/27 - 8/9 = -64/27
>>>>>>>>
>>>>>>>> The extreme values of the function x^3 + 5x^2 + 3x - 9 are 8 and
>>>>>>>> -64/27.
>>>>>>>>
>>>>>>>> On Wed, Dec 14, 2022 at 3:35 PM gu...@uwosh.edu <gu...@uwosh.edu>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Just for some additional perspective. I have also tried this on
>>>>>>>>> some general chemistry word problems. In general, I see it getting 
>>>>>>>>> basic
>>>>>>>>> one logical step processes correct (e.g. a single step dilution or 
>>>>>>>>> grams ->
>>>>>>>>> moles). Things with multiple steps or requiring understanding the 
>>>>>>>>> physical
>>>>>>>>> situation it does poorly on. That said, I think it does better than 
>>>>>>>>> some of
>>>>>>>>> my weakest students. It does not seem to be able to use significant 
>>>>>>>>> figures
>>>>>>>>> in computations (also a problem for my weaker students).
>>>>>>>>>
>>>>>>>>> It seems to be improving rapidly. If it can get to reliably
>>>>>>>>> differentiating between correct (workable) solutions and erroneous 
>>>>>>>>> ones, it
>>>>>>>>> will be more useful to most people (including my students) than 
>>>>>>>>> searches of
>>>>>>>>> the internet or a cheating sight such as Chegg.
>>>>>>>>>
>>>>>>>>> My two cents worth of opinion.
>>>>>>>>>
>>>>>>>>> Jonathan
>>>>>>>>>
>>>>>>>>> On Wednesday, December 14, 2022 at 4:28:05 PM UTC-6 Francesco
>>>>>>>>> Bonazzi wrote:
>>>>>>>>>
>>>>>>>>>> [image: chatgpt.sympy.matrix_diag.png]
>>>>>>>>>>
>>>>>>>>>> On Wednesday, December 14, 2022 at 11:26:37 p.m. UTC+1 Francesco
>>>>>>>>>> Bonazzi wrote:
>>>>>>>>>>
>>>>>>>>>>> Not everything is perfect... ChatGPT misses the *convert_to(
>>>>>>>>>>> ... ) *function in *sympy.physics.units*, furthermore, the
>>>>>>>>>>> given code does not work:
>>>>>>>>>>>
>>>>>>>>>>> [image: chatgpt.sympy.unit_conv.png]
>>>>>>>>>>>
>>>>>>>>>>> On Wednesday, December 14, 2022 at 11:24:29 p.m. UTC+1 Francesco
>>>>>>>>>>> Bonazzi wrote:
>>>>>>>>>>>
>>>>>>>>>>>> [image: chatgpt.sympy.logical_inference.png]
>>>>>>>>>>>>
>>>>>>>>>>>> On Wednesday, December 14, 2022 at 11:23:43 p.m. UTC+1
>>>>>>>>>>>> Francesco Bonazzi wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> https://en.wikipedia.org/wiki/ChatGPT
>>>>>>>>>>>>>
>>>>>>>>>>>>> Some tested examples attached as pictures to this post. Quite
>>>>>>>>>>>>> impressive...
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>>> Groups "sympy" group.
>>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>>> send an email to sympy+un...@googlegroups.com.
>>>>>>>>>
>>>>>>>> To view this discussion on the web visit
>>>>>>>>> https://groups.google.com/d/msgid/sympy/6af62b19-1fb0-4681-9fd2-5e5fccfcb46fn%40googlegroups.com
>>>>>>>>> <https://groups.google.com/d/msgid/sympy/6af62b19-1fb0-4681-9fd2-5e5fccfcb46fn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>> .
>>>>>>>>>
>>>>>>>> --
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "sympy" group.
>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>> send an email to sympy+un...@googlegroups.com.
>>>>>>>
>>>>>> To view this discussion on the web visit
>>>>>>> https://groups.google.com/d/msgid/sympy/74847ca3-124b-414d-aa36-01eb91096310n%40googlegroups.com
>>>>>>> <https://groups.google.com/d/msgid/sympy/74847ca3-124b-414d-aa36-01eb91096310n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>>
>>>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "sympy" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to sympy+unsubscr...@googlegroups.com.
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/sympy/1fbd88f8-3513-4e02-a576-266352f3531fn%40googlegroups.com
>>>> <https://groups.google.com/d/msgid/sympy/1fbd88f8-3513-4e02-a576-266352f3531fn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> --
> You received this message because you are subscribed to the Google Groups
> "sympy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sympy+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sympy/CAKgW%3D6L3qy-h94G8OrTqtjrqTu9woZQpXZxaZx7mjcD1L7q32g%40mail.gmail.com
> <https://groups.google.com/d/msgid/sympy/CAKgW%3D6L3qy-h94G8OrTqtjrqTu9woZQpXZxaZx7mjcD1L7q32g%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sympy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/CACEZTmtJTUU3570Q1thJ1pDv%3DnNy4vTcSUyH_HuLc2WKT6jW7Q%40mail.gmail.com.

Reply via email to