Funzioni Uniformemente Continue: Guida Completa con Teoremi, Esempi Pratici e Implementazione Python

Cerca nel sito

Altri risultati..

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Cerca nelle Categorie

Continuità Uniforme

Introduzione

In analisi matematica, la continuità uniforme si presenta come un’estensione fondamentale della classica continuità. Se la continuità semplice ci assicura un comportamento “locale” ben definito per una funzione, la continuità uniforme fa un passo in più, garantendo che questo comportamento sia controllato in modo omogeneo su tutto l’intervallo considerato. Questa guida ti condurrà attraverso la sua definizione, i principali teoremi, e ti mostrerà come applicare questi concetti con esempi pratici e verifiche usando Python.


Definizione di Continuità Uniforme

Una funzione [math]f:I\to\mathbb{R}[/math] si dice uniformemente continua su un intervallo [math]I\subseteq\mathbb{R}[/math]

se:
[math]\displaystyle
\text{Per ogni } \epsilon>0 \text{ esiste un } \delta>0 \text{ tale che} \\
\text{per ogni } x,x’ \in I, \text{ se } |x-x’|<\delta \text{ allora } |f(x)-f(x’)|<\epsilon.
[/math]

Differenza con la Continuità Semplice

La distinzione chiave sta nella dipendenza di [math]\delta[/math]. Nella continuità semplice, il valore di [math]\delta[/math] può variare a seconda del punto [math]x[/math] considerato.

Nella continuità uniforme, invece, [math]\delta[/math] è globale: funziona indipendentemente dai punti specifici [math]x[/math] e [math]x'[/math] scelti all’interno dell’intervallo.

Teorema di Heine-Cantor

Il Teorema di Heine-Cantor è uno strumento potente che semplifica notevolmente la verifica della continuità uniforme in molti scenari:

Teorema di Heine-Cantor:

Se una funzione [math]f:I\to\mathbb{R}[/math] è continua su un intervallo chiuso e limitato (cioè compatto) [math]I=[a,b][/math], allora [math]f[/math] è uniformemente continua su [math]I[/math].

Perché è Utile?

Questo teorema ci permette di evitare l’arduo processo della definizione [math]\epsilon-\delta[/math] in tutti quei casi in cui l’intervallo in esame è compatto. Basta verificare la continuità semplice della funzione su tale intervallo!

Caso Studio: [math]f(x)=x^x[/math] su [math][0,1][/math]

Cerchiamo di capire se la funzione [math]f(x)=x^x[/math] è uniformemente continua sull’intervallo [math][0,1][/math].

Analisi Teorica

La funzione [math]f(x)=x^x[/math] (che può essere riscritta come [math]e^{x\log x}[/math]) è definita per [math]x>0[/math]. Tuttavia, è noto che il limite per [math]x\to0^+[/math] di [math]x^x[/math] esiste ed è 1:

[math]\displaystyle \lim_{x \to 0^+} x^x = 1[/math]

Estendendo la funzione in modo da includere il punto [math]x=0[/math] con [math]f(0)=1[/math], otteniamo una funzione continua su tutto l’intervallo chiuso e limitato [math][0,1][/math].

Per il Teorema di Heine-Cantor, poiché [math][0,1][/math] è un intervallo compatto e [math]f[/math] è continua su di esso, possiamo affermare che [math]f[/math] è uniformemente continua su [math][0,1][/math].

 

👉 Continuità Uniforme: 6 Esercizi Risolti

Determinare la Continuità Uniforme in Python con SymPy: Analisi di [math]g(x)=x^x(\ln(x)+1)[/math]

Ora, vediamo come affrontare l’analisi di una funzione più complessa, [math]g(x)=x^x(\ln(x)+1)[/math], utilizzando Python e la libreria SymPy. Verificare la continuità uniforme a livello computazionale non è sempre immediato, poiché è una proprietà definita sull’intero dominio.

Contesto Teorico della Continuità Uniforme

Una funzione [math]f[/math] è uniformemente continua su un intervallo [math]I[/math] se per ogni [math]\epsilon>0[/math], esiste un [math]\delta>0[/math] tale che per tutti [math]x,y\in I[/math], se [math]|x-y|<\delta[/math], allora [math]|f(x)-f(y)|<\epsilon[/math].

