1
$\begingroup$

I have a function that is shown in the image, below. The point I am interested in extracting (numeric fine) is, in this case, 200. This appears to be the point at which one derivative is infinite.
It is also possible this is the inflection point?

What would be the best way(s) to tackle this in MMA?

Update 1: The point on the surface of this function I wish to obtain is {0.2,200}.It appears from the shape of the function it is easiest to first find the y point which always seems to have the 'features' shown in the plot.

Update 2: The following constraints always hold: a>0 and b>0

Plot3D[f[a,b], {a, 0, 400}, {b, 0, 0.5}]

Function soln: 200

    f[a_, b_] = 
 1/b 30.` (-7.681373803360649` + 
    0.011809163818525368` a (-((
        20.60129077457011` E^(-((
          0.03333333333333333` (-4.605170185988092` + 
             15.` (0.05` - b^2/2) + Log[a])^2)/b^2)))/(a b)) + (
       0.2060129077457011` E^(
        7.5` b^2 + 15.` (0.05` - b^2/2) - (
         0.03333333333333333` (-4.605170185988092` + 15.` b^2 + 
            15.` (0.05` - b^2/2) + Log[a])^2)/b^2))/b + 
       E^(7.5` b^2 + 
         15.` (0.05` - b^2/2)) (1 + 
          Erf[(0.18257418583505533` (-4.605170185988092` + 15.` b^2 + 
              15.` (0.05` - b^2/2) + Log[a]))/b])) - 
    0.0033333333333333335` (-3.54274914555761` (-100.` (1 + 
             Erf[(0.18257418583505533` (-4.605170185988092` + 
                 15.` (0.05` - b^2/2) + Log[a]))/b]) + 
          a E^(7.5` b^2 + 
            15.` (0.05` - b^2/2)) (1 + 
             Erf[(0.18257418583505533` (-4.605170185988092` + 
                 15.` b^2 + 15.` (0.05` - b^2/2) + Log[a]))/b])) + 
       0.23618327637050734` (-((
           309.01936161855167` E^(-((
             0.03333333333333333` (-4.605170185988092` + 
                15.` (0.05` - b^2/2) + Log[a])^2)/b^2)))/b) + (

          3.090193616185517` a E^(
           7.5` b^2 + 15.` (0.05` - b^2/2) - (
            0.03333333333333333` (-4.605170185988092` + 15.` b^2 + 
               15.` (0.05` - b^2/2) + Log[a])^2)/b^2))/b + 
          15.` a E^(
           7.5` b^2 + 
            15.` (0.05` - b^2/2)) (1 + 
             Erf[(0.18257418583505533` (-4.605170185988092` + 
                 15.` b^2 + 15.` (0.05` - b^2/2) + Log[a]))/b]))) + 
    0.11809163818525367` a^2 b^2 ((
       20.60129077457011` E^(-((
         0.03333333333333333` (-4.605170185988092` + 
            15.` (0.05` - b^2/2) + Log[a])^2)/b^2)))/(a^2 b) + (
       0.2060129077457011` E^(
        7.5` b^2 + 15.` (0.05` - b^2/2) - (
         0.03333333333333333` (-4.605170185988092` + 15.` b^2 + 
            15.` (0.05` - b^2/2) + Log[a])^2)/b^2))/(a b) + (
       1.3734193849713405` E^(-((
         0.03333333333333333` (-4.605170185988092` + 
            15.` (0.05` - b^2/2) + Log[a])^2)/
         b^2)) (-4.605170185988092` + 15.` (0.05` - b^2/2) + 
          Log[a]))/(a^2 b^3) - (1/(a b^3))
       0.013734193849713406` E^(
        7.5` b^2 + 15.` (0.05` - b^2/2) - (
         0.03333333333333333` (-4.605170185988092` + 15.` b^2 + 
            15.` (0.05` - b^2/2) + Log[a])^2)/
         b^2) (-4.605170185988092` + 15.` b^2 + 15.` (0.05` - b^2/2) +
           Log[a])))
$\endgroup$
  • $\begingroup$ The question needs more details: please give a concrete example of such a function. Indicate if you need a symbolic or numerical solution. $\endgroup$ – Szabolcs Jan 13 at 10:28
  • 1
    $\begingroup$ Your function seems difficult to evaluate. Does it approach infinity as b -> 0? $\endgroup$ – Michael E2 Jan 13 at 13:02
  • $\begingroup$ Maybe find where $1 / \| \nabla f \|^2$ vanishes. $\endgroup$ – Michael E2 Jan 13 at 13:16
1
$\begingroup$

@michael-e2, yes it is difficult.

Warning: If you play with this function you'll likely be bitten by one or more of the issues described here - one of which (FindInstance) required a forced restart. Or you might encounter something new...?

So far this is the most general work around - general in the sense it works when the function returns a value. Outline: - Take a 'slice'/snapshot of the function near the origin. - Solve for a.

A picture is worth a thousand words:

ll=0
ul=25000

fa[a_] = f[a, b] /. {b -> 0.00001};
dataa = {#, fa[#]} & /@ Range[ll, ul, IntegerPart[(ul - ll)/100]];
imagea = Plot[fa[a], {a, 0, ul}, Epilog -> {Red, PointSize[0.001], Point[dataa]}];
imagea

Function illustration

FindRoot is then able to find a root - when searching from above. As warned above FindInstance required a restart for me.`

This is a workaround, so I'm happy to change the answer to something more rigorous.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.