5 votos

¿Cómo puedo saber si un polinomio es mayor que otra con un intervalo?

$y_1=ax^2 + bx + c$

$y_2=dx^2 + ex + f$

Pregunta: ¿cuál es la forma correcta para mí la prueba de que $y_1 > y_2$ a un intervalo de tiempo (digamos de 0 a 10, ambos inclusive) para todos los números en ese intervalo?

Supongo que tiene algo que ver con la prueba de la integral de y1 - y2, pero no estoy seguro.

=== Añade un poco de contexto ===

Estoy trabajando en un continuo juego de la teoría de programa escrito en Python, y estoy trabajando en el concepto de estricta dominación. $y1$ $y2$ están destinados a ser las funciones de utilidad para un determinado agente. $y1$ domina estrictamente $y2$ si, en el rango de otras acciones del jugador en cuestión (es decir, el intervalo de $x$), $y1>y2$.

7voto

hakan Puntos 6

Solucionar $ y_{1} = y_{2} $ y, a continuación, utilizar las soluciones (si las hay) para construir el signo diagrama de $ y_{1} - y_{2} $ sobre el intervalo.

Habiendo $ \displaystyle \int_{a}^{b} (y_{1} - y_{2}) \,d{x} > 0 $ es una condición necesaria para $ y_{1} > y_{2} $ sobre el intervalo de $ [a,b] $, pero definitivamente no es suficiente.

2voto

Mike Puntos 1113

Mientras Haskell Curry respuesta da una solución matemática al problema, pensé que me iba a ofrecer un servicio más programador orientado a la solución de los mismos; en particular, vale la pena señalar que el problema puede ser resuelto sin el cálculo de una raíz cuadrada.

En primer lugar, como ya se ha señalado, su pregunta es equivalente a considerar la función de $f(x) = y_1(x)-y_2(x) =Ax^2+Bx+C$ ( $A=a-d$ , etc.) y prueba si $f(x) \gt 0$ durante un intervalo de $x\in [x_1, x_2]$; voy a utilizar esta formulación del problema.

A continuación, considere el vértice de la parábola $(x,f(x))$; es decir, el punto de $x_0=-B/2A$ que representa el eje de simetría de la función $f$. ($f$ puede ser escrito como $f(x) = A(x-x_0)^2+M$ para algunas constantes $M$ y este es, de hecho, la génesis de la fórmula cuadrática, pero eso es irrelevante para el problema en la mano). Si $x_0$ no está en el intervalo de $[x_1, x_2]$ (y tenga en cuenta que esto también cubre el caso de degeneración donde $A=0$, es decir, donde no hay ningún vértice), entonces la función de $f$ debe ser estrictamente creciente o estrictamente decreciente en dicho rango; esto significa que sólo podemos ver los signos de $f(x_1)$$f(x_2)$, y estar seguro de que si ambos son positivos, $f$ es positiva en todo el intervalo.

Por otro lado, si $x_0$ está en el intervalo, entonces $f$ toma en un máximo o de un mínimo de allí (dependiendo del signo de $A$), y esto significa que $f(x)$ será estrictamente creciente en uno de los dos intervalos de $[x_1, x_0]$ o $[x_0, x_2]$ y estrictamente decreciente en el otro. Aquí, sólo podemos ver el signo de $f(x)$ en los tres puntos $x=x_0$, $x=x_1$ y $x=x_2$; si cualquiera de ellos es negativo, entonces obviamente $f$ es negativo en algún punto en el intervalo, pero si todos los tres son positivos, a continuación, por el 'bitonicity' de $f$ sabemos que debe ser positiva en la totalidad del intervalo. Esto nos da la siguiente (pseudocódigo) de la función:

bool PositiveOnRange(Quadratic f, float x1, float x2)
{
  if (f.evalAt(x1) <= 0) return false; // negative at one end of the range
  if (f.evalAt(x2) <= 0) return false; // negative at the other end
  if ( f.A == 0 ) return true; // not actually quadratic
  float x0 = -f.B/(2.0*f.A);
  if ( (x0 < x1) || (x0 > x2) ) return true; // vertex not in range
  return ( f.evalAt(x0) > 0 ); // sign at vertex
}

