Imaju isti. Pod kojim okolnostima identični redovi imaju istu referencu? Rješenja prikupljaju web obrazac za "Pod kojim okolnostima isti reci imaju istu referencu?"

Problem iz fizike - 2379

2017-03-16
Dvije jednake lopte imaju istu temperaturu. Jedna od kuglica je na vodoravnoj ravnini, druga je obješena na nit. Ista količina topline prenese se na obje lopte. Proces zagrijavanja odvija se toliko brzo da nema gubitka topline zbog zagrijavanja susjednih objekata i okoline. Hoće li temperature kuglica nakon zagrijavanja biti iste ili različite? Obrazložite svoj odgovor.


Riješenje:


Sl. 1

sl.2
Razlika će biti povezana s ponašanjem centara mase loptica.

Kako se kuglice zagrijavaju, neka im se volumen povećava. U tom slučaju će se visina središta mase prve lopte iznad horizontalne ravnine povećati (slika 1), a središte mase viseće lopte će se spustiti (slika 2).

Na temelju prvog zakona termodinamike možemo napisati:

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)$;

gdje je $x$ specifični toplinski kapacitet tvari od koje je napravljena lopta, $m$ je njezina masa.

Slijedi da je $\Delta T_(2) > \Delta T_(1)$, tj. kugla koja visi trebala bi se zagrijati na višu temperaturu od lopte koja leži na vodoravnoj površini. Procijenimo dobiveni učinak. Neka je polumjer lopte $R$, a koeficijent linearnog rastezanja materijala od kojeg je napravljena lopta jednak $\alpha$. Tada će omjer promjene temperature lopte zbog promjene položaja njezinog središta mase i promjene temperature $\Delta T$ zbog prenošenja količine topline $Q$ na lopticu biti jednak

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

Izračunavanjem procijenjenih vrijednosti, na primjer, za željeznu kuglu polumjera $R = 0,1 m (c = 450 J/(kg \cdot K), \alpha = 11,7 \cdot 10^(-6) K^(-1 ) )$, dobivamo: $\Delta T^( \prime) / \Delta T = 2,6 \cdot 10^(-8)$.

Stoga je učinak o kojem se raspravlja u problemu zanemariv i nalazi se izvan mogućnosti eksperimentalne detekcije.

Pretraživao sam web i pretraživao pitanja, ali nisam mogao pronaći odgovor na ovo pitanje. Zapažanje koje sam primijetio jest da u Pythonu 2.7.3, ako ste dodijelili dvije varijable istom nizu od jednog znaka, npr.

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

Varijable će tada imati istu referencu:

>>> a je b Točno >>> c je d Točno

Ovo također vrijedi za neke duže nizove:

>>> a = "abc" >>> b = "abc" >>> a je b Točno >>> " " je " " Točno >>> " " * 1 je " " * 1 Točno

>>> a = "ac" >>> b = "ac" >>> a je b False >>> c = " " >>> d = " " >>> c je d False >>> " " * 2 je " " * 2 False

Može li netko objasniti razlog za to?

Pretpostavljam da postoje pojednostavljenja/zamjene koje je napravio tumač i/ili neki mehanizam predmemoriranja koji iskorištava činjenicu da su nizovi nepromjenjivi za optimizaciju u nekim posebnim slučajevima, ali što ja znam? Pokušao sam napraviti dubinske kopije nizova koristeći str konstruktor i funkciju copy.deepcopy, ali nizovi su još uvijek nekompatibilni s referencama.

Razlog zbog kojeg imam problema je taj što testiram nejednakost reference niza u nekim jediničnim testovima koje pišem za nove metode kloniranja python klase.

3 rješenja prikupljaju web obrazac za "Pod kojim okolnostima isti reci imaju istu referencu?"

Pojedinosti o tome kada se nizovi pohranjuju u predmemoriju i ponovno koriste ovise o implementaciji, mogu se razlikovati od verzije Pythona do verzije Pythona i na njih se ne treba oslanjati. Ako želite testirati jednakost nizova, upotrijebite == umjesto .

U CPython (najčešće korištena Python implementacija), string literali koji se pojavljuju u izvornom kodu uvijek su internirani, tako da ako se isti string literal pojavi dvaput u izvornom kodu, oni na kraju pokazuju na isti string objekt. U Pythonu 2.x također možete pozvati ugrađenu funkciju intern() da prisilite interniranje određenog niza, ali to zapravo ne biste trebali činiti.

