Sergey Moiseev

Sergey Moiseev

398 Reputation

13 Badges

15 years, 57 days
Sergey N. Moiseev received M.S., Ph.D. and Dr.Sc. degrees in radio physics from the Voronezh State University, Voronezh, Russia in 1986, 1993 and 2003, respectively. From 1984 to 2003 the topics of his research have included theory and methods of signal processing, nonlinear optimization, decision-making theory, time series prediction, statistical radio physics, ionosphere sporadic channel models. He is currently a principal scientist in the JSC Kodofon, Voronezh, Russia. His current research interests are wide spread in the area of the communications.

MaplePrimes Activity


These are answers submitted by Sergey Moiseev

It seems that your points are absolutely chaotic. Can you give approximate values (a, b, c, d) of function a*sin(b*x+c)+d ?

Ten solutions by DirectSearch package:

with(DirectSearch):
SolveEquations(x^2-29*y^2=1, tolerances=10^(-14), AllSolutions, solutions=10);

Matrix(10, 4, {(1, 1) = 0., (1, 2) = Vector(1, {(1) = 0.}), (1, 3) = [x = 1.500840386291, y = -.207823023609373], (1, 4) = 275, (2, 1) = 0., (2, 2) = Vector(1, {(1) = 0.}), (2, 3) = [x = -37.8326124564575, y = 7.02288516524052], (2, 4) = 327, (3, 1) = 0., (3, 2) = Vector(1, {(1) = 0.}), (3, 3) = [x = -13.6095592135261, y = -2.52040022811426], (3, 4) = 224, (4, 1) = 0., (4, 2) = Vector(1, {(1) = 0.}), (4, 3) = [x = 2.55906305386593, y = .437422060591118], (4, 4) = 323, (5, 1) = 0., (5, 2) = Vector(1, {(1) = 0.}), (5, 3) = [x = -84.7731137700263, y = 15.7408767427312], (5, 4) = 261, (6, 1) = 0., (6, 2) = Vector(1, {(1) = 0.}), (6, 3) = [x = -96.9858983459182, y = -18.0088718346654], (6, 4) = 285, (7, 1) = 0., (7, 2) = Vector(1, {(1) = 0.}), (7, 3) = [x = 90.0007814048697, y = 16.7116938755236], (7, 4) = 259, (8, 1) = 0., (8, 2) = Vector(1, {(1) = 0.}), (8, 3) = [x = 45.8002609373078, y = -8.50286747155392], (8, 4) = 249, (9, 1) = 0., (9, 2) = Vector(1, {(1) = 0.}), (9, 3) = [x = -1.00040339992736, y = 0.527506360875102e-2], (9, 4) = 261, (10, 1) = 0., (10, 2) = Vector(1, {(1) = 0.}), (10, 3) = [x = -51.7069917328136, y = -9.59995149782513], (10, 4) = 258})

You could also use SolveEquations in the DirectSearch package, version 2.

with(DirectSearch);
equ:=arctan(x)-4*x/(1+x^2);
sol:=SolveEquations(equ, checkexit=10, AllSolutions);
[seq(j, j=sol[..,3])];

[[x = -0.], [x = 2.88642694382442], [x = -2.88642694382464]]

The Direct Search package version 2 hasn't any problems with your objective function.

Access to Help of the OrthogonalExpansions package in standard mode is the same as for other Maple packages (set cursor on command and strike F2 button). Environment variable _EnvLegendreCut is described in Help page for LegendreP.

In my computer (Intel Core Duo CPU 3 GHz, RAM 4 Gb) 99 terms of Legendre polynomial series take less than 2 sec.

Robert Israel solution take approximately 1 sec first time and less than 0.1 sec after several times. It is fast enought but I notice also that Robert Israel solution is unstable when number of terms greater than 60 (see plot([F, LegSeries(F, 99)], x=-1..1);).

To duplicate the material that is shown in the accompanying PDF file you can try the following OrthogonalExpansions package.