Para funciones que no son tan simples como cuadráticas, el enfoque más sencillo podría ser una combinación de subdivisión y la aritmética de intervalos; esencialmente, cuando la evaluación de una función (esto funciona especialmente bien para los polinomios, pero tenga en cuenta que las exponenciales y arbitrario de funciones monótonas son bien comportados por la aritmética de intervalos demasiado), en lugar de evaluar en un punto a evaluar es 'en' un intervalo. Los intervalos pueden ser sumados y multiplicados con reglas simples, y de cualquier forma monotónica $f(x)$ evaluado en un intervalo de $I=[a, b]$ los rendimientos de la (posiblemente mal ordenados) intervalo de $f(\!(I)\!) = [f(a), f(b)]$. Aritmética de intervalos no es necesariamente estricto - para una función arbitraria $f$, si calculamos el $f(\!(I)\!) = J = [J_l, J_r]$, a continuación, esto no necesariamente significa que cada valor de $J_l\lt y\lt J_r$ $f(x)$ algunos $x\in I$ -, pero es conservador, en el sentido de que si $f(\!(I)\!) = J$, entonces para cada a $x\in I$ tenemos $f(x)\in J$.

El uso de aritmética de intervalos, el problema entonces puede ser resuelto con un divide y vencerás algoritmo: inicio con el intervalo de $I=[x_L, x_R]$ desea confirmar $f()\gt 0$. Comenzar por evaluar $f(x_L)$ $f(x_R)$ a asegurarse de que sus extremos son ambos positivos. Suponiendo que pasa, calcular los $f(\!(I)\!)$ y prueba para ver si contiene 0. Si no, entonces usted está hecho; usted sabe que su función debe ser positiva en el intervalo. Si no contener $0$, por otro lado, luego de evaluar $f$ en la mitad de la $x_M = \frac{(x_L+x_R)}{2}$. De nuevo, si esto falla, entonces usted está hecho; si tiene éxito, entonces se debe considerar los dos intervalos de $I_L = [x_L, x_M]$$I_R = [x_M, x_R]$. Usted puede evaluar $f(\!(I_L)\!)$ para ver si contiene 0 (y recurse hacia abajo hasta que falle o, finalmente, empezar a intervalos que son "buenos"), y hacer lo mismo con $f(\!(I_R)\!)$. Esto da el siguiente pseudocódigo (que probablemente deben ser convertidos para el uso explícito de la pila de intervalos en lugar de la recursividad y, por supuesto, necesita un poco de cordura-controles para evitar recursing infinitamente, pero esos son detalles de la programación):

bool PositiveOnRange(Function f, float xL, float xR)
{
  // we presume that xL and xR have already been tested and confirmed positive.
  Interval testInterval = f.evalOnInterval(Interval(xL, xR));
  if ( !(testInterval.Contains(0)) ) return true;
  float xM = 0.5*(xL+xR);
  if ( f.evalAt(xM) < 0 ) return false;
  return (PositiveOnRange(f, xL, xM) && PositiveOnRange(f, xM, xR));
}

1voto

Andrew Puntos 298

Depende de lo que entendemos por "$y_1>y_2$ a un intervalo de tiempo" ...

El texto de su pregunta, parece sugerir que usted puede desear algo como $$ \int_a^b w(x)(y_1(x)-y_2(x))\, \mathrm{d}x > 0 $$ lo que significa que algunas suma ponderada de los polinomios favorece $y_1$ $y_2$ sobre el intervalo.

Otras nociones de $>$ podría ser algo como:

$$ \mathrm{max}_{x\in[a,b]}\ y_1 > \mathrm{max}_{x\in[a,b]}\ y_2 $$

O tal vez

$$ y_1>y_2\ \forall x\in[a,b] $$

O incluso como JohnD comentado, sólo podría estar interesado en uno o todos los valores de $x$ que $y_1>y_2$.

Hay diferentes situaciones en las que usted podría utilizar cada uno de esos (otras posibilidades existen también), usted sólo tiene que tener claro qué es lo que usted necesita para $>$.

-1voto

medicine28 Puntos 16

Es un método para comprobar el primer punto, por lo que en este caso, compruebe $y_1(0)\geq y_2(0)$. A continuación, considere la posibilidad de los derivados y compruebe que $y_1'(x)\geq y_2'(x)$ todos los $x\in[0,10]$.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X