Au aceeasi. În ce circumstanțe șirurile identice au aceeași referință? Soluțiile colectează formulare web pentru „În ce circumstanțe rândurile identice au același link?”

Problemă de fizică - 2379

2017-03-16
Două bile identice au aceeași temperatură. Una dintre bile se află pe un plan orizontal, cealaltă este suspendată de un fir. Aceeași cantitate de căldură este transferată în ambele sfere. Procesul de încălzire este atât de rapid încât nu există pierderi de căldură pentru încălzirea obiectelor învecinate și a mediului. Temperaturile bilelor vor fi aceleași sau diferite după încălzire? Justificați răspunsul.


Soluţie:


fig.1

fig.2
Diferența va fi legată de comportamentul centrelor de masă ale bilelor.

Lăsați volumele bilelor să crească pe măsură ce se încălzesc. În acest caz, înălțimea centrului de masă al primei bile deasupra planului orizontal va crește (Fig. 1), iar centrul de masă al bilei suspendate va scădea (Fig. 2).

Pe baza primei legi a termodinamicii, putem scrie:

a) $Q = cm \Delta T_(1) + mgh, \Delta T_(1) = \frac(Q - mgh)(cm)$;
b) $Q = cm \Delta T_(2) - mgh, \Delta T_(2) = \frac(Q + mgh)(cm)$;

unde $x$ este căldura specifică a substanței din care este făcută bila, $m$ este masa acesteia.

Aceasta implică faptul că $\Delta T_(2) > \Delta T_(1)$, adică bila agățată trebuie încălzită la o temperatură mai mare decât bila care se află pe o suprafață orizontală. Să evaluăm efectul. Fie raza bilei $R$, iar coeficientul de dilatare liniară a materialului din care este făcută bila să fie egal cu $\alpha$. Atunci raportul dintre modificarea temperaturii mingii datorată schimbării poziției centrului său de masă și modificarea temperaturii $\Delta T$ datorită cantității de căldură $Q$ care i se imparte va fi egal cu

$\frac( \Delta T^( \prime))( \Delta T) = \frac(mgh)(cm \Delta T) = \frac(mgR \alpha \Delta T)(cm \Delta T) = \frac (g)(c) R\alpha$.

După ce s-au calculat valorile estimate, de exemplu, pentru o minge de fier cu raza $R = 0,1 m (c=450 J/(kg \cdot K), \alpha = 11,7 \cdot 10^(-6) K^(-1) ) )$, obținem: $\Delta T^( \prime) / \Delta T = 2,6 \cdot 10^(-8)$.

Astfel, efectul discutat în problemă este neglijabil și se află dincolo de posibilitatea detectării experimentale.

Am căutat pe paginile web și am plin de întrebări, dar nu am găsit un răspuns la această întrebare. Observația pe care am făcut-o este că în Python 2.7.3 dacă atribuiți două variabile aceluiași șir de caractere, cum ar fi

>>> a = "a" >>> b = "a" >>> c = " " >>> d = " "

Atunci variabilele vor avea aceeași referință:

>>> a este b Adevărat >>> c este d Adevărat

Acest lucru este valabil și pentru unele șiruri mai lungi:

>>> a = "abc" >>> b = "abc" >>> a este b adevărat >>> " " este " " adevărat >>> " " * 1 este " " * 1 adevărat

>>> a = "ac" >>> b = "ac" >>> a este b Fals >>> c = " " >>> d = " " >>> c este d Fals >>> " " * 2 este „ ” * 2 Fals

Poate cineva să explice motivul pentru asta?

Bănuiesc că pot exista simplificări/înlocuiri făcute de interpret și/sau vreun mecanism de stocare în cache care profită de faptul că șirurile sunt imuabile pentru optimizare în unele cazuri speciale, dar ce știu? Am încercat să fac copii profunde ale șirurilor folosind constructorul str și funcția copy.deepcopy, dar șirurile sunt încă incompatibile cu referințele.

Motivul pentru care am probleme este că verific inegalitatea referințelor șirurilor în unele teste unitare pe care le scriu pentru metodele de clonare a clasei Python în stil nou.

3 Soluții colectează formulare web pentru „În ce circumstanțe rândurile identice au același link?”

Detaliile despre momentul în care șirurile sunt stocate în cache și reutilizate depind de implementare, pot varia de la o versiune Python la o versiune Python și nu pot fi bazate pe acestea. Dacă doriți să verificați șirurile de caractere pentru egalitate, utilizați == în schimb.

În CPython (cea mai des folosită implementare Python), literalele șir care apar în codul sursă sunt întotdeauna internate, așa că dacă același literal șir apare de două ori în codul sursă, ajung să indice același obiect șir. În Python 2.x, puteți apela și funcția încorporată intern() pentru a forța un stagiu pe un anumit șir, dar nu trebuie să faceți asta.

