 mersenneforum.org (https://www.mersenneforum.org/index.php)
-   PARI/GP (https://www.mersenneforum.org/forumdisplay.php?f=155)
-   -   How to solve this equation with pari gp ... (https://www.mersenneforum.org/showthread.php?t=25788)

 rockzur 2020-07-29 08:08

How to solve this equation with pari gp ...

I don't know how to put the solve command on the pari gp command line to solve logarithmic equations. Can somebody help me.

 a1call 2020-07-29 12:06

As I was taught by Paul Underwood,
To get log (x) in base n use
log(x)/log(n)
Pari-GP gives the natural log of the number otherwise known as ln(x) by the rest of the world.:smile:

 rockzur 2020-07-30 07:31

I mean how to solve for example 2 ^ x -5 = -6. Using the solve command

 axn 2020-07-30 07:52

[CODE]? ?solve
solve(X=a,b,expr): real root of expression expr (X between a and b), where expr(a)*expr(b)<=0.[/CODE]

Your sample equation boils down to 2^x+1=0, which doesn't have real roots. Let's try with an equation that does.

2^x-5==0. We need to know an interval (a,b) where [B]a[/B] root lies. We know that 2^2 < 5 < 2^3. So let's try (2,3)
[CODE]? solve(x=2, 3, 2^x-5)
%2 = 2.3219280948873623478703194294893901759[/CODE]

 rockzur 2020-07-30 08:23

It would be solve(2^x=8); For example

 axn 2020-07-30 09:54

[QUOTE=rockzur;551984]It would be solve(2^x=8); For example[/QUOTE]

No. You give a real valued expression in one variable, and it will find one real-valued solution where the expression becomes zero. So you recast your equation as 2^x-8=0 and just give the left side of the equality as input.

[CODE]? solve(t=0,10,2^t-8)
%1 = 3.0000000000000000000000000000000000000[/CODE]

 R. Gerbicz 2020-07-30 12:04

[QUOTE=axn;551981][CODE]? ?solve
solve(X=a,b,expr): real root of expression expr (X between a and b), where expr(a)*expr(b)<=0.[/CODE][/QUOTE]

What is missing here is that you need a continuous function. Otherwise the result is crap:
[CODE]
? solve(x=0,3,if(x<2,-1,1))
%3 = 1.9999999999999999999999999999999999999
?
[/CODE]

 rockzur 2020-07-30 12:14

What I want to know is how is used solve command.

 paulunderwood 2020-07-30 13:56

[CODE]?solve
solve(X=a,b,expr): real root of expression expr (X between a and b), where
expr(a)*expr(b)<=0.
[/CODE]

For logarithmic equations use pen and paper and an internet search engine.

 R. Gerbicz 2020-07-30 14:45

[QUOTE=rockzur;552005]What I want to know is how is used solve command.[/QUOTE]

Good question, it is not binary search, it should be another root finding algorithm. Btw in some really trivial cases the solve breaks:
[CODE]
? solve(x=-1,2,x^3)
*** at top-level: solve(x=-1,2,x^3)
*** ^----
*** sorry, solve recovery [too many iterations] is not yet implemented.
*** Break loop: type 'break' to go back to GP prompt
break>
[/CODE]
What is interesting is that their approx roots was so close to the x=0 solution, don't know why they haven't aborted the search.
[CODE]
? solve(x=-1,2,print(x);x^3)
-1.0000000000000000000000000000000000000
2.0000000000000000000000000000000000000
-0.66666666666666666666666666666666666667
-0.53132832080200501253132832080200501253
-0.39585716304753417148752640416134559761
0.80207141847623291425623679791932720119
-0.26729770261219306942169777701737070320
...
-4.1842288737629149621829297627585343823 E-26
8.5184705351226720431227968573430956740 E-26
-2.8383161799160252299934361727339277773 E-26
*** at top-level: solve(x=-1,2,print(x);x^3)
*** ^-------------
*** sorry, solve recovery [too many iterations] is not yet implemented.
*** Break loop: type 'break' to go back to GP prompt
[/CODE]

 jane477 2020-07-31 19:54

[QUOTE]Good question, it is not binary search, it should be another root finding algorithm. Btw in some really trivial cases the solve breaks:
[CODE]
? solve(x=-1,2,x^3)
*** at top-level: solve(x=-1,2,x^3)
*** ^----
*** sorry, solve recovery [too many iterations] is not yet implemented.
*** Break loop: type 'break' to go back to GP prompt
break>
[/CODE]
What is interesting is that their approx roots was so close to the x=0 solution, don't know why they haven't aborted the search.
[CODE]
? solve(x=-1,2,print(x);x^3)
-1.0000000000000000000000000000000000000
2.0000000000000000000000000000000000000
-0.66666666666666666666666666666666666667
-0.53132832080200501253132832080200501253
-0.39585716304753417148752640416134559761
0.80207141847623291425623679791932720119
-0.26729770261219306942169777701737070320
...
-4.1842288737629149621829297627585343823 E-26
8.5184705351226720431227968573430956740 E-26
-2.8383161799160252299934361727339277773 E-26
*** at top-level: solve(x=-1,2,print(x);x^3)
*** ^-------------
*** sorry, solve recovery [too many iterations] is not yet implemented.
*** Break loop: type 'break' to go back to GP prompt
[/CODE][/QUOTE]

what an elegant solution

All times are UTC. The time now is 22:39.