Ecco alcuni indicatori chiave per la continuità uniforme:

  • Derivata Limitata: Se una funzione [math]f[/math] ha una derivata limitata su un intervallo [math]I[/math], allora [math]f[/math] è uniformemente continua su [math]I[/math]. Questo è spesso il criterio più semplice da verificare per le funzioni differenziabili.
  • Continuità su un Intervallo Compatto: Come visto con Heine-Cantor, se una funzione è continua su un intervallo chiuso e limitato (un intervallo compatto), allora è uniformemente continua su quell’intervallo.
  • Continuità di Lipschitz: Se una funzione è continua secondo Lipschitz, è anche uniformemente continua.
Ti potrebbe interessare anche:  Python: esercizi svolti sulla simulazione del lancio dei dadi

Analisi di [math]g(x)=x^x(\ln(x)+1)[/math]

Il dominio di [math]g(x)[/math] è [math](0,\infty)[/math], poiché sia [math]x^x[/math] che [math]\ln(x)[/math] sono definiti per [math]x>0[/math].

Ecco i passi che possiamo seguire per verificarne la continuità uniforme usando SymPy:

  1. Rappresentazione Simbolica: Definiamo la funzione in modo simbolico.
  2. Continuità: Verifichiamo la continuità sul suo dominio.
  3. Comportamento ai Confini/Infinito: Analizziamo i limiti quando [math]x[/math] si avvicina ai confini del dominio (0 da destra) e all’infinito. Questo è cruciale per gli intervalli non compatti.
  4. Derivata di [math]g(x)[/math] : Se troviamo la derivata di [math]g(x)[/math] e dimostriamo che è limitata su certi intervalli, abbiamo un forte indicatore.

Vediamo l’implementazione in Python:

import sympy as sp

# Definiamo la variabile simbolica
x = sp.Symbol('x')

# Definiamo la funzione g(x)
g_x = x**x * (sp.log(x) + 1)

print(f"Funzione g(x): {g_x}")

# --- 1. Verifichiamo la continuità sul suo dominio (0, infinito) ---
# La funzione x**x è continua per x > 0.
# La funzione sp.log(x) è continua per x > 0.
# Il prodotto e la somma di funzioni continue sono continue.
# Quindi, g_x è continua su (0, oo).

# --- 2. Analizziamo il comportamento vicino a x=0+ e x=oo ---
limit_at_0_plus = sp.limit(g_x, x, 0, dir='+')
print(f"Limite di g(x) per x che si avvicina a 0 da destra: {limit_at_0_plus}")

limit_at_infinity = sp.limit(g_x, x, sp.oo)
print(f"Limite di g(x) per x che si avvicina all'infinito: {limit_at_infinity}")

# --- 3. Troviamo la derivata di g(x) (g'(x) o f''(x)) ---
g_prime_x = sp.diff(g_x, x)
print(f"Derivata di g(x) (g'(x) o f''(x)): {g_prime_x}")

# --- 4. Analizziamo la limitatezza di g_prime_x ---
# Valutiamo g_prime_x in alcuni punti per farci un'idea
print(f"g'(0.1): {g_prime_x.evalf(subs={x: 0.1})}")
print(f"g'(0.5): {g_prime_x.evalf(subs={x: 0.5})}")
print(f"g'(1): {g_prime_x.evalf(subs={x: 1})}")
print(f"g'(10): {g_prime_x.evalf(subs={x: 10})}")
print(f"g'(100): {g_prime_x.evalf(subs={x: 100})}")

# Limite di g_prime_x per x che si avvicina a 0+
limit_g_prime_0_plus = sp.limit(g_prime_x, x, 0, dir='+')
print(f"Limite di g'(x) per x che si avvicina a 0 da destra: {limit_g_prime_0_plus}")

