2011-12-17 13 views
7

Ejemplo de función a trozos sabia:conexión fluida entre las partes a trozos

f[x_]:=Piecewise[{{x^2, 0<x<1-epsilon},{x,1<x<2-epsilon},{2,x>2}}] 

¿Hay una manera de conectar estas partes en épsilon intervalo, por lo que obtener una función suave?

EDIT:
Por liso, no me refiero a que debe ser derivable en el punto de conexión, solo que en algunos trabajos numéricos parece una conexión "natural".

EDIT2:
Dos círculos negros representan los puntos donde se encuentra el problema. Me gustaría que pareciera una función derivable (aunque no tiene que ser rigurosamente matemática, pero no quiero estos dos picos). El círculo rojo representa la parte donde se ve bien.
picture
Lo que podría hacer es hacer esto por ajuste no lineal del [x-epsilon, x + epsilon], pero esperaba que hubiera una manera más fácil con la función por partes.

Respuesta

5

Al principio, dada una función, deberíamos definirla con precisión en todo el rango {x,0,2}, es decir. sus valores en los rangos 1-epsilon <= x < 1 y 2 - epsilon <= x < 2. enter image description here

La manera más fácil es definir f1[x] lineal por tramos en los rangos de los dos, sin embargo, la función resultante no sería derivable en los puntos de encolado, y que implicaría espigas.

Para evitar tal situación debemos elegir (en este caso) a polinomios menos tercera orden allí:

P[x_] := a x^3 + b x^2 + c x + d 

y pegarlas junto con f[x] suponiendo "condiciones de encolado" (igualdad de funciones en puntos dados como así como de sus primeras derivadas), es decir. resolver ecuaciones resultantes:

W[x_, eps_]:= P[x]//. [email protected][{#^2 == P[#], 
            1 == P[1], 
            2# == 3a#^2 +2b# +c, 
            1 == 3a +2b +c}, {a, b, c, d}]&@(1-eps) 

Z[x_, eps_]:= P[x]//. [email protected][{# == P[#], 
            2 == P[2], 
            1 == 3a#^2 +2b# +c, 
            0 == 12a +4b +c}, {a, b, c, d}]&@(2-eps) 

para visualizar los resultados mencionan que podemos tomar advantege de Manipulate:

f1[x_, eps_]:= Piecewise[{{x^2, 0 < x < 1 -eps}, {W[x, eps], 1 -eps <= x < 1}, 
          { x , 1 <= x < 2 -eps}, {Z[x, eps], 2 -eps <= x < 2}, 
                { 2 ,   x >=2}}]; 
Manipulate[ Plot[f1[x, eps], {x, 0, 2.3}, 
       PlotRange -> {0, 2.3}, ImageSize->{650,650}] 
                 //Quiet, {eps, 0, 1}] 

Dependiendo de epsilon > 0 obtenemos funciones diferenciables f1, mientras que para epsilon = 0f1 no es diferenciable en dos puntos.

Plot[f1[x, eps]/. eps -> .4, {x, 0, 2.3}, PlotRange -> {0, 2.3}, 
          ImageSize -> {500, 500}, PlotStyle -> {Blue, Thick}] 

enter image description here

si queríamos f1 siendo una función suave (infinitamente diferenciable) debemos jugar definir f1 en el rango [1 - epsilon <= x < 1) con una función trascendental, algo como por ejemplo Exp[1/(x-1)] etc.

+0

@Sjoerd C. de Vries ambas son buenas respuestas, les daría la bandera resuelta, desafortunadamente el +1 tendrá que hacer. Artes Docendo Creo que Manipular es una buena idea. – enedene

+0

@Verbeia No, yo no. No estoy seguro de cómo dar un apoyo, ¿sigues el tema lo suficiente? – enedene

0

no estoy seguro de entender su pregunta, pero por lo que se reúnen aquí es una idea

ClearAll[f] 
e = 0.1 
f[x_] := Piecewise[{{x^2, 0 < x < 1 - e}, {whatEver, 
    1 - e <= x <= 1 + e}, {x, 1 + e < x < 2}, {2, x > 2}}, error] 

f[1] la da lo que sea.

+0

He intentado explicarlo mejor en la edición. – enedene

4

Podría hacer un cambio gradual entre las funciones que definen el punto inicial y final del intervalo.A continuación hago esto desplazando el peso de la suma ponderada de estas funciones dependiendo de la posición en el intervalo:

ClearAll[f] 
epsilon = 0.1; 
f[x_] := 
Piecewise[ 
    { 
    {x^2, 0 < x < 1 - epsilon}, 
    {Rescale[x, {1 - epsilon, 1}, {1, 0}] x^2 + Rescale[x, {1 - epsilon, 1}, {0, 1}] x, 
     1 - epsilon <= x <= 1}, 
    {x, 1 < x < 2 - epsilon}, 
    {Rescale[x, {2 - epsilon, 2}, {1, 0}] x + Rescale[x, {2 - epsilon, 2}, {0, 1}] 2, 
     2 - epsilon <= x <= 2}, 
    {2, x > 2} 
    } 
    ] 

Plot[f[x], {x, 0, 2.5}] 

enter image description here

Cuestiones relacionadas