Promijeniti stvarna svrha provjere jesu li atributi neispravno raspoređeni između instanci: ova vrsta provjere je korisna samo za promjenjive objekte. Za atribute nepromjenjivog tipa ne postoji semantička razlika između zajedničkih i nedijeljenih objekata. Možete isključiti nepromjenjive tipove iz svojih testova pomoću

Immutable = basestring, tuple, numbers.Number, frozenset # ... if not isinstance(x, Immutable): # Isključi tipove za koje se zna da su nepromjenjivi

Imajte na umu da ovo također isključuje torke koje sadrže promjenjive objekte. Ako ih želite testirati morat ćete se rekurzivno spustiti u torke.

U CPythonu, kao detalj implementacije, prazan niz je uobičajen, kao i nizovi od jednog znaka čiji je kod u rasponu Latin-1. Vas Ne treba ovisiti o tome jer je moguće zaobići ovu značajku.

Možete zatražiti niz za internacija koristeći sys.intern ; to će se dogoditi automatski u nekim slučajevima:

Obično se imena koja se koriste u Python programima automatski interniraju, a rječnici koji se koriste za pohranjivanje atributa modula, klase ili instance imaju internirane ključeve.

sys.intern je izložen tako da ga možete koristiti (nakon profiliranja!) za performanse:

Unutarnji nizovi korisni su za postizanje malog učinka pri traženju rječnika - ako su ključevi u rječniku interni i ključ za pretraživanje je interniran, podudaranje ključeva (nakon raspršivanja) može se izvršiti pomoću usporedbi pokazivača umjesto usporedbi nizova.

Imajte na umu da je intern ugrađen u Python 2.

Mislim da je to implementacija i optimizacija. Ako je žica kratka, mogu se (i često?) "razdvojiti", ali ne možete se oslanjati na to. Kada budete imali više redaka, vidjet ćete da se ne podudaraju.

Ulaz: s1 = "abc" Ulaz: s2 = "abc" Ulaz: s1 je s2 Izlaz: Istina

duže linije

In : s1 = "abc ovo je puno duže" In : s2 = "abc ovo je mnogo duže" In : s1 je s2 Out: False

koristite == za usporedbu nizova (i Ne je operator).

Čini se da OP-ovo opažanje/hipoteza (u komentarima ispod) da bi to moglo biti povezano s brojem tokena podržava sljedeće:

Ulaz: s1 = "abc" Ulaz: s2 = "abc" Ulaz: s1 je s2 Izlaz: Netočno

u usporedbi s izvornim abc primjerom iznad.


Slika 3.2 - Formiranje kontura

obala u točkama B. Projiciranjem na istu ravninu P dobivamo drugu zatvorenu krivulju BB. Nastavljajući dizanje vode u istom nizu više, na ravnini P dobivamo sliku brda pomoću konturnih linija.

Radi veće preglednosti, smjer pada padina prikazan je crticama tzv berg udarci. Za označavanje visina vodoravnih crta, njihove oznake se potpisuju u prijelomima vodoravnih crta, postavljajući vrh brojeva u smjeru vrha kosine. Da bi reljef bio izražajniji, u pravilu se peta, a ponekad i deseta vodoravna crta zadebljaju.

Razlika visina dviju susjednih horizontalnih linija naziva se visina reljefnog presjeka.

Udaljenost između dvije susjedne vodoravne crte na ravnini naziva se razmak.

Horizontale imaju sljedeća svojstva:

  • a) sve točke koje leže na istoj vodoravnoj crti imaju istu visinu;
  • b) sve vodoravne linije moraju biti neprekinute;
  • c) vodoravne linije ne mogu se sijeći ili račvati;
  • d) razmaci između horizontalnih linija u tlocrtu karakteriziraju strminu padine - što je manja udaljenost (ležište), to je padina strmija;
  • e) najkraći razmak između horizontalnih linija odgovara smjeru najveće strmine padine;
  • f) razvodne linije i osi udubina sijeku vodoravne linije pod pravim kutom;
  • g) horizontalne crte koje predstavljaju nagnutu ravninu izgledaju kao paralelne ravne crte.

Često se za razjašnjavanje reljefnih oblika koriste dodatne vodoravne crte, koje su prikazane crtkano-točkastim linijama i nazivaju se polu-horizontalama. Tipično, poluhorizontale se obično crtaju u slučajevima kada razmak između vodoravnih linija na planu prelazi 2 cm. Na sl. 3.1, b prikazuje horizontalnu sliku pojedinih elemenata terena.

KATEGORIJE

POPULARNI ČLANCI

2023 “kingad.ru” - ultrazvučni pregled ljudskih organa