Aynısına sahipler. Aynı diziler hangi koşullar altında aynı referansa sahiptir? Çözümler, "Hangi durumlarda aynı satırlar aynı bağlantıya sahiptir?"

Fizikte problem - 2379

2017-03-16
İki özdeş bilye aynı sıcaklığa sahiptir. Toplardan biri yatay bir düzlemde, diğeri bir ipe asılmıştır. Her iki küreye de aynı miktarda ısı aktarılır. Isıtma işlemi o kadar hızlıdır ki, komşu nesneleri ve çevreyi ısıtmak için herhangi bir ısı kaybı olmaz. Topların sıcaklıkları ısıtıldıktan sonra aynı mı yoksa farklı mı olacak? Cevabı gerekçelendirin.


Çözüm:


şekil 1

incir. 2
Fark, topların kütle merkezlerinin davranışı ile ilgili olacaktır.

Toplar ısındıkça hacimlerinin artmasına izin verin. Bu durumda birinci topun kütle merkezinin yatay düzlemden yüksekliği artacak (Şekil 1) ve asılı duran topun ağırlık merkezi düşecektir (Şekil 2).

Termodinamiğin birinci yasasına dayanarak şunu yazabiliriz:

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

$x$, topun yapıldığı maddenin özgül ısısı, $m$ ise kütlesidir.

Bu, $\Delta T_(2) > \Delta T_(1)$, yani asılı topun yatay bir yüzey üzerinde duran toptan daha yüksek bir sıcaklığa ısıtılması gerektiği anlamına gelir. etkisini değerlendirelim. Topun yarıçapı $R$ olsun ve topun yapıldığı malzemenin lineer genleşme katsayısı $\alpha$ olsun. Daha sonra, kütle merkezinin konumundaki değişiklik nedeniyle topun sıcaklığındaki değişikliğin, kendisine verilen ısı miktarı $Q$ nedeniyle sıcaklıktaki $\Delta T$ değişikliğine oranı şuna eşit olacaktır:

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

Örneğin, $R = 0,1 m (c=450 J/(kg \cdot K), \alpha = 11,7 \cdot 10^(-6) K^(-1) yarıçaplı bir demir top için tahmini değerleri hesapladıktan sonra ) )$, şunu elde ederiz: $\Delta T^( \prime) / \Delta T = 2,6 \cdot 10^(-8)$.

Bu nedenle, problemde tartışılan etki önemsizdir ve deneysel saptama olasılığının ötesindedir.

Web sayfalarını aradım ve sorularla dolup taştım ama bu sorunun cevabını bulamadım. Yaptığım gözlem, Python 2.7.3'te, aşağıdaki gibi aynı tek karakter dizisine iki değişken atarsanız:

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

O zaman değişkenler aynı referansa sahip olacaktır:

>>> a, b'dir Doğru >>> c, d'dir Doğru

Bu, bazı daha uzun dizeler için de geçerlidir:

>>> a = "abc" >>> b = "abc" >>> a b Doğru >>> " " " " Doğru >>> " " * 1 " " * 1 Doğru

>>> a = "ac" >>> b = "ac" >>> a, b Yanlış >>> c = " " >>> d = " " >>> c, d Yanlış >>> " " * 2 " " * 2 Yanlış

Birisi bunun nedenini açıklayabilir mi?

Bazı özel durumlarda dizelerin değişmez olması gerçeğinden yararlanan tercüman ve/veya bazı önbellekleme mekanizmaları tarafından yapılan basitleştirmeler/değiştirmeler olabileceğinden şüpheleniyorum, ancak ne biliyorum? str yapıcısını ve copy.deepcopy işlevini kullanarak dizelerin derin kopyalarını oluşturmaya çalıştım, ancak dizeler hala referanslarla uyumsuz.

Sorun yaşamamın nedeni, yeni stil python sınıfı klonlama yöntemleri için yazdığım bazı birim testlerinde dize referans eşitsizliğini kontrol etmem.

3 Çözümler, "Hangi durumlarda aynı diziler aynı bağlantıya sahiptir?"

Dizelerin ne zaman önbelleğe alınıp yeniden kullanıldığına ilişkin ayrıntılar uygulamaya bağlıdır, Python sürümünden Python sürümüne değişebilir ve bunlara güvenilemez. Dizeleri eşitlik açısından kontrol etmek istiyorsanız, bunun yerine == kullanın.

CPython'da (en sık kullanılan Python uygulaması), kaynak kodda oluşan dize sabit değerleri her zaman iç içedir, bu nedenle aynı dize değişmez değeri kaynak kodunda iki kez ortaya çıkarsa, aynı dize nesnesine işaret ederler. Python 2.x'te, belirli bir dizide staj yapmaya zorlamak için intern() yerleşik işlevini de çağırabilirsiniz, ancak bunu gerçekten yapmak zorunda değilsiniz.

Değiştirmeközniteliklerin örnekler arasında düzgün bir şekilde dağıtılıp dağıtılmadığını kontrol etmenin asıl amacı: bu tür bir kontrol yalnızca değiştirilebilir nesneler için kullanışlıdır. Sabit bir türdeki öznitelikler için, paylaşılan ve paylaşılmayan nesneler arasında anlamsal bir fark yoktur. Değişmez türleri kullanarak testlerinizden hariç tutabilirsiniz.

Immutable = basestring, demet, sayılar.Number, frozenset # ... if not isinstance(x, Immutable): # Sabit olduğu bilinen türleri hariç tutun

Bunun, değişken nesneler içeren demetleri de hariç tuttuğunu unutmayın. Onları test etmek istiyorsanız, yinelemeli olarak demetlere inmeniz gerekecektir.

CPython'da, bir uygulama ayrıntısı olarak, kodu Latin-1 aralığında olan tek karakterli dizeler gibi boş dize yaygındır. Sen Olumsuz Bu özelliği atlamak mümkün olduğundan buna bağlı olmalıdır.

için bir dizi talep edebilirsiniz. hapsetme sys.intern kullanarak; bu, bazı durumlarda otomatik olarak gerçekleşir:

Tipik olarak, Python programlarında kullanılan adlar otomatik olarak iç içe geçirilir ve modül, sınıf veya örnek özniteliklerini depolamak için kullanılan sözlüklerde iç anahtarlar bulunur.

sys.intern, performans için (profil oluşturduktan sonra!) kullanabilmeniz için ayarlanmıştır:

Dahili diziler, sözlükleri ararken biraz performans elde etmek için kullanışlıdır - sözlükteki anahtarlar iç içe ve arama anahtarı iç ise, anahtar eşleştirme (karma işleminden sonra), dize karşılaştırması yerine işaretçi karşılaştırması ile yapılabilir.

Stajyerin Python 2'de bir yerleşik olduğunu unutmayın.

Bence uygulama ve optimizasyon. Dize kısaysa, "ayrılabilirler" (ve genellikle?), ancak buna güvenemezsiniz. Daha fazla satırınız olduğunda, bunların eşleşmediğini göreceksiniz.

In : s1 = "abc" In : s2 = "abc" In : s1, s2'dir Out: True

daha uzun çizgiler

In : s1 = "abc bu çok daha uzun" In : s2 = "abc bu çok daha uzun" In : s1 s2 Out: False

dizeleri karşılaştırmak için == kullanın (ve Olumsuz operatörüdür).

OP'nin gözlemi/hipotezi (aşağıdaki yorumlarda), bunun belirteç sayısıyla ilgili olabileceğine dair aşağıdakiler tarafından destekleniyor gibi görünüyor:

In : s1 = "abc" In : s2 = "abc" In : s1 s2'dir Out: False

yukarıdaki orijinal abc örneğiyle karşılaştırıldığında.


Şekil 3.2 - Kontur çizgilerinin oluşumu

kıyı şeridini aynı P düzlemine izdüşümleyerek, ikinci kapalı eğri BB çizgisini elde ederiz. Suyun yükselişini yukarıdaki sırayla devam ettirerek, P düzleminde kontur çizgileri kullanarak bir tepe görüntüsü elde ederiz.

Daha fazla netlik için, eğimlerin alçaltma yönü, adı verilen çizgilerle gösterilir. berghaşlar. Kontur çizgilerinin yüksekliklerini belirtmek için, kontur çizgilerinin kırılmalarında işaretleri, sayıların üstünü eğimin tepesi yönünde yerleştirerek imzalanır. Kabartmanın daha fazla ifade edilmesi için, kural olarak, beşinci ve bazen onuncu yatay çizgi kalınlaştırılır.

Birbirine komşu iki yatayın yükseklik farkı kabartma kesitin yüksekliği olarak adlandırılır.

Bir düzlemde bitişik iki yatay arasındaki mesafeye döşeme denir.

Yataylar aşağıdaki özelliklere sahiptir:

  • a) aynı yatay çizgi üzerinde bulunan tüm noktalar aynı yüksekliğe sahiptir;
  • b) tüm yatay çizgiler sürekli olmalıdır;
  • c) yatay çizgiler kesişemez veya çatallanamaz;
  • d) plandaki yataylar arasındaki mesafeler eğimin dikliğini karakterize eder - mesafe (döşeme) ne kadar küçük olursa, eğim o kadar dik olur;
  • e) yataylar arasındaki en kısa mesafe, eğimin en büyük dikliğinin yönüne karşılık gelir;
  • f) havza çizgileri ve oyukların eksenleri yatay çizgileri dik açılarda keser;
  • g) eğimli bir düzlemi gösteren yatay çizgiler paralel düz çizgiler biçimindedir.

Genellikle, kabartma formlarını iyileştirmek için, kesikli çizgilerle gösterilen ve yarı yatay olarak adlandırılan ek yatay çizgiler kullanılır. Plandaki yataylar arasındaki mesafenin 2 cm'yi aştığı durumlarda genellikle yarı yataylar yapmak gelenekseldir. 3.1, b, arazinin ayrı ayrı elemanlarının kontur çizgilerinin görüntüsünü gösterir.

KATEGORİLER

POPÜLER MAKALELER

2023 "kingad.ru" - insan organlarının ultrason muayenesi