İstediğimi yapmak için sözdizimini alamıyorum ve şimdi bile mümkün olup olmadığından emin değilim., Manipulate içindeki kontrol değişkenlerini ayarlamak için Dynamic'in ikinci argümanını kullanmak mümkün mü?
küçük inceleme: bir yapabilir: hemen her zaman
{Slider[Dynamic[b], {-2 Pi, 2 Pi}], Dynamic[Sin[b]]}
ve sürgü hareket ettikçe, 'b' değişiklikler ve Sin [] otomatik olarak yazdırılır
Ama hesaplamayı (Sin []) doğrudan kaydın olduğu ve sadece Sin'in [Nihai] sonucunu gösterdiği yerde yapmak istediğimi varsayalım, o zaman bu gibi Dinamik'in ikinci argümanını kullanabilirim:
{Slider[Dynamic[b, (b = #; a = Sin[b]; #) &], {-2 Pi, 2 Pi}],
Dynamic[a]}
Şimdi işleyin kullanın ve aynı şeyi yapmak istiyorum. Yukarıda ise
Manipulate[
Sin[b],
Control[{{b, 0, "b="}, -2 Pi, 2 Pi, ControlType -> Slider}]
]
işleyin 'dinamik' şeyler hallettim ve güncellenmiş Sin [b] her 'B' değişiklikler: Böyle yukarıdaki ilk örnekle aynı yapabilir .
Şimdi, ben işleyin kullanarak ikinci durumda yapabileceğini görmek istiyorum, bu yüzden yazabilirsiniz:
Manipulate[
a,
Control[{{b, 0, "b="}, -2 Pi, 2 Pi, ControlType -> Slider}] (*where to insert Sin[b]?*)
]
('a' ilk gösterimi için bazı değerine başlatılan zorundadır).
Ancak, yukarıdaki "b" için ikinci bağımsız değişkeni nasıl kullanacağımı anlayamıyorum. Sözdizimini anlayamıyorum ve şimdi mümkün olursa emin misiniz?
elbette, biri sadece bu kontrolleri işleyin bile geçerli sözdizimi değil
Manipulate[
a,
{Slider[Dynamic[b, (b = #; a = Sin[b]; #) &], {-2 Pi, 2 Pi}]}
]
yazamazsınız.
Soru: Manipulate denetimlerini ayarlamada Dynamic'in ikinci argümanını kullanmak mümkün mü?
Sormamın nedeni, kontrol değişkeninin değiştiği yerde hesaplamayı 'yerelleştirmeyi' kolaylaştırabilmesi ve yalnızca başka bir yerde yalnızca nihai sonucu göstermesidir. Yerel bir geriçağırım işlevi gibi, her bir kontrolün değişmesiyle ilgili hesaplamanın, kontrolün hemen yanında yer alması gibi.
sayesinde
Güncelleme 9/16/11
Eh, mücadelenin bir ay sonra, nihayet ben Mathematica CDF'yi kuruldu ve çalışıyor.
Bu CDF'yi (Leonid, Heike, WReach, Belisarius ve diğerleri) yaparken, Simon ve diğer sorularıma yanıt veren diğer kişiler tarafından gösterilen hile yardımıyla.
Burada öğrendiğim birkaç hile burada, bu gösteri bitirmek yardımcı birisi bunu denemek istiyorsa link olduğunu.
bu CDF'nin tasarımı daha önce yaptıklarımdan farklı. Sonlu durum makinesine dayanmaktadır. Tüm CDF'de sadece bir tane izlenen sembol var. İkinci dinamik argümanını kullanarak, olay isminin kaydı ve sonlu durum makinelerini çalıştıran Manipulate'nin ana ifadesinde, içinde bulunabileceği 5 durum vardır ve 8 olay vardır. Mevcut duruma ve gerçekleşen mevcut duruma bağlı olarak, yeni duruma geçer (veya bağlı olarak aynı durumda kalabilir) ve ana ekran güncellenir. Tetik gerekmiyor. Durum makinesi, izin verdiğiniz kadar hızlı çalışır, yalnızca zaman adımı büyüklüğünde kontrol edilir. Her şey şimdi iyi kontrollü bir şekilde çalışır ve tüm mantık tek bir yerde olduğundan,
Bu büyük ölçüde mantık basitleştirir ve çok daha gelişmiş UI ve birbirine bağlı mantık yapmak işlemek mümkün kılar. dinamiklerinin ikinci argümanı kullanarak olayı ayarlamak mümkün olan vermeden
, bütün bu yaklaşım mümkün olmazdı.
bunu daha net hale getirmek için bu yöntem üzerinde bir not yazmak gerekir.
Yani, sadece burada herkese teşekkür etmek istedim. Şimdi bu yöntemi kullanarak üçlü bir sarkaç simülasyonu ile başka bir CDF bitiriyorum.
Vay, son sonuç gerçekten güzel görünüyor! Makinemde yavaş çalışır, ama çoğu şey yapar ... Tarayıcı eklentisini kullanamayanlar için bir indirme bağlantısı sağlayabilseydin çok hoş olurdu. – Simon
@Simon, CDF ve dizüstü bilgisayarın kendisi için 2 link ekledim. http://12000.org/my_notes/mma_demos/simple_pendulum_damped_driven/index.htm olabildiğince hızlı çalışır, izlenen Dinamik dışında bir saat yoktur. – Nasser
Şimdi 'yavaşlık' konusunda daha iyi bir fikrim var. Daha fazla şey görüntülendiğinde, ekrana yapılan güncelleme daha fazla zaman almaya başlar ve ekranın her seferinde boyanması için bekleyen tüm döngü yavaşlar. CDF demoları ile daha yüksek fps almak benim için bir sorun oldu. Bunu daha verimli hale getirmek için hileler olup olmadığını bilmiyorum. Ama kesinlikle buna bağlı gibi görünüyor. Görüntülenecek grafik/grafik sayısını azalttığımda, simülasyon daha hızlı çalışır. Hiçbir saat kullanılmaz, sadece içindeki [Grafik [..]] ile bir döngü. Son bitirdiğim CDF bu sorunu çok net bir şekilde gösterdi. – Nasser