Kitonum

18909 Reputation

26 Badges

14 years, 34 days

MaplePrimes Activity


These are replies submitted by Kitonum

@tomleslie  You're right. At first everything worked fine (as in my answer above). But then when I opened the saved document, the correct result appeared not 4, but only 3 times. I repeated these experiments several times and each time the situation worsened. Sometimes from the very beginning there was an incorrect result. All this is very strange.

@tomleslie  It seems my edited version works relatively stable (see above). I repeated the same 4 times.

@denkasyan  1. Yes this is the simplest way to construct three-dimensional graph of the system of  linear  inequalities. See help on PolyhedralSets  package for details.

2. Yes.

@tomleslie  For some unknown reason, your code does not work in my Maple 2017.3 32 bit:

   

@denkasyan In  PolyhedralSets  package, a body must be given by non-strict inequalities. But to build a body it does not matter. Maple simply draws the boundaries of this body as parts of the planes. In your example, the body will be part of the plane  y = -20 .

@denkasyan  You get the set  {x<0, y=-20, z<0}

You got some useful tips, but if you want more specific help, then you need to explain in what the essence of the problem is. And more: what do your functions B, P mean, what is loss and so on?

If I understand correctly,  until "any condition"  is equivalent to  if "any condition" then break fi , but slightly shorter. The latter variant I use very often.

@acer  This example shows the importance of visualization (a plot) in these methods. How else would we know a priori that the result

Optimization:-Maximize(f, x=0..2*Pi, method = branchandbound);


is incorrect?


If we want to solve purely programmatically (not looking at the plots), then probably the best method will be a standard approach using the first derivative:

f:=x->sin(3*x)-cos(7*x)+sin(17*x)+cos(20*x)-sin(67*x):
R:=[RootFinding:-Analytic(diff(f(x),x), x, re=0..2*Pi, im=-1..1)];
Min=min(f~(R)[], f(0), f(2*Pi));
Max=max(f~(R)[], f(0), f(2*Pi));

 

Unfortunately  method=branchandbound  option is not very reliable. The example below shows that both the minimum and maximum are found incorrectly, which is clearly shown by the graph:

f:=sin(3*x)-cos(7*x)+sin(17*x)+cos(20*x)-sin(67*x):
plot(f, x=0..2*Pi, size=[1000,500], numpoints=1000);
Optimization:-Maximize(f, x=0..2*Pi, method = branchandbound);
Optimization:-Minimize(f, x=0..2*Pi, method = branchandbound);


DirectSearch  package successfully copes with the problem:

DirectSearch:-GlobalOptima(f, [x=0..2*Pi]);
DirectSearch:-GlobalOptima(f, [x=0..2*Pi], maximize);
                            
 [-4.82606452700204, [x = 3.59004152503469], 191]
                              [3.40373784598079, [x = 4.94786409954761], 162]
 

                   
 

 

@Bilawal  See another way in my answer. 

@Mariusz Iwaniuk  The results for  x>Pi/2  are erroneous:

F:=simplify(unapply(int(sqrt(sin(x)), x=0..T), T)) assuming T>0, T<=Pi;
F(Pi/4), F(Pi/2), F(3*Pi/4), F(Pi): 
# Examples
evalf([%])[];
 

@nm  Sorry, I am wrong. I had in mind a syntax error for the numerical solution. I corrected the title.

@ahmeng  See help on  value(%)  and  emptysymbol(``)

@Lali_miani  In Maple, there is a rule: if at least one number is represented as a decimal fraction, for example  0.2  in your example, then Maple calculates the entire expression approximately (by default with 10 significant digits). If you want to have a symbolic representation, then instead of 0.2 you should write 1/5, that is  sin(1/5) . But then in the output Maple just writes the same thing, since sin(1/5)  can not be exactly written in a simpler form, for example, in radicals. But with this expression it is possible to work further, for example to calculate it approximately with some accuracy or to expand in a series, etc.

 

 

First 38 39 40 41 42 43 44 Last Page 40 of 124