File:DiffusionMicroMacro.gif
מתוך Wikimedia Commons
קפיצה לניווט
קפיצה לחיפוש
DiffusionMicroMacro.gif (360 × 300 פיקסלים, גודל הקובץ: 402 ק"ב, סוג MIME: image/gif, בלולאה, 60 תמונות, 6.5 שניות)
מידע על הקובץ
נתונים מובְנים
כיתובים
קיימת תמונה חדשה תמונה זו בגרסה וקטורית בפורמט "SVG". יש להחליף את התמונה הנוכחית בתמונה החדשה.
File:DiffusionMicroMacro.gif → File:DiffusionMicroMacro.svg
למידע נוסף אודות גרפיקה וקטורית, אנא קראו אודות המעבר של ויקישיתוף לתמונות בפורמט SVG. ראו גם מידע אודות התמידה של מדיה-ויקי בתמונות בפורמט SVG.
|
תקציר
[עריכה]תיאורDiffusionMicroMacro.gif |
English: Diffusion from a microscopic and macroscopic point of view. Initially, there are solute molecules on the left side of a barrier (magenta line) and none on the right. The barrier is removed, and the solute diffuses to fill the whole container. Top: A single molecule moves around randomly. Middle: With more molecules, there is a clear trend where the solute fills the container more and more evenly. Bottom: With an enormous number of solute molecules, the randomness is gone: The solute appears to move smoothly and systematically from high-concentration areas to low-concentration areas, following Fick's laws.
Image is made in Mathematica, source code below. |
תאריך יצירה | |
מקור | נוצר על־ידי מעלה היצירה |
יוצר | Sbyrnes321 |
רישיון
[עריכה]Public domainPublic domainfalsefalse |
ברצוני, בעלי זכויות היוצרים על יצירה זו, לשחרר יצירה זו לנחלת הכלל. זה תקף בכל העולם. יש מדינות שבהן הדבר אינו אפשרי על פי חוק, אם כך: אני מעניק לכל אחד את הזכות להשתמש בעבודה זו לכל מטרה שהיא, ללא תנאים כלשהם, אלא אם כן תנאים כאלה נדרשים על פי חוק. |
<< Mathematica source code >>
(* Source code written in Mathematica 6.0, by Steve Byrnes, 2010. I release this code into the public domain. Sorry it's messy...email me any questions. *) (*Particle simulation*) SeedRandom[1]; NumParticles = 70; xMax = 0.7; yMax = 0.2; xStartMax = 0.5; StepDist = 0.04; InitParticleCoordinates = Table[{RandomReal[{0, xStartMax}], RandomReal[{0, yMax}]}, {i, 1, NumParticles}]; StayInBoxX[x_] := If[x < 0, -x, If[x > xMax, 2 xMax - x, x]]; StayInBoxY[y_] := If[y < 0, -y, If[y > yMax, 2 yMax - y, y]]; StayInBoxXY[xy_] := {StayInBoxX[xy[[1]]], StayInBoxY[xy[[2]]]}; StayInBarX[x_] := If[x < 0, -x, If[x > xStartMax, 2 xStartMax - x, x]]; StayInBarY[y_] := If[y < 0, -y, If[y > yMax, 2 yMax - y, y]]; StayInBarXY[xy_] := {StayInBarX[xy[[1]]], StayInBarY[xy[[2]]]}; MoveAStep[xy_] := StayInBoxXY[xy + {RandomReal[{-StepDist, StepDist}], RandomReal[{-StepDist, StepDist}]}]; MoveAStepBar[xy_] := StayInBarXY[xy + {RandomReal[{-StepDist, StepDist}], RandomReal[{-StepDist, StepDist}]}]; NextParticleCoordinates[ParticleCoords_] := MoveAStep /@ ParticleCoords; NextParticleCoordinatesBar[ParticleCoords_] := MoveAStepBar /@ ParticleCoords; NumFramesBarrier = 10; NumFramesNoBarrier = 50; NumFrames = NumFramesBarrier + NumFramesNoBarrier; ParticleCoordinatesTable = Table[0, {i, 1, NumFrames}]; ParticleCoordinatesTable[[1]] = InitParticleCoordinates; For[i = 2, i <= NumFrames, i++, If[i <= NumFramesBarrier, ParticleCoordinatesTable[[i]] = NextParticleCoordinatesBar[ParticleCoordinatesTable[[i - 1]]], ParticleCoordinatesTable[[i]] = NextParticleCoordinates[ParticleCoordinatesTable[[i - 1]]]];]; (*Plot full particle simulation*) makeplotbar[ParticleCoord_] := ListPlot[{ParticleCoord, {{xStartMax, 0}, {xStartMax, yMax}}}, Frame -> True, Axes -> False, PlotRange -> {{0, xMax}, {0, yMax}}, Joined -> {False, True}, PlotStyle -> {PointSize[.03], Thick}, AspectRatio -> yMax/xMax, FrameTicks -> None]; makeplot[ParticleCoord_] := ListPlot[ParticleCoord, Frame -> True, Axes -> False, PlotRange -> {{0, xMax}, {0, yMax}}, Joined -> False, PlotStyle -> PointSize[.03], AspectRatio -> yMax/xMax, FrameTicks -> None] ParticlesPlots = Join[Table[makeplotbar[ParticleCoordinatesTable[[i]]], {i, 1, NumFramesBarrier}], Table[makeplot[ParticleCoordinatesTable[[i]]], {i, NumFramesBarrier + 1, NumFrames}]]; (*Plot just the first particle in the list...Actually the fifth particle looks better. *) FirstParticleTable = {#[[5]]} & /@ ParticleCoordinatesTable; FirstParticlePlots = Join[Table[makeplotbar[FirstParticleTable[[i]]], {i, 1, NumFramesBarrier}], Table[makeplot[FirstParticleTable[[i]]], {i, NumFramesBarrier + 1, NumFrames}]]; (* Continuum solution *) (* I can use the simple diffusion-on-an-infinite-line formula, as long as I correctly periodically replicate the initial condition. Actually just computed nearest five replicas in each direction, that was a fine approximation. *) (* k = diffusion coefficient, visually matched to simulation. *) k = .0007; u[x_, t_] := If[t == 0, If[x <= xStartMax, 1, 0], 1/2 Sum[ Erf[(x - (-xStartMax + 2 n xMax))/Sqrt[4 k t]] - Erf[(x - (xStartMax + 2 n xMax))/Sqrt[4 k t]], {n, -5, 5}]]; ContinuumPlots = Join[ Table[Show[ DensityPlot[1 - u[x, 0], {x, 0, xMax}, {y, 0, yMax}, ColorFunctionScaling -> False, AspectRatio -> yMax/xMax, FrameTicks -> None], ListPlot[{{xStartMax, 0}, {xStartMax, yMax}}, Joined -> True, PlotStyle -> {Thick, Purple}]], {i, 1, NumFramesBarrier}], Table[ DensityPlot[1 - u[x, tt], {x, 0, xMax}, {y, 0, yMax}, ColorFunctionScaling -> False, AspectRatio -> yMax/xMax, FrameTicks -> None], {tt, 1, NumFramesNoBarrier}]]; (*Combine and export *) TogetherPlots = Table[GraphicsGrid[{{FirstParticlePlots[[i]]}, {ParticlesPlots[[i]]}, {ContinuumPlots[[i]]}}, Spacings -> Scaled[0.2]], {i, 1, NumFrames}]; Export["test.gif", Join[TogetherPlots, Table[Graphics[], {i, 1, 5}]], "DisplayDurations" -> {10}, "AnimationRepititions" -> Infinity ]
היסטוריית הקובץ
ניתן ללחוץ על תאריך/שעה כדי לראות את הקובץ כפי שנראה באותו זמן.
תאריך/שעה | תמונה ממוזערת | ממדים | משתמש | הערה | |
---|---|---|---|---|---|
נוכחית | 13:41, 7 במרץ 2012 | 300 × 360 (402 ק"ב) | Dratini0 (שיחה | תרומות) | Just removed the white last fram for aesthetic purposes, and prologed the display time of the last frame to mark the reatart of the animation. | |
19:37, 25 במרץ 2010 | 300 × 360 (402 ק"ב) | Aiyizo (שיחה | תרומות) | Optimized animation, converted to 256 color mode | ||
09:57, 16 בינואר 2010 | 300 × 360 (529 ק"ב) | Sbyrnes321 (שיחה | תרומות) | sped up bottom panel to match better with middle panel | ||
09:46, 16 בינואר 2010 | 300 × 360 (508 ק"ב) | Sbyrnes321 (שיחה | תרומות) | {{Information |Description={{en|1=Diffusion from a microscopic and macroscopic point of view. Initially, there are solute molecules on the left side of a barrier (purple line) and none on the right. The barrier is removed, and the solute diffuses to fill |
אין באפשרותך לדרוס את הקובץ הזה.
שימוש בקובץ
הדף הבא משתמש בקובץ הזה:
שימוש גלובלי בקובץ
אתרי הוויקי השונים הבאים משתמשים בקובץ זה:
- שימוש באתר ar.wikipedia.org
- שימוש באתר ast.wikipedia.org
- שימוש באתר bn.wikipedia.org
- שימוש באתר ca.wikipedia.org
- שימוש באתר cy.wikipedia.org
- שימוש באתר el.wikipedia.org
- שימוש באתר en.wikipedia.org
- שימוש באתר es.wikipedia.org
- שימוש באתר et.wikipedia.org
- שימוש באתר fa.wikipedia.org
- שימוש באתר fi.wikipedia.org
- שימוש באתר fr.wikipedia.org
- שימוש באתר ga.wikipedia.org
- שימוש באתר gl.wikipedia.org
- שימוש באתר he.wikipedia.org
- שימוש באתר hi.wikipedia.org
- שימוש באתר is.wikipedia.org
- שימוש באתר kk.wikipedia.org
- שימוש באתר ko.wikipedia.org
- שימוש באתר no.wikipedia.org
- שימוש באתר pl.wikipedia.org
- שימוש באתר pt.wikipedia.org
- שימוש באתר ro.wikipedia.org
- שימוש באתר sh.wikipedia.org
- שימוש באתר sk.wikipedia.org
- שימוש באתר sl.wikipedia.org
- שימוש באתר sr.wikipedia.org
- שימוש באתר ta.wikipedia.org
צפייה בשימושים גלובליים נוספים של קובץ זה.