Re: Re: Problems solving using Solve
- To: mathgroup at smc.vnet.net
- Subject: [mg68861] Re: [mg68829] Re: Problems solving using Solve
- From: brucem at wolfram.com
- Date: Mon, 21 Aug 2006 03:28:29 -0400 (EDT)
- References: <ec65bn$1f8$1@smc.vnet.net> <200608200843.EAA04405@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
If exact numbers give a quick solution, how about using
exact (rational) approximations to the floating-point
parameters?
{ax,ay} = Rationalize[{-44.9376, 36.1678}];
{cx,cy} = Rationalize[{17.8329, 122.477}];
{centerOfMassx,centerOfMassy} = Rationalize[{-18.6338,72.3356}];
rcAB = Rationalize[-0.166667];
rcCD = Rationalize[-0.37931];
In[25]:=
{ax,ay,cx,cy,centerOfMassx,centerOfMassy,rcAB,rcCD}
Out[25]=
28086 180839 178329 122477 93169 180839 166667 37931
{-(-----), ------, ------, ------, -(-----), ------, -(-------), -(------)}
625 5000 10000 1000 5000 2500 1000000 100000
N[] can convert the results back to floating-point.
Bruce Miller
Technical Support
Wolfram Research, Inc.
support at wolfram.com
http://support.wolfram.com/
>
> definition for cd is cd[input_,rcCD_,cx_,cy_] := rcCD*input + cy -
> rcCD*cx;
> (which just defines a line of the form y=ax+b)
>
> Using NSolve instead of Solve still takes way too long (quit it after 15
> minutes, do not know if it even will solve it). I have about a 100 cones
> for
> each part I need to test and the way it is now takes too long.
>
> In my usage all values except beta and v are Reals. Beta is usually the
> range [0, Pi/2] and v is also a Real.
>
> For a solvable solution try:
>
> {ax,ay}= {7,4} and {cx,cy}= {21,11} and
> {centerOfMassx,centerOfMassy}={13,7} and rcAB=3 and
> rcCD=7/4
>
> That should give a solution, and quite fast at that.
>
> Akil
>
> "akil" <akomur at wanadoo.nl> schreef in bericht
> news:ec65bn$1f8$1 at smc.vnet.net...
>>I have a problem suing the following code:
>>
>> Cone[beta_,
>> v_,rcAB_,rcCD_,ax_,ay_,cx_,cy_,centerOfMassx_,centerOfMassy_]
>> :=
>> Module[
>> {betaUsed, vtemp, fx, fy, ex, ey,
>> waarde,criticalRC,criticalHeight,xVerplaatsing,ePx2Py2},
>> betaUsed = beta ;
>> vtemp = v;
>> fline[x_] := Tan[betaUsed]x - Tan[betaUsed]vtemp;
>> fx = x /. Solve[fline[x] == cd[x,rcCD,cx,cy], x][[1]];
>> fy = cd[fx,rcCD,cx,cy];
>> criticalRC = (centerOfMassy - fy)/(centerOfMassx - fx);
>> criticalHeight = -criticalRC*fx + fy;
>> ex = (-ay + rcAB*ax + criticalHeight)/(rcAB + (-criticalRC));
>> ey = ab[ex,rcAB,ax,ay];
>> xVerplaatsing = ex - vtemp;
>> ePx2Py2 = Sqrt[xVerplaatsing^2 + ey^2];
>> waarde = xVerplaatsing/ePx2Py2;
>> ArcCos[-waarde]
>> ];
>>
>> afg =
>> Simplify[D[Cone[beta,v,rcAB,rcCD,ax,ay,cx,cy,centerOfMassx,centerOfMassy],v],
>> TimeConstraint -> 1 ];
>> Solve[afg== 0, v];
>>
>> eg.
>> {ax,ay}= {-44.9376, 36.1678} and {cx,cy}= {17.8329, 122.477} and
>> {centerOfMassx,centerOfMassy}={-18.6338,72.3356} and rcAB=-0.166667 and
>> rcCD=-0.37931
>>
>> Doing the Solve[afg== 0, v] takes ages (after an hour I quit it). Is
>> there
>> any way I can make it work faster? Is any code in Cone such that it
>> unnecessarily makes it run faster? So are there any ways I can try to
>> make
>> everything run faster? Using integers it runs, but it takes too long
>> when
>> using real cones (made up of four points A B C D and a centerOfMass).
>>
>> Akil
>>
>>
>
>
- References:
- Re: Problems solving using Solve
- From: "akil" <akomur@wanadoo.nl>
- Re: Problems solving using Solve