Message Boards Message Boards

0
|
8248 Views
|
17 Replies
|
6 Total Likes
View groups...
Share
Share this post:

Solve a fraction when the denominator approaches zero?

Posted 8 years ago

I have a function (1+b)^2/Sqrt[1-b^2] that I need to solve as b->1, where b is real. The calculation exceeds the precision that Mathematica is using and I am not sure how to increase the precision if I use Solve...or even if this is the best way to get a solution. Is there another way of approaching the solution to this function from a purely analytical approach or using complex variables?

Regards,

Luther

POSTED BY: Luther Nayhm
17 Replies
POSTED BY: Daniel Lichtblau
Posted 8 years ago
POSTED BY: Luther Nayhm

Welcome to Wolfram Community! Please make sure you know the rules: https://wolfr.am/READ-1ST

Please post your full code of what you are trying to do.

POSTED BY: EDITORIAL BOARD
Posted 8 years ago
ff = ((1 + b)^2)/Sqrt[1 - b*b]

(1 + b)^2/Sqrt[1 - b^2]

LogLogPlot[ff, {b, .9999999999999999999, .99999999999999999999}]

The limits of the plot are arbitrary here but need to be many nines larger for the circumstances I am looking for.

I originally tried Solve[ff-.99999999999999==0,b] and the solution was undefined by Mathematica. My solution should be at about 25 nines, but that is a guess at this point, since I cannot find an exact solution. If there is a non-Mathematica process that could be used, I am not familiar with it.

Luther

POSTED BY: Luther Nayhm

Please make sure you know read all rules: https://wolfr.am/READ-1ST

The rules explain how to format your code properly. If you do not format code, it may become corrupted and useless to other members. Please EDIT your posts and make sure code blocks start on a new paragraph and look framed and colored like this.

int = Integrate[1/(x^3 - 1), x];
Map[Framed, int, Infinity]

enter image description here

POSTED BY: EDITORIAL BOARD

Have you tried taking a limit as b approaches 1 from the left side?

POSTED BY: Daniel Lichtblau
Posted 8 years ago

The text I input was copied right out of the Mathematica worksheet, so it is the code I was executing.

It was not my intention to have the code executed. I was looking for information on if and whether Mathematica could be used to solve such a problem that borders on the pathological. I also did not want to open the discussion onto why I am trying to do this particular calculation.

POSTED BY: Luther Nayhm
Posted 8 years ago
POSTED BY: Luther Nayhm
POSTED BY: Daniel Lichtblau
Posted 8 years ago
POSTED BY: Luther Nayhm

I understand you have a function f given by the following equation e1

In[1]:= e1 = f == (1 + b)^2/Sqrt[1 - b^2]

Out[1]= f == (1 + b)^2/Sqrt[1 - b^2]

I square both sides and obtain

e2 = #^2 & /@ e1

f^2 == (1 + b)^4/(1 - b^2)

Having in mind that ( 1 - b^2 ) = ( 1 - b ) ( 1 + b ) you may guess that you will arrive at an equation with b^3. FullSimplify does the job

In[3]:= e3 = e2 // FullSimplify

Out[3]= (1 + b)^3/(-1 + b) + f^2 == 0

Now use

e4 = Solve[e3, b]

and you will get three equations for b (two with imaginary parts) which give you b when you plug in f. With Mathematica's numerical power this should give you an answer to your question.

For example

Block[{$MaxExtraPrecision = 500}, N[e4[[1]] /. f -> 10^80, 6000]]
POSTED BY: Hans Dolhaine

Ok, I might not understand the point of this discussion, but you appear not to be interested in

Limit[(1 + b)^2/Sqrt[1 - b^2], b -> 1, Direction -> "FromBelow"]

or

Limit[(1 + b)^2/Sqrt[1 - b^2], b -> 1, Direction -> "FromAbove"]

which is what Daniel suggests early on. Here is a different way of writing what Daniel has done in a much shorter way. First, I try to figure out for which "b" I get a certain value:

$MaxPrecision = 550    
sols = Solve[ff == c, b]

enter image description here

The first solution is the real valued solution. Now you can use:

sols[[1]] /. SetPrecision[c -> 9999999999999999999999999, 450]

and obtain something identical (plus/minus a couple of digits) as the simpler code before:

NSolve[ff - 9999999999999999999999999.`450 == 0, b]

You can get really close to the pole:

$MaxPrecision = 950
sols[[1]] /. SetPrecision[c -> 9999999999999999999999999999999999999999999999999999, 850]

enter image description here

I do not really have an easy means of verifying these numbers though. How close to the pole do you want to go?

There are not many applications, I am aware of, that need to such a high precision though, so I would like to hear of yours. Always nice to be able to tell students why one would need these high precisions "in real life".

Best wishes,

Marco

POSTED BY: Marco Thiel

This seems to be essentially the same what I noted above....... :)

POSTED BY: Hans Dolhaine

Oops, sorry, had not seen that.

BW,

Marco

PS: I'd still like to see the "application of this".

POSTED BY: Marco Thiel
Posted 8 years ago
POSTED BY: Luther Nayhm
Posted 8 years ago

Thank you. This is another approach I had not considered. The issue was about forcing the precision to be high enough that Mathematica actually gave me an answer. My post above indicates I was looking for the radiation pressure on a large object moving at light speed. The issue was, when does the up-shifted radiation cause sufficient radiation pressure to force the object to come to a terminal speed...assuming some constant thrust or driving force. The answer is that for a massive object, depending on the driving force, the object must reach ~25 nines the speed of light to reach a terminal velocity...but in the spirit of full disclosure, the object would be fried to a crisp at much lower speeds, perhaps below 0.9c.

Regards,

Luther

POSTED BY: Luther Nayhm
Anonymous User
Anonymous User
Posted 8 years ago
POSTED BY: Anonymous User
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract