Aonad 5 / 11

Ríomh Uimhriúil, Python agus Giniúint Cóid

Gnóthachain:

  • Cumas idirdhealú a dhéanamh idir calcalas siombalach agus uimhriúil agus an uirlis cheart (SymPy nó NumPy/SciPy) a roghnú do gach fadhb
  • Cumas an cód uimhriúil arna tháirgeadh ag hintleachta saorga a léamh agus a thuiscint, é a rith tú féin, agus é a fhíorú trí thástáil chiall choitinn a dhéanamh le hionchur aitheanta.
  • Tuiscint a fháil ar na teorainneacha a bhaineann le beachtas uimhir snámhphointe, bain úsáid as lamháltas in ionad comhionannais bheacht, agus bainistigh tionchar na tomhais tosaigh ar mhodhanna uimhriúla.

Tugann calcalas siombalach an fhoirmle bheacht do dhílseán nó cothromóid; Ach ní féidir formhór na bhfadhbanna praiticiúla sa mhatamaitic a réiteach le foirmle dúnta. Seo an áit a dtagann ríomh uimhriúil i bhfeidhm: neasthoradh uimhriúil a tháirgeadh leis an bheachtas inmhianaithe, seachas le foirmle beacht. Ag fáil luach slánchuid de chruinneas 0.001, ag ríomh fréamh na cothromóide go dtí an comhfhogasú deachúla, ag baint staitisticí as tacar sonraí — is ríomhanna uimhriúla iad seo ar fad. I Python, is iad na huirlisí chuige seo ná leabharlanna NumPy (eagair uimhriúla agus matamaitice) agus SciPy (ríomhaireacht eolaíoch). San aonad seo, foghlaimeoidh tú conas AI a úsáid mar chúntóir a ghineann cód Python le haghaidh ríomh uimhriúil agus seiceálann tú cruinneas an chóid.

Sainmhíniú criticiúil: is é atá in uimhir snámhphointe ná formáid ina stórálann ríomhaire uimhreacha deachúla le cruinneas teoranta. Sin an fáth sa uimhríocht ríomhaireachta, d'fhéadfadh 0.1 + 0.2 dul amach a bheith 0.3000000000000004, ní go díreach 0.3. Ní botún é seo, is cineál ríomh uimhriúil é - ach beidh torthaí míchearta mar thoradh air mura bhfuil tú ar an eolas faoi. I ríomh uimhriúil, oibríonn duine le "gar go leor" seachas "comhionannas cruinn".

Siombaileach nó uimhriúil? Roghnú an uirlis ceart

Stádas

Siombaileach (SymPy)

Uimhriúil (NumPy/SciPy)

Tá foirmle dúnta ann

fearr

ní gá

Níl aon fhoirmle / ró-chasta

Ní féidir a réiteach

fearr

Cruinneas iomlán ag teastáil

Thart.

Sonraí móra / ilphróiseáil

mall

an-tapa

Is leor an toradh le deachúil

oiriúnach

Úsáideann dea-chleachtóir an dá cheann: réiteáil go siombalach más féidir, téigh go huimhriúil mura bhfuil, agus cros-seiceáil ceann amháin leis an gceann eile nuair is féidir.

Céim ar chéim: Déan ríomh uimhriúil slán le AI

1. An fhadhb agus íogaireacht a aithint. "Cé mhéad ionad deachúlach?" agus "cén raon?" Soiléirigh do cheisteanna.

2. Scríobh cód chuig an AI, ní aschur. Cuimhnigh ó aonad 4: Ná déan an t-aschur cód a thuar AI. Ritheann tú an cód.

3. Léigh agus tuig an cód. An cód ginte a thuiscint líne ar líne. Leabharlann cheart, feidhm cheart, paraiméadair chearta? Ná rith cód nach dtuigeann tú.

4. Tástáil le staid aitheanta. Bain triail as an gcód le hionchur simplí a bhfuil an freagra ar eolas agat cheana féin. Mar shampla, sin(0)=0, cosúil le luach slánuimhir aitheanta. Má thugann an cód i gceart é, beidh muinín agat as níos mó.

5. Cros-seiceáil go siombalach nó de láimh. Más féidir, deimhnigh an toradh céanna le SymPy nó le cur chuige láimhe.

6. Seachain gaistí snámhphointe. In ionad comhionannas docht le ==, bain úsáid as lamháltais mar abs(a - b) < 1e-9.

Leid: Déan cód uimhriúil a thástáil i gcónaí "le freagra atá ar eolas agat". Má scríobh tú aimsitheoir fréimhe, cuir i bhfeidhm ar dtús é ar chothromóid le fréamh aithnid (x=±2), mar x²−4=0. Má fhaigheann an cód seo ceart, is mó an seans go mbeidh sé iontaofa ar chothromóidí nach bhfuil ar eolas agat. Is é an "seiceáil sláintíochta" seo an fíorú is saoire.

An pitfall a bhaineann le calcalas uimhriúil: cóineasú agus carnadh earráidí.

Oibríonn an chuid is mó de na modhanna uimhriúla go atriallach: ag tosú ón gcéad bhuille faoi thuairim agus ag druidim leis an bhfreagra iarbhír de réir a chéile. Cóineasú a thugtar ar an bpróiseas seo chun teacht níos dlúithe. Ach ní i gcónaí a thagann gach modh atriallach le chéile; roinnt acu éagsúil (bogann ón toradh) nó coinbhéirseacht go luach mícheart. Mura seiceálann cód a ghintear le AI cibé an dtagann an modh le chéile, féadfaidh sé uimhir mícheart a thabhairt duit go ciúin. Mar sin díreach toisc nach bhfuil toradh uimhriúil "a tháirgtear uimhir" fíor é; Is gá freisin a dhearbhú go dtagann an uimhir sin go hiarbhír leis an réiteach atá á lorg.

Is é an dara subtlety carnadh earráidí. I slabhra fada ríomhaireachtaí, féadann earráidí beaga slánúcháin snámhphointe ag gach céim charnadh agus éirí níos mó; Go háirithe nuair a ghlacann tú an difríocht idir dhá líon mór an-dlúth (tugtar cealú tubaisteach air seo), is féidir le digití suntasacha an toradh a chailleadh. Ní i gcónaí a dhéanann faisnéis shaorga fadhbanna cobhsaíochta uimhriúla den sórt sin a thuar. I ríomhanna ríthábhachtacha, nuair a dhéantar an toradh a athríomh agus a chur i gcomparáid le modh difriúil nó le cruinneas níos airde, léirítear carnadh earráidí folaithe.

Aird: "Toradh a thabhairt" agus "inréimniú go dtí an toradh ceart" de mhodh uimhriúil dhá rud éagsúla. Cinntigh go bhfuil seiceáil cóineasaithe sa chód (m.sh., go n-éiríonn an difríocht idir dhá chéim as a chéile beag go leor); Mura bhfuil sé ann, iarr ar an hintleachta saorga an rialú seo a chur leis.

trí chás mion

Cás 1 - Roghnú feidhme mícheart. D’iarr mac léinn ar an AI cód chun fréamh feidhme a aimsiú. Bhain AI úsáid as scipy.optimize.fsolve, ach roghnaigh sé droch-bhuille faoi thuairim tosaigh agus coinbhéirsíodh go dtí an fhréamh mícheart. Scrúdaigh an mac léinn an fheidhm ar dtús trína grafáil (féach aonad léirshamhlaithe), thug sé an buille faoi thuairim tosaigh ceart, agus fuair sé an fhréamh cheart. Ceacht: tá aimsitheoirí fréamhacha uimhriúla íogair don phointe tosaigh.

Cás 2 - Gaiste snámhphointe. Rith innealtóir cód AI a scríobh má bhí 0.1 + 0.2 == 0.3: agus thuig sé nach raibh an coinníoll fíor riamh. Bhí neamhaird déanta ag an AI ar chruinneas snámhphointe. Ceartaíodh an cód le ABS((0.1+0.2) - 0.3) < 1e-9. Ciallaíonn 1e-9 "deich go dtí an naoi lúide", lamháltas an-bheag.

Cás 3 - Thángthas ar an bhfabht le tástáil chiall choitinn. Fuair ​​múinteoir cód ó scipy.integrate.quad a ríomhann slánuimhir cinnte go huimhriúil. Thástáil sé ar dtús é le bunuimhir aitheanta amhail ∫₀¹ x dx = 0.5; thug an cód 0.5. Ansin ríomh sé an bunchuid iarbhír agus dheimhnigh sé an toradh le SymPy. Chuir sé muinín nuair a thug dhá mhodh neamhspleácha an toradh céanna. Am iomlán: 6 nóiméad.

Ceithre theimpléad inchóipeála

1) Cód cuntais uimhriúil a iarraidh:

Scríobh cód Python a réitíonn an fhadhb seo a leanas go hUIMHREACH: [fadhb]. Úsáid NumPy/SciPy. Íogaireacht: [m.sh. 6 deachúla]. Beidh mé ag rith an cód; an t-aschur a thuar. Mínigh go hachomair i líne tráchta cén fheidhm a roghnaigh tú agus cén fáth.

2) Triail chiall choitinn a chur leis:

Cuir seiceáil chiall choiteann leis an gcód seo chun a CEARTÚCHT a thástáil sula rithfear é: bain triail as le hionchur simplí nuair atá an freagra ar eolas cheana féin (m.sh. fréamh ±2 le haghaidh x²-4=0) agus seiceáil go dtugann sé an toradh ionchais.Cód: [anseo]

3) Cros-seiceáil siombalach-uimhriúil:

Scríobh cód a réitíonn an slánuimhir/cothromóid seo a leanas leis an DHÁ SymPy (siombalach) AGUS SciPy (uimhriúil): [fadhb]. Priontáil an dá thoradh ionas gur féidir liom iad a chur i gcomparáid. Cuir líne leis a seiceálann do dhifríochtaí le ABS().

4) Slándáil snámhphointe:

Athbhreithnigh na comparáidí uimhir snámhphointe sa chód seo. Má tá comhionannais dochta '==' ann, cuir lamháltas cuí ina ionad (abs(a-b) < 1e-9) agus mínigh cén fáth. Cód: [anseo]

Leid lag / Pras láidir

Lag: "Faigh fréamh na cothromóide seo: x³ − 2x − 5 = 0. Scríobh an freagra."
Toradh: Luíonn an AI uimhir dheachúil (m.sh. "2.0946..."). Féadfaidh sé a bheith fíor nó nach bhfuil; Níor fíoraíodh é toisc nár ritheadh ​​é.
Cumhachtach: "Scríobh cód a aimsíonn fíorfhréamh na cothromóide x³ − 2x − 5 = 0 le SciPy. Chun an buille faoi thuairim tosaigh, sonraigh ar dtús an t-eatramh a n-athraíonn an fheidhm a shíniú. Cuir líne leis a thagann in ionad na fréimhe agus seiceálann gurb é ~0 an toradh. Feicfidh mé an t-aschur."
Toradh: Cód inrite, buille faoi thuairim tosaigh cruinn, hashes ionsuite. Tá bailíocht an fhréamh cruthaithe.

Botúin choitianta

  • Ag muinín an toradh gan an cód a rith. Ní bailíochtú é an t-aschur uimhriúil a “thuar” an AI.
  • Comhionannas snámhphointe a thástáil le `==`. Tá sé beagnach i gcónaí mícheart; Bain úsáid as caoinfhulaingt.
  • Droch réamhaisnéis tosaigh. Tá modhanna uimhriúla fréimhe/optamaithe íogair don phointe tosaigh; Féadfaidh sé teacht le chéile go dtí an fhréamh mícheart.
  • Gan íogaireacht a chur in iúl. "Cé mhéad céimeanna?" Mura n-iarrtar, b'fhéidir nach n-oirfeadh an toradh don riachtanas.
  • Gan tástáil chiall choiteann a dhéanamh. Tá sé contúirteach cód a chur i bhfeidhm ar fhíorfhadhb gan é a thástáil le hionchur aitheanta.
  • Rith an cód gan é a thuiscint. Seans go bhfuil cód nach dtuigeann tú ag baint úsáide as an bhfeidhm mícheart; gach líne a thuiscint.
Rabhadh: Tá torthaí uimhriúla i gcónaí gar. In ionad "is é an toradh go díreach é seo", abair "is é seo go díreach é sin". I dtuarascáil innealtóireachta nó eolaíoch, is cuid den chruinneas é an modh agus an beachtas a úsáidtear a lua. Is míthreorach toradh neasach a chur i láthair mar chinntitheach.

Go hachomair

Tugann calcalas uimhriúil torthaí garbha ach praiticiúla ar fhadhbanna nach féidir a réiteach le foirmle dúnta; I Python, is iad NumPy agus SciPy na huirlisí atá aige. Gineann AI cód go tapa do na leabharlanna seo, ach ní mór duit an cód a rith, é a léamh agus a thuiscint, agus é a thástáil le hionchur aitheanta. Bí cúramach le cruinneas snámhphointe: bain úsáid as caoinfhulaingt seachas comhionannas cruinn. Cros-seiceáil modhanna siombalacha agus uimhriúla más féidir. Is iad tástáil chiall choiteann agus ionadú na fíoruithe is saoire agus is éifeachtaí.

Tasc feidhmchláir

Roghnaigh fadhb atá deacair a réiteach le foirmle dúnta (m.sh., an fhréamh x³ − 2x − 5 = 0, nó an luach cinnte atá ag slánuimhir neamh-bhunscoile). Bíodh an cód uimhriúil agus, más féidir, an cód trassheiceáil siombalach-uimhriúil a phriontáil le teimpléid 1 agus 3. Rith an cód i dtimpeallacht Python fíor. Déan tástáil chiall choiteann ar dtús le hionchur aitheanta, ansin an fhadhb iarbhír a réiteach. Bí cinnte lamháltais a úsáid má tá comparáid snámhphointe ann. Tabhair faoi deara an toradh chomh maith lena íogaireacht.

seicliosta

  • [ ] D’aithin mé an fhadhb agus an íogaireacht a bhí ag teastáil.
  • [ ] Léigh mé agus thuig mé an cód a tháirgtear ag an AI líne ar líne.
  • [ ] Rith mé an cód i dtimpeallacht Python fíor.
  • [ ] Rinne mé tástáil chiall choiteann le hionchur aitheanta.
  • [ ] Chuir mé cros-seiceáil siombalach/láimhe leis más féidir.
  • [ ] Bhain mé úsáid as lamháltas i gcomparáidí snámhphointe.