# Limite di g_prime_x per x che si avvicina all'infinito
limit_g_prime_infinity = sp.limit(g_prime_x, x, sp.oo)
print(f"Limite di g'(x) per x che si avvicina all'infinito: {limit_g_prime_infinity}")
Funzione g(x): x**x*(log(x) + 1)
Limite di g(x) per x che si avvicina a 0 da destra: -oo
Limite di g(x) per x che si avvicina all'infinito: oo
Derivata di g(x) (g'(x) o f''(x)): x**x*(log(x) + 1)**2 + x**x/x
g'(0.1): 9.29104124431059
g'(0.5): 1.48079378427417
g'(1): 2.00000000000000
g'(10): 110070682964.665
g'(100): 3.14279328138898E+201
Limite di g'(x) per x che si avvicina a 0 da destra: oo
Limite di g'(x) per x che si avvicina all'infinito: oo

Spiegazione del Codice Python e dei Risultati

Il codice Python si avvale della libreria SymPy, uno strumento per la matematica simbolica. Permette di definire variabili e funzioni matematiche in modo simbolico, calcolare limiti, derivate e molto altro, proprio come faresti con carta e penna, ma con la potenza di calcolo di un computer.

 

import sympy as sp

# Definiamo la variabile simbolica
x = sp.Symbol('x')

# Definiamo la funzione g(x)
g_x = x**x * (sp.log(x) + 1)
print(f"Funzione g(x): {g_x}")
  • import sympy as sp: Importa la libreria SymPy, abbreviandola in sp per comodità.
  • x = sp.Symbol('x'): Questo crea una variabile simbolica x. In SymPy, le variabili devono essere esplicitamente definite come simboli per poter eseguire operazioni matematiche su di esse (come calcoli di limiti o derivate).
  • g_x = x**x * (sp.log(x) + 1): Definisce la funzione [math]g(x)=x^x(\ln(x)+1)[/math] in termini della variabile simbolica x. sp.log(x) rappresenta il logaritmo naturale di x.
  • print(f"Funzione g(x): {g_x}"): Stampa la rappresentazione simbolica della funzione.

Output:

Funzione g(x): x**x*(log(x) + 1)

Questo conferma che SymPy ha interpretato correttamente la tua funzione.

 

Analisi dei Limiti della Funzione [math]g(x)[/math]

limit_at_0_plus = sp.limit(g_x, x, 0, dir='+')
print(f"Limite di g(x) per x che si avvicina a 0 da destra: {limit_at_0_plus}")

limit_at_infinity = sp.limit(g_x, x, sp.oo)
print(f"Limite di g(x) per x che si avvicina all'infinito: {limit_at_infinity}")
  • sp.limit(espressione, variabile, punto, dir): Questa funzione calcola il limite dell’espressione data, rispetto alla variabile, quando questa si avvicina al punto specificato.
    • dir='+': indica che il limite deve essere calcolato da destra (cioè per valori di x maggiori del punto). Per il nostro dominio [math]x>0[/math], è l’unico limite rilevante a 0.
    • sp.oo: rappresenta l’infinito in SymPy.
Ti potrebbe interessare anche:  Teorema dei Valori Intermedi e Bolzano: Esercizi Svolti e Applicazioni Reali

Output:

Limite di g(x) per x che si avvicina a 0 da destra: -oo
Limite di g(x) per x che si avvicina all'infinito: oo

Spiegazione dei Risultati dei Limiti:

  • Limite di [math]g(x)[/math] per [math]x[/math] che si avvicina a [math]0[/math] da destra: [math]-\infty[/math]
    • Questo significa che quando [math]x[/math] si avvicina a [math]0[/math] da valori positivi, la funzione [math]g(x)[/math] tende a meno infinito.
    • Matematicamente: [math]\displaystyle \lim_{x\to0^+}g(x)=-\infty[/math].
    • Questo accade perché:[math]\displaystyle \begin{aligned} \lim_{x\to0^+}x^x&=1 \\ \lim_{x\to0^+}\ln(x)&=-\infty \end{aligned}[/math]
    • Quindi, il termine [math](\ln(x)+1)[/math] tende a [math]-\infty[/math]. Moltiplicando [math]1[/math] per [math]-\infty[/math] otteniamo [math]-\infty[/math].
  • Limite di [math]g(x)[/math] per [math]x[/math] che si avvicina all’infinito: [math]\infty[/math]
    • Questo significa che quando [math]x[/math] tende a valori molto grandi, la funzione [math]g(x)[/math] tende a più infinito.
    • Matematicamente: [math]\displaystyle \lim_{x\to\infty}g(x)=\infty[/math].
    • Questo accade perché:[math]\displaystyle \begin{aligned} \lim_{x\to\infty}x^x&=\infty \\ \lim_{x\to\infty}\ln(x)&=\infty \end{aligned}[/math]
    • Quindi, il prodotto di due termini che vanno all’infinito è ancora infinito.

 

Calcolo e Analisi della Derivata di [math]g(x)[/math]

g_prime_x = sp.diff(g_x, x)
print(f"Derivata di g(x) (g'(x) o f''(x)): {g_prime_x}")

# Valutiamo g_prime_x in alcuni punti per farci un'idea
print(f"g'(0.1): {g_prime_x.evalf(subs={x: 0.1})}")
# ... (altre valutazioni) ...

# Limite di g_prime_x per x che si avvicina a 0+
limit_g_prime_0_plus = sp.limit(g_prime_x, x, 0, dir='+')
print(f"Limite di g'(x) per x che si avvicina a 0 da destra: {limit_g_prime_0_plus}")

# Limite di g_prime_x per x che si avvicina all'infinito
limit_g_prime_infinity = sp.limit(g_prime_x, x, sp.oo)
print(f"Limite di g'(x) per x che si avvicina all'infinito: {limit_g_prime_infinity}")
  • g_prime_x = sp.diff(g_x, x): Calcola la derivata simbolica della funzione g_x rispetto alla variabile x.
  • g_prime_x.evalf(subs={x: valore}): Valuta l’espressione simbolica g_prime_x sostituendo x con un valore numerico. Questo ti permette di vedere il valore della derivata in punti specifici.
  • I comandi sp.limit per g_prime_x funzionano esattamente come spiegato sopra, ma applicati alla derivata.

Per chi volesse approfondire ulteriormente le potenzialità della libreria SymPy e scoprire come utilizzarla per una vasta gamma di calcoli simbolici, vi invitiamo a visitare la sezione dedicata sul nostro blog “La Scienza dei Dati”.

Troverete tutto su SymPy a questo link: https://lascienzadeidati.altervista.org/category/python/la-libreria-sympy/

Analisi dei Risultati

Analizziamo i risultati ottenuti dallo script Python:

  • Continuità: Come abbiamo dedotto, [math]g(x)[/math] è continua su [math](0,\infty)[/math].
  • Comportamento in [math]x=0^+[/math]:[math]\displaystyle \begin{aligned} \lim_{x \to 0^+} x^x &= 1 \\ \lim_{x \to 0^+} (\ln(x)+1) &= -\infty \end{aligned}[/math]Di conseguenza, [math]\displaystyle \lim_{x \to 0^+} g(x) = -\infty[/math]. Questo risultato è cruciale: una funzione che diverge a un estremo del suo dominio non può essere uniformemente continua su quell’intervallo. Per la continuità uniforme, la funzione deve essere “ben comportata” vicino ai confini; non può “esplodere” all’infinito o al meno infinito.
  • Comportamento in [math]x=\infty[/math]:[math]\displaystyle \begin{aligned} \lim_{x \to \infty} x^x &= \infty \\ \lim_{x \to \infty} (\ln(x)+1) &= \infty \end{aligned}[/math]Quindi, [math]\displaystyle \lim_{x \to \infty} g(x) = \infty[/math]. Anche questo conferma che [math]g(x)[/math] non è uniformemente continua su [math](0,\infty)[/math].

Conclusione sulla Continuità Uniforme su [math](0,\infty)[/math]

La funzione [math]g(x)=x^x(\ln(x)+1)[/math] non è uniformemente continua sull’intervallo [math](0,\infty)[/math] perché i suoi limiti sia per [math]x\to0^+[/math] che per [math]x\to\infty[/math] sono illimitati.

Ti potrebbe interessare anche:  Maturità 2019: Martedì 19 Febbraio la simulazione della Prima Prova d'esame.

Cosa Succede se Consideriamo un Intervallo Compatto?

È importante notare che se considerassimo un intervallo chiuso e limitato (compatto), ad esempio [math][a,b][/math] dove [math]a>0[/math], la situazione cambierebbe. Poiché [math]g(x)[/math] è continua su [math](0,\infty)[/math], sarebbe anche continua su [math][a,b][/math]. In virtù del Teorema di Heine-Cantor, qualsiasi funzione continua su un intervallo compatto è uniformemente continua su quell’intervallo.

Ad esempio, su un intervallo come [math][0.1,10][/math]:

  • La funzione [math]g(x)[/math] è continua su [math][0.1,10][/math].
  • Pertanto, [math]g(x)[/math] è uniformemente continua su [math][0.1,10][/math].

Esempi

Per cementare la comprensione, vediamo altri esempi di funzioni uniformemente continue e non:

  • ✅ Funzione Uniformemente Continua: [math]f(x)=\sin(x)[/math] su [math]\mathbb{R}[/math]
    • La sua derivata, [math]\cos(x)[/math], è limitata (varia tra -1 e 1). Questo indica un comportamento ben controllato.
    • Non presenta “esplosioni” o variazioni incontrollabili: la sua variazione è limitata ovunque.
  • ❌ Non Uniformemente Continua: [math]f(x)=\tan(x)[/math] su [math](0,\frac{\pi}{2})[/math]
    • La sua derivata, [math]\sec^2(x)[/math], tende a [math]\infty[/math] quando [math]x[/math] si avvicina a [math]\frac{\pi}{2}[/math].
    • Vicino all’asintoto verticale, la funzione presenta incrementi incontrollabili, rendendo impossibile trovare un [math]\delta[/math] universale.
  • ✅ Uniformemente Continua: [math]f(x)=\frac{1}{x}[/math] su [math][1,\infty)[/math]
    • La sua derivata è [math]-\frac{1}{x^2}[/math], che tende a zero per [math]x\to\infty[/math]. La funzione è “regolare” e la sua pendenza si appiattisce.
    • Attenzione: Questa stessa funzione [math]f(x)=\frac{1}{x}[/math] non è uniformemente continua su [math](0,1][/math]. Il limite per [math]x\to0^+[/math] è [math]\infty[/math], causando un comportamento non uniforme.

Teoremi Utili Aggiuntivi

Oltre a Heine-Cantor, esistono altri teoremi che possono aiutare a identificare la continuità uniforme:

  • Composizione:Se [math]f[/math] e [math]g[/math] sono uniformemente continue, allora anche la loro composizione [math]g\circ f[/math] lo è (a patto che i domini siano ben definiti e le funzioni siano ben comportate).
  • Continuità di Lipschitz [math]\Rightarrow[/math] Uniformemente Continua:Se una funzione [math]f[/math] è Lipschitz continua su un intervallo [math]I[/math] (ovvero, esiste una costante [math]L>0[/math] tale che [math]|f(x)-f(y)|\leq L|x-y|[/math] per tutti [math]x,y\in I[/math]), allora [math]f[/math] è uniformemente continua su [math]I[/math]. Questo è un criterio molto forte.

Conclusione

Le funzioni uniformemente continue rappresentano una classe importante e “ben comportata” di funzioni, specialmente quando considerate su intervalli chiusi e limitati (compatti). Grazie a teoremi potenti come quello di Heine-Cantor, è possibile riconoscerle e gestirle con maggiore facilità, spesso senza dover ricorrere alla complessa definizione [math]\epsilon-\delta[/math]. Integrando esempi pratici con strumenti computazionali come Python, la loro comprensione diventa ancora più intuitiva e concreta.

Vuoi Metterti alla Prova?

Ecco un semplice esercizio per consolidare quanto appreso:

Verifica se la funzione [math]f(x)=\sqrt{x}[/math] è uniformemente continua su [math][0,1][/math] e su [math](0,1][/math].

(115)

PubblicitàPubblicità