This commit is contained in:
2026-02-25 17:40:36 +01:00
parent c224b24daa
commit b2a3d02649
85 changed files with 400 additions and 15005 deletions

View File

@@ -0,0 +1,189 @@
# Obliczenia
### Punkt pomiarowy nr 1
Dane wejściowe: $U = 3.3 \, V$, $I = 2.2 \, A$.
Temperatury odczytane: 1290, 1280, 1278, 1276, 1280 \[$^\circ C$].
**1. Średnia temperatura luminacyjna ($t_{1sr}$):**
$$t_{1sr} = \frac{1290+1280+1278+1276+1280}{5} = \frac{6404}{5} = 1280.8 \, ^\circ C$$
**2. Temperatura luminacyjna w Kelvinach ($T_1$):**
$$T_1 = 1280.8 + 273.15 = 1553.95 \, K$$
**3. Moc ($P$):**
$$P = 3.3 \cdot 2.2 = 7.26 \, W$$
**4. Temperatura rzeczywista ($T$):**
$$K = \frac{\lambda}{C_2} \ln(a)$$
$$K = \frac{650 \cdot 10^{-9}}{0.01438} \ln(0.45) \approx -3.61 \cdot 10^{-5}$$
Obliczenie $T$:
$$\frac{1}{T} = \frac{1}{1553.95} + (-3.61 \cdot 10^{-5}) = 0.0006435 - 0.0000361 = 0.0006074$$
$$T = \frac{1}{0.0006074} \approx \mathbf{1646.3 \, K}$$
**5. Logarytmy do wykresu:**
$$\ln(T) = \ln(1646.3) \approx 7.4063$$
$$\ln(P) = \ln(7.26) \approx 1.9824$$
---
### Punkt pomiarowy nr 2
Dane wejściowe: $U = 3.91 \, V$, $I = 2.4 \, A$.
Temperatury odczytane: 1370, 1370, 1360, 1370, 1375 \[$^\circ C$].
**1. Średnia temperatura luminacyjna ($t_{1sr}$):**
$$t_{1sr} = \frac{1370+1370+1360+1370+1375}{5} = 1369.0 \, ^\circ C$$
**2. Temperatura luminacyjna w Kelvinach ($T_1$):**
$$T_1 = 1369.0 + 273.15 = 1642.15 \, K$$
**3. Moc ($P$):**
$$P = 3.91 \cdot 2.4 = 9.38 \, W$$
**4. Temperatura rzeczywista ($T$):**
$$\frac{1}{T} = \frac{1}{1642.15} + (-3.61 \cdot 10^{-5}) = 0.0006089 - 0.0000361 = 0.0005728$$
$$T = \frac{1}{0.0005728} \approx \mathbf{1745.6 \, K}$$
**5. Logarytmy do wykresu:**
$$\ln(T) = \ln(1745.6) \approx 7.4649$$
$$\ln(P) = \ln(9.38) \approx 2.2390$$
---
### Punkt pomiarowy nr 3
Dane wejściowe: $U = 4.96 \, V$, $I = 2.6 \, A$.
Temperatury odczytane: 1400, 1401, 1398, 1400, 1398 \[$^\circ C$].
**1. Średnia temperatura luminacyjna ($t_{1sr}$):**
$$t_{1sr} = \frac{6997}{5} = 1399.4 \, ^\circ C$$
**2. Temperatura luminacyjna w Kelvinach ($T_1$):**
$$T_1 = 1399.4 + 273.15 = 1672.55 \, K$$
**3. Moc ($P$):**
$$P = 4.96 \cdot 2.6 = 12.90 \, W$$
**4. Temperatura rzeczywista ($T$):**
$$\frac{1}{T} = \frac{1}{1672.55} + (-3.61 \cdot 10^{-5}) = 0.0005979 - 0.0000361 = 0.0005618$$
$$T = \frac{1}{0.0005618} \approx \mathbf{1780.0 \, K}$$
**5. Logarytmy do wykresu:**
$$\ln(T) = \ln(1780.0) \approx 7.4844$$
$$\ln(P) = \ln(12.90) \approx 2.5569$$
---
### Punkt pomiarowy nr 4
Dane wejściowe: $U = 5.24 \, V$, $I = 2.8 \, A$.
Temperatury odczytane: 1460, 1450, 1460, 1452, 1461 \[$^\circ C$].
**1. Średnia temperatura luminacyjna ($t_{1sr}$):**
$$t_{1sr} = \frac{7283}{5} = 1456.6 \, ^\circ C$$
**2. Temperatura luminacyjna w Kelvinach ($T_1$):**
$$T_1 = 1456.6 + 273.15 = 1729.75 \, K$$
**3. Moc ($P$):**
$$P = 5.24 \cdot 2.8 = 14.67 \, W$$
**4. Temperatura rzeczywista ($T$):**
$$\frac{1}{T} = \frac{1}{1729.75} + (-3.61 \cdot 10^{-5}) = 0.0005781 - 0.0000361 = 0.0005420$$
$$T = \frac{1}{0.0005420} \approx \mathbf{1844.9 \, K}$$
**5. Logarytmy do wykresu:**
$$\ln(T) = \ln(1844.9) \approx 7.5202$$
$$\ln(P) = \ln(14.67) \approx 2.6859$$
---
### Punkt pomiarowy nr 5
Dane wejściowe: $U = 5.97 \, V$, $I = 3.0 \, A$.
Temperatury odczytane: 1483, 1490, 1491, 1490, 1491 \[$^\circ C$].
**1. Średnia temperatura luminacyjna ($t_{1sr}$):**
$$t_{1sr} = \frac{7445}{5} = 1489.0 \, ^\circ C$$
**2. Temperatura luminacyjna w Kelvinach ($T_1$):**
$$T_1 = 1489.0 + 273.15 = 1762.15 \, K$$
**3. Moc ($P$):**
$$P = 5.97 \cdot 3.0 = 17.91 \, W$$
**4. Temperatura rzeczywista ($T$):**
$$\frac{1}{T} = \frac{1}{1762.15} + (-3.61 \cdot 10^{-5}) = 0.0005675 - 0.0000361 = 0.0005314$$
$$T = \frac{1}{0.0005314} \approx \mathbf{1881.8 \, K}$$
**5. Logarytmy do wykresu:**
$$\ln(T) = \ln(1881.8) \approx 7.5400$$
$$\ln(P) = \ln(17.91) \approx 2.8854$$
---
## Szczegółowe obliczenia regresji liniowej
Metoda Najmniejszych Kwadratów (MNK) dla równania $\ln(P) = n \cdot \ln(T) + C$.
Oznaczenia zmiennych: $y = \ln(P)$, $x = \ln(T)$, $N=5$.
**Tabela sum pośrednich:**
| Lp. | $x_i$ | $y_i$ | $x_i \cdot y_i$ | $x_i^2$ | $y_i^2$ |
| :-: | :---: | :---: | :-------------: | :-----: | :-----: |
| 1 | 7.4063 | 1.9824 | 14.6822 | 54.8533 | 3.9300 |
| 2 | 7.4649 | 2.2390 | 16.7139 | 55.7247 | 5.0131 |
| 3 | 7.4844 | 2.5569 | 19.1369 | 56.0162 | 6.5377 |
| 4 | 7.5202 | 2.6859 | 20.1985 | 56.5534 | 7.2141 |
| 5 | 7.5400 | 2.8854 | 21.7559 | 56.8516 | 8.3255 |
| **$\Sigma$** | **37.4158** | **12.3496** | **92.4874** | **279.9992** | **31.0204** |
### 1. Obliczenie współczynnika kierunkowego $n$
$$n = \frac{N \sum(x_i y_i) - \sum x_i \sum y_i}{N \sum x_i^2 - (\sum x_i)^2}$$
Podstawienie wartości z tabeli:
$$n = \frac{5 \cdot 92.4874 - 37.4158 \cdot 12.3496}{5 \cdot 279.9992 - (37.4158)^2}$$
$$n = \frac{462.4370 - 462.0702}{1399.9960 - 1399.9421} = \frac{0.3668}{0.0539}$$
Wynik:
$$n \approx \mathbf{6.86}$$
### 2. Obliczenie wyrazu wolnego $C$
$$C = \frac{\sum y_i - n \sum x_i}{N}$$
$$C = \frac{12.3496 - 6.86 \cdot 37.4158}{5} = \frac{-244.3228}{5}$$
Wynik:
$$C \approx \mathbf{-48.86}$$
---
## 5. Obliczenie niepewności pomiarowej współczynnika kierunkowego
Niepewność standardową współczynnika kierunkowego $u(n)$ obliczamy z pełnego wzoru analitycznego:
$$u(n) = \sqrt{\frac{N}{N-2} \cdot \frac{\sum y_i^2 - n\sum x_i y_i - C\sum y_i}{N\sum x_i^2 - (\sum x_i)^2}}$$
Podstawienie wartości z tabeli sum:
* Mianownik ułamka wewnętrznego (wyznacznik): $D = N\sum x_i^2 - (\sum x_i)^2 \approx 0.0539$
* Licznik ułamka wewnętrznego (suma kwadratów reszt): $S = \sum y_i^2 - n\sum x_i y_i - C\sum y_i$
$S = 31.0204 - (6.86 \cdot 92.4874) - (-48.86 \cdot 12.3496)$
$S \approx 0.0209$
Obliczenie końcowe:
$$u(n) = \sqrt{\frac{5}{3} \cdot \frac{0.0209}{0.0539}} = \sqrt{1.6667 \cdot 0.3878} \approx \sqrt{0.6463}$$
Wynik:
$$u(n) \approx \mathbf{0.80}$$
**Wynik końcowy:**
Wartość wykładnika potęgowego temperatury wynosi (z niepewnością standardową):
$$n=6.86±0.80$$
**Równanie regresji**
$\ln(P)=6.86⋅ln(T)−48.86$
---
## 6. Współczynnik korelacji liniowej $r$
$$r = \frac{N \sum x_i y_i - \sum x_i \sum y_i}{\sqrt{[N \sum x_i^2 - (\sum x_i)^2][N \sum y_i^2 - (\sum y_i)^2]}}$$
Podstawienie obliczonych wcześniej liczników i mianowników:
* Licznik: $0.3668$
* Mianownik $x$: $0.0539$
* Mianownik $y$: $N \sum y_i^2 - (\sum y_i)^2 = 5 \cdot 31.0204 - (12.3496)^2 = 155.1020 - 152.5126 = 2.5894$
$$r = \frac{0.3668}{\sqrt{0.0539 \cdot 2.5894}} = \frac{0.3668}{\sqrt{0.1396}} \approx \frac{0.3668}{0.3736}$$
Wynik:
$$r \approx \mathbf{0.98}$$
Wartość bliska jedności świadczy o bardzo dobrym dopasowaniu prostej do punktów pomiarowych.
---
## Analiza zgodności z teorią i wnioski
Celem ćwiczenia było sprawdzenie prawa Stefana-Boltzmanna, które przewiduje, że dla ciała doskonale czarnego moc promieniowania jest proporcjonalna do czwartej potęgi temperatury ($P \sim T^4$), czyli teoretyczna wartość współczynnika wynosi $n_{teor} = 4$.
**Obliczenie błędu względnego:**
$$\delta = \frac{|n_{dosw} - n_{teor}|}{n_{teor}} \cdot 100\% = \frac{|6.86 - 4|}{4} \cdot 100\% = \mathbf{71.5\%}$$
**Wnioski:**
Wyznaczona doświadczalnie wartość wykładnika potęgowego $n = 6.86 \pm 0.80$ nie pokrywa się w granicach błędu z wartością teoretyczną $n=4$.
Różnica ta wynika z faktu, że:
1. Włókno wolframowe nie jest ciałem doskonale czarnym – jego emisyjność zmienia się wraz z temperaturą i długością fali.
2. Występują straty mocy na przewodnictwo cieplne (przez wsporniki i gaz w bańce), które zależą od temperatury liniowo ($T^1$), co w matematycznym dopasowaniu zawyża wykładnik potęgowy.
3. Wysoka wartość współczynnika korelacji $r=0.98$ potwierdza jednak, że w badanym zakresie temperatur zależność ma charakter potęgowy, choć o innym wykładniku niż dla idealnego ciała czarnego.

