How can I parametrize a cosine to become asymmetric?

4 visualizaciones (últimos 30 días)
lzeeysjp
lzeeysjp el 30 de Mayo de 2017
Comentada: lzeeysjp el 30 de Mayo de 2017
Hello,
I have a question and hope that you can help me.
I need function that looks like an cosine, but with the turning points at different places. They should shifted towards 0 and 2pi (see image below) depending on some parameter. Ideally the function converges to the cosine for some value.
And no, its no homework :) I need the function for an optimization problem I am trying to solve.
Kind regards, Joe
  2 comentarios
Jan
Jan el 30 de Mayo de 2017
Editada: Jan el 30 de Mayo de 2017
There is an infinite number of such functions. Do you have any further limitations? The shown curve is still symmetric. Do you mean a symmetry realted to the rotation around the y=0 points?
lzeeysjp
lzeeysjp el 30 de Mayo de 2017
Editada: lzeeysjp el 30 de Mayo de 2017
No limitation so far. Built-in would be great :)
I meant symmetric at x = Pi when using fliplr.
One possibility I found so far is
  • add an offset to the cosine (to stay positive)
  • (cos(x) + 2.0)^n, where n is the free parameter
  • then map the result to [-1, 1]

Iniciar sesión para comentar.

Respuesta aceptada

Stephen23
Stephen23 el 30 de Mayo de 2017
Editada: Stephen23 el 30 de Mayo de 2017
This is one simple solution, where a p value of 1 returns cos, and other p values change the shape:
fun = @(x,p)2*(((1+cos(x))/2).^p)-1;
X = 0:0.01:2*pi;
Y1 = fun(X,1); % cos
Y2 = fun(X,3); % adjusted
plot(X,Y1,X,Y2)
  1 comentario
lzeeysjp
lzeeysjp el 30 de Mayo de 2017
Yes that works, too. I guess this is similar to the one I posted in the comment above. By adding +2.0 to the cosine it also seems to work for negative parameters.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Mathematics en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by