File:DiffusionMicroMacro.gif
از Wikimedia Commons
پرش به ناوبری
پرش به جستجو
DiffusionMicroMacro.gif (۳۶۰ × ۳۰۰ پیکسل، اندازهٔ پرونده: ۴۰۲ کیلوبایت، نوع MIME پرونده: image/gif، چرخشدار، ۶۰ قاب، ۶٫۵ ثانیه)
اطلاعات پرونده
دادههای ساختاریافته
گزینهها
خلاصه[ویرایش]
توضیح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 ]
تاریخچهٔ پرونده
روی تاریخ/زمانها کلیک کنید تا نسخهٔ مربوط به آن هنگام را ببینید.
تاریخ/زمان | بندانگشتی | ابعاد | کاربر | توضیح | |
---|---|---|---|---|---|
کنونی | ۷ مارس ۲۰۱۲، ساعت ۱۳:۴۱ | ۳۶۰ در ۳۰۰ (۴۰۲ کیلوبایت) | 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. | |
۲۵ مارس ۲۰۱۰، ساعت ۱۹:۳۷ | ۳۶۰ در ۳۰۰ (۴۰۲ کیلوبایت) | Aiyizo (بحث | مشارکتها) | Optimized animation, converted to 256 color mode | ||
۱۶ ژانویهٔ ۲۰۱۰، ساعت ۰۹:۵۷ | ۳۶۰ در ۳۰۰ (۵۲۹ کیلوبایت) | Sbyrnes321 (بحث | مشارکتها) | sped up bottom panel to match better with middle panel | ||
۱۶ ژانویهٔ ۲۰۱۰، ساعت ۰۹:۴۶ | ۳۶۰ در ۳۰۰ (۵۰۸ کیلوبایت) | 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
- کاربرد در 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
- کاربرد در vi.wikipedia.org
- کاربرد در zh.wikipedia.org
نمایش استفادههای سراسری از این پرونده.