View File

@@ -2,7 +2,6 @@
# Cel
Jakościowe sprawdzenie prawa promieniowania za pomocą pirometru
optycznego.
# Wstęp teoretyczny
## Promieniowanie cieplne
- Promieniowanie cieplne jest promieniowaniem elektromagnetycznym emitowanym przez każde ciało, niezależnie od stanu skupienia, którego temperatura jest większa od zera bezwzględnego.
@@ -11,18 +10,4 @@ optycznego.
- Ciało, które absorbuje całą energię cieplną padającego na nie promieniowania elektromagnetycznego, nazywamy doskonale czarnym.
- Proces ten zachodzi niezależnie od długości fali i temperatury
- Ciało takie jest idealnym emitentem – w danej temperaturze emituje maksymalną możliwą ilość energii.
- W rzeczywistości ciała takie nie istnieją, ale potrafimy stworzyć modele, które są ich wystarczającym przybliżeniem.
## Prawo Plancka
- To prawo opisujące emisję promieniowania elektromagnetycznego przez ciało doskonale czarne będące w równowadze termodynamicznej znajdujące się w danej temperaturze.
- Patrząc na wykres krzywej Plancka jesteśmy w stanie zaobserwować dwie cechy zmieniające się wraz ze wzrostem temperatury: wzrost energii oraz przesunięcie maksimum.
## Prawo Stefana-Boltzmanna
- Prawo to opisuje całkowitą moc promieniowania emitowaną przez ciało. Całkowita energia emitowana przez jednostkę powierzchni ciała doskonale czarnego w jednostce czasu jest proporcjonalna do czwartej potęgi jego temperatury termodynamicznej.
## Prawo Kirchhoffa
- Opisuje relację między zdolnością do emisji a absorpcji. Twierdzi, że stosunek zdolności emisyjnej do zdolności absorpcyjnej ciała zależy tylko od temperatury i długości fali, a nie od rodzaju ciała. Upraszczając – dobry absorbent będzie dobrym emitentem.
## Prawo Wiena
- Według niego długość fali, na którą przypada maksimum emisji promieniowania, jest odwrotnie proporcjonalna do temperatury.
## Wzór Plancka
- Wzór ten opisuje dokładny kształt krzywej promieniowania ciała doskonale czarnego dla każdej długości fali i temperatury.
# Tabela pomiarowa
![](../../../../../media/Pasted%20image%2020260114190759.png)
- W rzeczywistości ciała takie nie istnieją, ale potrafimy stworzyć modele, które są ich wystarczającym przybliżeniem.

