Amaphutha okuzungeza ngesikhathi sokuguquka

EBavaria, isilinganiso esimaphakathi sebanga lika- \(2{,}33\) siqinisekisa ukufaneleka kweGymnasium \(2{,}34\) akaqinisekisi. Kulesi sigaba esicacile, ukulandelana kwemisebenzi emibili yokuzungeza kunganquma ukuthi ingane iwela kuluphi uhlangothi. UGünther Felbinger uxoxa ngemiphumela engaba khona yalo mphumela wokuzungeza kokuthunyelwe kwebhulogi . Ngenxa yesithakazelo esimsulwa, ngizibale mina imiphumela kuzo zonke izinhlanganisela zebanga ezivunyelwe kumodeli.


Umbuzo wami oyinhloko uthi: Kukangaki ukufingqa kusenesikhathi kumabanga esifundo sonke kuholela ohlotsheni oluhlukile lokubala esikoleni kunezibalo kusetshenziswa izilinganiso zesifundo ezingafingqiwe? Ngaphezu kwalokho, kungaba mnandi ukubona ukuthi yini eshintshayo uma izilinganiso zezifundo ngazinye (njengoba kuphakanyisiwe lapho) zifingqa ekuqaleni endaweni eyodwa yedesimali.

Ngokusho kweSigaba 6 seMithethonqubo yeSikole Samabanga Aphansi saseBavarian, ibanga elimaphakathi libalwa kusukela kumabanga esiJalimane, iMathematika, kanye neZifundo Zasendaweni kanye Nezijwayelekile. Imithethonqubo yokusebenzisa ichaza imikhawulo efinyelela ku \(2{,}33\) kanye no- \(2{,}66\) . Kumodeli yokubala elandelayo, isilinganiso ngasinye siphelele sincishiswa sibe yizindawo ezimbili zamadesimali futhi asiphinde siphindwe. Ngakho-ke, isibonelo...

\[
\frac{2{,}33+2{,}34+2{,}34}{3}=2{,}3366\ldots \longrightarrow 2{,}33.
\]

Lokhu kubalulekile ekuhlukaniseni: \(2{,}3366\ldots\) ayibi \(2{,}34\) , kodwa \(2{,}33\) futhi ngenxa yalokho kusanele esikoleni solimi.

Ukufakwa kokuqala kubonisa ukuzungeza kwasekuqaleni ngamanani aphakathi acatshangelwayo esihloko esithile \(1{,}6\) , \(2{,}6\) , kanye \(2{,}6\) . Kulawa, wonke amamaki \(2\) , \(3\) , kanye \(3\) atholakala kuqala. Isilinganiso sabo singu

\[
\frac{2+3+3}{3}=2{,}6666\ldots \longrightarrow 2{,}66,
\]

okusho ukuthi umfundi akafaneleki ukwamukelwa esikoleni sohlelo lolimi ngqo. Ngaphandle kokufinyeza amamaki aphelele, nokho, umphumela esibonelweni esicatshangelwayo ungaba...

\[
\frac{1{,}6+2{,}6+2{,}6}{3}=2{,}2666\ldots \longrightarrow 2{,}26.
\]

Esibonelweni sesibili, ukuzungeza kusebenza ngendlela ephambene: \(2{,}4\) , \(3{,}4\) kanye \(2{,}4\) kuba amanani anothi aphelele \(2\) , \(3\) kanye \(2\) , ngokusemthethweni \(2{,}33\) . Amanani angazungezwanga, nokho, aphumela ku- \(2{,}73\) . Izibonelo zibonisa ngokucacile umphumela. Kodwa-ke, azikavezi ukuthi kwenzeka kangaki noma ukuthi imiphumela yendlela ehlukile yokuzungeza ingaba yini.

Ngakho-ke, ekubaleni kwami ngisebenzisa isikhala esicacile semiphumela. Isilinganiso sesihloko ngasinye singaba yinye yamanani angu \(501\) angaphakathi kwaso.

\[
1{,}00,\, 1{,}01,\, 1{,}02,\, \ldots, \, 5{,}99, \, 6{,}00
\]

Ake sithi. Ngilinganisa zonke izinhlanganisela ezihleliwe zesiJalimane, izibalo, kanye nezifundo zasendaweni kanye nezijwayelekile ngokulinganayo. Ngakho-ke, kukhona

\[
501^3=125\,751\,501
\]

Amacala. Ngakho-ke imodeli ayicacile, kodwa iyinto yokwenziwa: Ithatha isilinganiso sesifundo esisatshalaliswe ngokulinganayo, ukuzimela kwezifundo ezintathu, kanye nezinyathelo zekhulu. Ayibonisi ukusatshalaliswa kwangempela kwezingane zesikole samabanga aphansi saseBavaria.

Ngezihloko ezintathu sibhala ukuthi \(d,m,h\)

\[
A(d,m,h)=\frac{\left\lfloor 100\cdot\frac{d+m+h}{3}\right\rfloor}{100}
\]

ngokwesilinganiso esiphelele esincishisiwe saba yizindawo ezimbili zamadesimali. Manje siqhathanisa izindlela ezintathu zokubala.:

\[
\begin{aligned}
A_0 &= A(\operatorname{round}(d),\operatorname{round}(m),\operatorname{round}(h)),\\
A_1 &= A(\operatorname{round}_1(d),\operatorname{round}_1(m),\operatorname{round}_1(h)),\\
A_\mathrm{ref} &= A(d,m,h).
\end{aligned}
\]

\(A_0\) ihambisana nokubala kusetshenziswa amamaki aphelele, \(A_1\) esicelweni esinendawo eyodwa yedesimali, kanye \(A_\mathrm{ref}\) nereferensi engazungezwanga ngaphakathi kwemodeli. Ukubala kungenziwa ngqo ku- Rust , isibonelo.:

const SCHOOL_GYMNASIUM: i32 = 0;
const SCHOOL_REALSCHULE: i32 = 1;
const SCHOOL_MITTELSCHULE: i32 = 2;
const FLOAT_TOLERANCE: f64 = 1e-9;

#[derive(Clone, Copy, Default)]
struct Statistic {
    conflict_count: u64,
    total_count: u64,
}

fn determine_school(average: f64) -> i32 {
    if average <= 2.33 {
        return SCHOOL_GYMNASIUM;
    }
    if average <= 2.66 {
        return SCHOOL_REALSCHULE;
    }
    SCHOOL_MITTELSCHULE
}

fn calculate_average(note_deutsch: f64, note_mathe: f64, note_hsu: f64) -> f64 {
    let average = (note_deutsch + note_mathe + note_hsu) / 3.0;
    ((average + FLOAT_TOLERANCE) * 100.0).floor() / 100.0
}

fn round_to_whole_grade(grade: f64) -> f64 {
    grade.round()
}

fn round_to_one_decimal(grade: f64) -> f64 {
    (grade * 10.0).round() / 10.0
}

fn normalize_grade(grade: f64) -> f64 {
    (grade * 100.0).round() / 100.0
}

fn percentage(count: u64, total: u64) -> f64 {
    count as f64 / total as f64 * 100.0
}

fn main() {
    let mut combination_count = 0;
    let mut official_reference_conflicts = 0;
    let mut official_proposal_conflicts = 0;
    let mut proposal_reference_conflicts = 0;
    let mut statistics = [Statistic::default(); 4];

    let mut note_deutsch = 1.0;
    while note_deutsch <= 6.0 {
        let mut note_mathe = 1.0;
        while note_mathe <= 6.0 {
            let mut note_hsu = 1.0;
            while note_hsu <= 6.0 {
                combination_count += 1;

                let official_average = calculate_average(
                    round_to_whole_grade(note_deutsch),
                    round_to_whole_grade(note_mathe),
                    round_to_whole_grade(note_hsu),
                );
                let proposed_average = calculate_average(
                    round_to_one_decimal(note_deutsch),
                    round_to_one_decimal(note_mathe),
                    round_to_one_decimal(note_hsu),
                );
                let reference_average =
                    calculate_average(note_deutsch, note_mathe, note_hsu);
                let official_school = determine_school(official_average);
                let proposed_school = determine_school(proposed_average);
                let reference_school = determine_school(reference_average);

                if official_average == 3.0 {
                    statistics[0].total_count += 1;
                    if reference_school != SCHOOL_MITTELSCHULE {
                        statistics[0].conflict_count += 1;
                    }
                }
                if official_average == 2.66 {
                    statistics[1].total_count += 1;
                    if reference_school == SCHOOL_GYMNASIUM {
                        statistics[1].conflict_count += 1;
                    }
                }
                if official_average == 2.33 {
                    statistics[2].total_count += 1;
                    if reference_school != SCHOOL_GYMNASIUM {
                        statistics[2].conflict_count += 1;
                    }
                }
                if official_average == 2.66 {
                    statistics[3].total_count += 1;
                    if reference_school == SCHOOL_MITTELSCHULE {
                        statistics[3].conflict_count += 1;
                    }
                }

                if official_school != reference_school {
                    official_reference_conflicts += 1;
                }
                if official_school != proposed_school {
                    official_proposal_conflicts += 1;
                }
                if proposed_school != reference_school {
                    proposal_reference_conflicts += 1;
                }

                note_hsu = normalize_grade(note_hsu + 0.01);
            }
            note_mathe = normalize_grade(note_mathe + 0.01);
        }
        note_deutsch = normalize_grade(note_deutsch + 0.01);
    }

    println!(
        "official/reference: {}%",
        percentage(official_reference_conflicts, combination_count)
    );
    println!(
        "official/proposal: {}%",
        percentage(official_proposal_conflicts, combination_count)
    );
    println!(
        "proposal/reference: {}%",
        percentage(proposal_reference_conflicts, combination_count)
    );
    for (index, statistic) in statistics.iter().enumerate() {
        println!(
            "#{}: {}% ({}/{})",
            index + 1,
            percentage(statistic.conflict_count, statistic.total_count),
            statistic.conflict_count,
            statistic.total_count
        );
    }
}