with(OrthogonalExpansions):

_EnvLegendreCut := 1 .. infinity;
f:=x->piecewise(x>0,1,0);
s:=LegendreSeries(f(x),x=-1..1,9,0);
plot([f(x),s],x=-1..1);

plot([f(x),1/2+(218295/65536)*x-(315315/16384)*x^3+(1702701/32768)*x^5-(984555/16384)*x^7+(1616615/65536)*x^9],x=-1..1)

You can also click on the Matrix output two times and browse it.

Or you can click on Matrix output by right mouse button and select Browse.

Your function has 4 maximums in interval [-1..1]. Maximize from Optimization package is local optimizer. If you want find all maximums use global optimizer.

with(DirectSearch):

GlobalSearch(abs(.5547114632*x^2+1.130478381*x+.9883691714-exp(x)), [x>= -1,x<=1],maximize);

Matrix(4, 3, {(1, 1) = 0.456887233851495e-1, (1, 2) = [x = -.436328911539074], (1, 3) = 19, (2, 1) = 0.44722991983418e-1, (2, 2) = [x = .561684571994718], (2, 3) = 20, (3, 1) = 0.447228128301211e-1, (3, 2) = [x = .999999999939537], (3, 3) = 14, (4, 1) = 0.447228122241283e-1, (4, 2) = [x = -.999999999410568], (4, 3) = 13})

Another way is to use the Global Optimization to find all roots:

with(DirectSearch);

f:=((500*.87)*(1-(1/x)^.2385)-(288*(x^.3174-1))/(.85))^2;

GlobalSearch(f, tolerances=10^(-15));

Matrix(2, 3, {(1, 1) = 0., (1, 2) = [x = 1.], (1, 3) = 80, (2, 1) = 0., (2, 2) = [x = .878651748381766], (2, 3) = 259})

For some little samples this command also leads to crash.

For example, command is correct for n=11, but for n=17 or n=21 it leads to crash. It is strange.

Have you tried Search command from DirectSearch package ?

Have you tried Search command from DirectSearch package ?

Your problem can be solved by DirectSearch package as follows.

with(DirectSearch);

q:=(x,y,z)->-5+((x*y*z/z+1-x)+sqrt((x*(x+2*z^2-2*y)/x+3*z-1))/(4*x*z^2-y));
constr:={y>=0,y<=1,z>=0,z<=1};

sol:=Search(x,{q=0,y>=0,y<=1,z>=0,z<=1},variables=[x,y,z]);

The answer is:

sol := [.123120241955862, Vector(3, {(1) = .123120241955862006, (2) = 0.1514945925e-8, (3) = .999995097161877954}), 706]

 

Now you can assume that y=0, z=1 and resolve problem for more precise solution:

sol:=Search(x,{q(x,0,1)=0});

The answer is:

         sol := [0.123119557112078, [x = 0.123119557112078004], 33]

Vector[1..h] is not type 'Vector'. Correct your code as follows: E:=Vector(h);Y:=Vector(h);

You can numerically find the equation roots as minimums of your function^2. For example, find zeros in range a=0..2000 when m=0.

f:=(m,a)->(((.642*(-1.*BesselJ(2.250000000*m+1., 0.75e-2*a)+299.9999999*m*BesselJ(2.250000000*m, 0.75e-2*a)/a))*a-10.*BesselJ(2.250000000*m, 0.75e-2*a))*BesselY((9/4)*m, 0.2e-1*a)-((.642*(-1.*BesselY(2.250000000*m+1., 0.75e-2*a)+299.9999999*m*BesselY(2.250000000*m, 0.75e-2*a)/a))*a-10.*BesselY(2.250000000*m, 0.75e-2*a))*BesselJ((9/4)*m, 0.2e-1*a))^2;

plot(f(0,a),a=0..2000);

with(DirectSearch);

zeros:=GlobalSearch(f(0,a), pointrange=[a=0..2000]);

1 2 3 4 Page 3 of 4