View File

@@ -1,4 +1,143 @@
import math
import numpy as np
from scipy import stats
def P(U, I):
return U * I
# --- DANE POMIAROWE (odczytane ze zdjęcia) ---
# Format: (U, I, [t1, t2, t3, t4, t5])
dane_pomiary = [
(3.30, 2.2, [1290, 1280, 1278, 1276, 1280]),
(3.91, 2.4, [1370, 1370, 1360, 1370, 1375]),
(4.96, 2.6, [1400, 1401, 1398, 1400, 1398]),
(5.24, 2.8, [1460, 1450, 1460, 1452, 1461]),
(5.97, 3.0, [1483, 1490, 1491, 1490, 1491])
]
# Uwaga: Dla ostatniego punktu przyjąłem odczyt 1483-1491 (zgodnie z fizyką wzrostu temp.),
# a nie 1443, co sugerowałoby spadek temperatury przy wzroście mocy.
# --- STAŁE FIZYCZNE ---
LAMBDA = 650e-9 # 650 nm
A_WOLFRAM = 0.45 # Współczynnik absorpcji
C2 = 0.01438 # Stała [m*K]
ZERO_ABS = 273.15 # 0 st. C
def formatuj_liczbe(x, precyzja=4):
"""Pomocnicza funkcja do formatowania liczb w LaTeX"""
return f"{x:.{precyzja}f}"
def generuj_blok_obliczen_dla_punktu(indeks, dane_row, korekta_stala):
"""Generuje szczegółowy opis obliczeń dla pojedynczego punktu"""
u, i_prad, t_list = dane_row
# --- OBLICZENIA ---
t_sr = np.mean(t_list)
T1 = t_sr + ZERO_ABS
P = u * i_prad
# Korekcja temperatury
odwrotnosc_T = (1/T1) + korekta_stala
T_real = 1/odwrotnosc_T
# Logarytmy
lnT = np.log(T_real)
lnP = np.log(P)
val_korekta = (LAMBDA/C2) * np.log(A_WOLFRAM) # Wartość liczbowa korekty
# --- GENEROWANIE TEKSTU MARKDOWN/LATEX ---
md = []
md.append(f"### Punkt pomiarowy nr {indeks}")
md.append(f"Dane wejściowe: $U = {u} \\, V$, $I = {i_prad} \\, A$.")
md.append(f"Temperatury odczytane: {
', '.join(map(str, t_list))} [$^\\circ C$].\n")
# 1. Średnia
sum_t = sum(t_list)
md.append(f"**1. Średnia temperatura luminacyjna ($t_{{1sr}}$):**")
md.append(f"$$ t_{{1sr}} = \\frac{{\\sum t_i}}{{5}} = \\frac{{{sum_t}}}{{5}} = {
t_sr:.1f} \\, ^\\circ C $$")
# 2. Kelvin
md.append(f"**2. Temperatura luminacyjna w Kelvinach ($T_1$):**")
md.append(
f"$$ T_1 = t_{{1sr}} + 273.15 = {t_sr:.1f} + 273.15 = {T1:.2f} \\, K $$")
# 3. Moc
md.append(f"**3. Moc ($P$):**")
md.append(f"$$ P = U \\cdot I = {u} \\cdot {i_prad} = {P:.2f} \\, W $$")
# 4. Temp rzeczywista
md.append(f"**4. Temperatura rzeczywista ($T$):**")
md.append("Korzystamy ze wzoru korekcyjnego (z prawa Plancka):")
md.append(
f"$$ \\frac{{1}}{{T}} = \\frac{{1}}{{T_1}} + \\frac{{\\lambda}}{{C_2}} \\ln(a) $$")
md.append(
f"Stała korekcja $K = \\frac{{650 \\cdot 10^{{-9}}}}{{0.01438}} \\ln(0.45) \\approx {val_korekta:.2e}$")
md.append(f"$$ \\frac{{1}}{{T}} = \\frac{{1}}{{{T1:.2f}}} + ({val_korekta:.2e}) = {
1/T1:.2e} - {abs(val_korekta):.2e} = {odwrotnosc_T:.2e} $$")
md.append(f"$$ T = \\frac{{1}}{{{odwrotnosc_T:.6f}}} \\approx \\mathbf{{{
T_real:.1f} \\, K}} $$")
# 5. Logarytmy
md.append(f"**5. Logarytmy do wykresu:**")
md.append(f"$$ \\ln(T) = \\ln({T_real:.1f}) \\approx {lnT:.4f} $$")
md.append(f"$$ \\ln(P) = \\ln({P:.2f}) \\approx {lnP:.4f} $$")
md.append("\n---\n") # Separator
return "\n".join(md), {
'id': indeks, 'U': u, 'I': i_prad, 'P': P,
't1_sr': t_sr, 'T1': T1, 'T': T_real,
'lnT': lnT, 'lnP': lnP
}
def przetworz_wszystko(dane):
korekta_stala = (LAMBDA / C2) * np.log(A_WOLFRAM)
raport_full = []
raport_full.append("# Szczegółowe obliczenia do Ćwiczenia 402\n")
wyniki_lista = []
# Pętla generująca opis dla każdego punktu
for i, row in enumerate(dane):
tekst_punktu, wyniki_dict = generuj_blok_obliczen_dla_punktu(
i+1, row, korekta_stala)
raport_full.append(tekst_punktu)
wyniki_lista.append(wyniki_dict)
# Regresja
x_val = [w['lnT'] for w in wyniki_lista]
y_val = [w['lnP'] for w in wyniki_lista]
slope, intercept, r_value, stderr, intercept_stderr = stats.linregress(
x_val, y_val)
# Tabela zbiorcza
raport_full.append("## Tabela Zbiorcza Wyników")
raport_full.append(
"| Lp. | $U$ [V] | $I$ [A] | $P$ [W] | $t_{1,sr}$ [$^{\\circ}$C] | $T_{rz}$ [K] | $\\ln(T)$ | $\\ln(P)$ |")
raport_full.append("|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|")
for w in wyniki_lista:
raport_full.append(f"| {w['id']} | {w['U']} | {w['I']} | {w['P']:.2f} | {
w['t1_sr']:.1f} | **{w['T']:.0f}** | {w['lnT']:.4f} | {w['lnP']:.4f} |")
# Podsumowanie regresji
raport_full.append("\n## Wyniki końcowe (Regresja)")
raport_full.append(f"Równanie prostej: $\\ln(P) = n \\cdot \\ln(T) + C$")
raport_full.append(
f"* **Współczynnik $n$ (potęga temperatury):** `{slope:.4f}`")
raport_full.append(f"* **Błąd standardowy $S_n$:** `{stderr:.4f}`")
raport_full.append(
f"* **Współczynnik korelacji $R^2$:** `{r_value**2:.4f}`")
raport_full.append(f"\n$$ \\ln(P) = ({slope:.3f} \\pm {
stderr:.3f}) \\cdot \\ln(T) + ({intercept:.3f}) $$")
return "\n".join(raport_full)
if __name__ == "__main__":
gotowy_raport = przetworz_wszystko(dane_pomiary)
print("-" * 20 + " KOPIUJ OD TEGO MIEJSCA " + "-" * 20)
print(gotowy_raport)
print("-" * 20 + " KONIEC KOPIOWANIA " + "-" * 20)