Schimbare scopul real de a verifica dacă atributele nu sunt distribuite corect între instanțe: acest tip de verificare este util doar pentru obiectele mutabile. Pentru atributele de tip imuabil, nu există nicio diferență semantică între obiectele partajate și nepartajate. Puteți exclude tipurile imuabile din teste folosind

Imuabil = șir de bază, tuplu, numere. Număr, set înghețat # ... dacă nu esteinstanță(x, Imuabil): # Excludeți tipurile cunoscute ca fiind imuabile

Rețineți că acest lucru exclude și tuplurile care conțin obiecte mutabile. Dacă doriți să le testați, va trebui să coborâți recursiv în tupluri.

În CPython, ca detaliu de implementare, șirul gol este comun, la fel și șirurile cu un singur caracter al căror cod este în intervalul Latin-1. Tu nu ar trebui să depindă de acest lucru, deoarece este posibil să ocoliți această caracteristică.

Puteți solicita un șir pentru internare folosind sys.intern ; acest lucru se va întâmpla automat în unele cazuri:

În mod obișnuit, numele folosite în programele Python sunt internate automat, iar dicționarele folosite pentru a stoca atributele de module, clase sau instanțe au chei interne.

sys.intern este setat astfel încât să îl puteți utiliza (după profilare!) pentru performanță:

Șirurile interne sunt utile pentru a obține un pic de performanță atunci când căutați dicționare - dacă cheile din dicționar sunt internate și cheia de căutare este internată, potrivirea cheilor (după hashing) se poate face cu compararea pointerului în loc de compararea șirurilor.

Rețineți că intern este o versiune încorporată în Python 2.

Cred că este implementare și optimizare. Dacă șirul este scurt, se pot „separa” (și adesea?), dar nu poți depinde de asta. Odată ce ai mai multe rânduri, vei vedea că nu se potrivesc.

In: s1 = "abc" In: s2 = "abc" In: s1 este s2 Out: True

linii mai lungi

În : s1 = „abc aceasta este mult mai lungă” În : s2 = „abc aceasta este mult mai lungă” În : s1 este s2 Out: Fals

utilizați == pentru a compara șiruri (și nu este operator).

Observația/ipoteza OP (în comentariile de mai jos) că aceasta ar putea fi legată de numărul de jetoane pare să fie susținută de următoarele:

In: s1 = "abc" In: s2 = "abc" In: s1 este s2 Out: Fals

în comparație cu exemplul original abc de mai sus.


Figura 3.2 - Formarea liniilor de contur

linia de coastă în punctele B. Proiectând-o pe același plan P, obținem a doua linie curbă închisă BB. Continuând creșterea apei în aceeași secvență de mai sus, pe planul P obținem o imagine a unui deal folosind curbe de nivel.

Pentru o mai mare claritate, direcția de coborâre a pantelor este indicată prin liniuțe numite berghashes. Pentru a indica înălțimile curbelor de nivel, semnele acestora sunt semnate în întreruperile curbelor de nivel, plasând vârful numerelor în direcția vârfului pantei. Pentru o mai mare expresivitate a reliefului, de regulă, a cincea, și uneori a zecea linie orizontală este îngroșată.

Diferența de înălțime a două orizontale adiacente se numește înălțimea secțiunii de relief.

Distanța dintre două orizontale adiacente pe un plan se numește așezare.

Orizontale au următoarele proprietăți:

  • a) toate punctele situate pe aceeași linie orizontală au aceeași înălțime;
  • b) toate liniile orizontale trebuie să fie continue;
  • c) liniile orizontale nu se pot intersecta sau bifurca;
  • d) distanțele dintre orizontale din plan caracterizează abruptul pantei - cu cât distanța (pozarea) este mai mică, cu atât panta este mai abruptă;
  • e) cea mai scurtă distanță dintre orizontale corespunde direcției celei mai mari abrupte a pantei;
  • f) liniile de distribuție a apelor și axele golurilor intersectează linii orizontale în unghi drept;
  • g) orizontale care înfățișează un plan înclinat au forma unor drepte paralele.

Adesea, pentru a rafina formele de relief, sunt folosite orizontale suplimentare, care sunt descrise prin linii punctate și sunt numite semi-orizontale. De obicei, se obișnuiește să se efectueze semi-orizontale în acele cazuri când distanța dintre orizontale de pe plan depășește 2 cm. În fig. 3.1, b prezintă imaginea curbelor de nivel ale elementelor individuale ale terenului.

CATEGORII

ARTICOLE POPULARE

2022 "kingad.ru" - examinarea cu ultrasunete a organelor umane