Ukubekezelelana okuncane ku calculate_average kuvimbela inani elifana nelithi \(2{,}67\) ngenxa yokumelwa kwayo kwe-binary float, kwacatshangwa ngephutha \(2{,}669999\ldots\) kunqunyiwe. normalize_grade Ngaphezu kwalokho, kunciphisa inani ngalinye le-loop libuyele kugridi ye-oda lekhulu. Okungenani kunezinhlobo ezimbili ezihlukene zesilinganiso ezikhona. \(1/300\) ukubekezelelana \(10^{-9}\) ngakho-ke kuncane ngokwanele ukuthi kungashintshi noma yiliphi icala langempela lomngcele.

Uhlelo luhlanganiswa futhi luqalwe ngokuthi

rustc -O calc.rs && ./calc

Uhlelo luphinda luhlanganise zonke izinhlanganisela kanye nokubuyiselwa kwe \(125\,751\,501\):

UkuqhathanisaIngxenye
Amamaki aphelele uma kuqhathaniswa nesilinganiso sesifundo esingazungezwanga\(10{,}4411\,\%\)
Amamaki aphelele uma eqhathaniswa nesiphakamiso esinendawo eyodwa yedesimali\(10{,}1521\,\%\)
Isiphakamiso esinendawo eyodwa yedesimali uma kuqhathaniswa nesilinganiso sochwepheshe esingazungezwe\(0{,}6615\,\%\)

Inani eliyinhloko kimi yileli \(10{,}4411\,\%\): Ezinhlanganisweni ezingaphezu kweyodwa kweziyishumi, ukufingqa kwasekuqaleni kwamabanga aphelele kuholela ohlotsheni lwesikole oluhlukile olubalwe kunereferensi engafingqiwe. Lesi silinganiso sichaza kuphela umphumela wokufingqa ngaphakathi kwemodeli ekhethiwe.

Ukushintshela kuma-average ochwepheshe ngendawo eyodwa yedesimali kungaholela ekuhlukanisweni okuhlukile ku \(10{,}1521\,\%\) wazo zonke izimo zamamodeli uma kuqhathaniswa nendlela yangaphambilini. Kodwa-ke, ukuqhathanisa kwesithathu kubalulekile: uma kuqhathaniswa nereferensi engazungezwanga, indlela enendawo eyodwa yedesimali ishiya kuphela \(0{,}6615\,\%\) wamacala aphambukayo. Ngakho-ke ukuphambuka kusuka kureferensi kwehla ngo-

\[
1-\frac{0{,}6615}{10{,}4411}\approx 93{,}7\,\%.
\]

Lokhu, kimi, kungumphumela ongabazisayo wendlela yokubala yamanje: impumelelo ecatshangelwayo yesifundo esithile ayishintshi; isikhathi kuphela lapho kwenzeka khona ukuzungeza esingashintsha uhlobo lwesikole olubaliwe. Nakuba ukubala ngendawo eyodwa yedesimali kungawususi ngokuphelele lo mphumela, kuwunciphisa kakhulu ngaphakathi kwemodeli.

Nokho, lezi zibalo azisitsheli ukuthi bangaki abantwana abathintekile ngempela. Amamaki ekhadi lombiko awakhiqizwa njengezilinganiso ezijikelezwe ngomshini, ukusebenza kwezemfundo akusatshalaliswa ngokulinganayo futhi akuzimele, futhi ukukhetha kwangempela kohlobo lwesikole akuxhomekile kuphela kulezi zibalo ezintathu. Ukubala kwami kuphendula umbuzo oqondile: Kukangaki ukujikeleza kushintsha ibanga elibalwe lapho zonke izinhlanganisela zenani lekhulu zinamathuba afanayo?

Ekugcineni, ukuqhathanisa nokuthunyelwe kokuqala: Izinga eliphelele okukhulunywe ngalo lapho, cishe \(10\,\%\) liseduze no \(10{,}4411\,\%\) wami. Kodwa-ke, izibalo zami aziqinisekisi amacala amane ngamanye, ngalinye libikwe njenge \(1/6 \approx 17\,\%\) Ku-"isikole samabanga aphezulu esiphuthelwe ngo- \(3{,}00\) ", "isikole sohlelo lolimi esiphuthelwe ngo- \(2{,}33\) ", "isikole sohlelo lolimi esiphumelele ngo- \(2{,}66\) ", kanye "nesikole samabanga aphezulu esiphumelele ngo- \(2{,}66\) \(1{,}4615\,\%\) \(59{,}6096\,\%\) \(1{,}2023\,\%\) \(62{,}9395\,\%\) .

Amanani amane angama-probabilities anezimo ezihlukile anamaqembu okubhekisela anobukhulu obuhlukile. Ngaphandle kwesikhala sesampula esichazwe ngendlela ehlukile \(1/6\) asikwazi ukutholakala kuwo. Ngakho-ke ukubala kwami kuqinisekisa umphumela wokuzungeza, kodwa hhayi la ma-probabilities ngamanye. Kunoma ikuphi, izitatimende mayelana nenani langempela lezingane ezithintekile zingadinga ukusatshalaliswa kwangempela kwamabanga kanye nokuncika kwazo.

Emuva