Mathematica

O matematiki, številih, množicah in računih...
Odgovori
Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Mathematica

Odgovor Napisal/-a Aniviller »

t>0 je cisto jasno definirano: vsako stevilo, ki je predstavljivo v dani natancnosti, in ni negativno ali enako nic. Najmanjse nenicelno stevilo je v "double" natancnosti okrog 10^-308.

10^-16 je nekaj drugega: to je RELATIVNA natancnost podatkov (stevilo decimalk).

Motore
Prispevkov: 1088
Pridružen: 9.9.2009 23:28

Re: Mathematica

Odgovor Napisal/-a Motore »

Pozdravljeni,

Pri tej DN smo morali z algoritmom naredit trapezno in simpsonovo metodo za numerično rač. integrala \(\int_{0}^{\infty}x^2e^{-x}\), kjer je input interval [a,b] in št. točk, s katerimi integracijski interval razdelimo. Zatakne se mi pri dodatni nalogi:
Obravnavajte polnjenje kondenzatorja C preko upora R pri stalni napetosti U0. To vas
pripelje do znane enačbe
\(\int_{0}^{q(t)}\frac{dq}{CU_0-q}=\frac{t}{RC}\)
Tukaj lahko damo, da je RC=1 in CU0=1, torej je enačba naslednja \(\int_{0}^{q(t)}\frac{dq}{1-q}=t\).
Sedaj moram s pomočjo algoritma numerično poračunati časovno odvisnost q(t).
Problem je seveda v tem, da je v tem primeru t naš izračunan integral (ploščina), iščemo pa zgornjo mejo intervala (q(t)).

A bi se dalo nekako spremenit trapezno metodo, da bi prišli do rezultata?
Poskušal sem več variant, ampak nekako mi ne uspe. Tukaj je koda za mojo trapezno:

Koda: Izberi vse

f[x_] := x^2*E^(-x);

trapezna[a0_, b0_, n0_] :=
 Module[{a = a0, b = N[b0], n = N[n0]},
  If[n > 100000, 
   Print[Style[" Predolg čas računanja, vpiši manjše št. točk", 14, 
     FontFamily -> "Helvetica"]],
   If[b > 1000, h = Abs[1000 - a]/(n + 1), h = Abs[b - a]/(n + 1)];
   i = 0;
   I0 = 0;
   While[i < n + 1,
    I0 = I0 + (h/2)*(f[a] + f[a + h]);
    a = a + h;
    i++];
   Print[Style[" Vrednost integrala v mejah od ", 14, 
     FontFamily -> "Helvetica"], 
    Style[a0, 14, FontFamily -> "Helvetica"], 
    Style[" do ", 14, FontFamily -> "Helvetica"], 
    Style[b0, 14, FontFamily -> "Helvetica"], 
    Style[" je ", 14, FontFamily -> "Helvetica"], 
    Style[NumberForm[I1, 10], 14, FontFamily -> "Helvetica"]]]]

trapezna[0, Infinity, 100000]

 Vrednost integrala v mejah od 0 do ∞ je 2.
Hvala za odgovor in lep pozdrav.

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Mathematica

Odgovor Napisal/-a Aniviller »

Hm... to je glavna razlika med resevanjem diferencialnih enacb in med integracijo po znanem intervalu. V bistvu lahko tabeliras t(q) po korakih trapezne metode in obrnes tabelo (zamenjas spremenljivki) ampak to ni namen te metode - trapezna/simpsonova je ponavadi za direktno integracijo dolocenih integralov. Lahko bi naredil zelo grdo in pocasno stvar in klical FindRoot (ali rocno napisal bisekcijo), ki bi vzela tvoj integral kot funkcijo, ampak to je se manj primerno :)

Motore
Prispevkov: 1088
Pridružen: 9.9.2009 23:28

Re: Mathematica

Odgovor Napisal/-a Motore »

V bistvu sem jaz slabo razumel nalogo. Vstavljaš naboj, računaš pa čas, kar pomeni, da se mi ne bi bilo treba ubadat s tem 3 dni :D
Sicer sem bil v dvomih ali prav razumem ali ne, ampak naloga z iskanjem časa se mi je zdela prelahka in zato sem preskočil na težjo verzijo. Nič hudega :)

Hvala za odgovor.

student2
Prispevkov: 17
Pridružen: 29.9.2012 13:15

Re: Mathematica

Odgovor Napisal/-a student2 »

Prosil bi za malo pomoči glede Mathematice. Imamo txt datoteko kjer je text in številčni podatki.

Datoteko importam v Mathematico. Zanima me, kakšen ukaz uporabiti, da mi iz omenjene datoteke prebere samo števila? Poizkušal sem že z ReadList[...,Number] in ne gre.

Hvala

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Mathematica

Odgovor Napisal/-a Aniviller »

Huh... to je malo zoprna zahteva za direktno Mathematico. Ce si na linuxu, potem je resitev stvar ene vrstice. Sicer pa ne vem...

student2
Prispevkov: 17
Pridružen: 29.9.2012 13:15

Re: Mathematica

Odgovor Napisal/-a student2 »

Ja, verjeno bolj primeren mogoče Matlab. Problem je, da imam veliko podatkov in gre zelo veliko časa, če jih urejam ročno, se pravi da brišem text, kopiram stolpce in podobobno. Hvala vseeno, bom poizkušal nekako rešiti

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Mathematica

Odgovor Napisal/-a Aniviller »

Saj pravim - z osnovnimi orodji bi ta proces odstranjevanja teksta popolnoma avtomatiziral. Ti matematicni programi niso specializirani za obdelavo teksta in uvazanja vsakega zelo specialnega formata podatkov. Niso predvideni za to. Ce hoces premlevat besedilo (pa tudi ce samo odstranis vse kar niso stevilke), to naredis z drugimi orodji.

Motore
Prispevkov: 1088
Pridružen: 9.9.2009 23:28

Re: Mathematica

Odgovor Napisal/-a Motore »

Pozdravljeni,

Imam nekaj problemov pri naslednji nalogi:

Analizirajte problem skupkov NaCl. Potencialno energijo para ionov i,j lahko zapišemo kot:

\(W_{ep}(r_{i,j}) =
\begin{cases}
-\frac{e^2}{r_{i,j}}+\alpha \exp[-\frac{r_{i,j}}{\rho}]+b(\frac{c}{r_{i,j}})^{12} \\
\frac{e^2}{r_{i,j}}+b(\frac{c}{r_{i,j}})^{12}
\end{cases}\)


Prva je za Na+ Cl- par, druga za Na+ Na+ ali Cl- Cl- pare.

\(e, \alpha, b, c, \rho\) imam podane.

Z Downhill simplex metodo določite ravnovesno strukturo Na2Cl+ (sedaj torej obravnavate tri ione,
dva iona Na+ in en ion Cl-). Pri tem se omejite samo na planarne strukture – optimizirajte položaj Na+
in Cl- ionov samo v ravnini! Zaradi enostavnosti postavite Cl- ion v koordinatno izhodišče, enega od
Na+ ionov pa v točko (2.1 Å, 0). Tako morate poiskati samo koordinati (x, y) za preostali Na+ ion.

Downhill simplex metodo mi je uspelo naredit in za neko funkcijo z dvemi spremenljivkami dobim želeni minimum. Vhodni podatki so [funkcija, {x1,y1}, {x2,y2}, {x3,y3}]. Zanima me, kaj bi vzel kot funkcijo (seštejem funkciji, ...?) v tej nalogi da dobim ravnovesno strukturo in posledično koordinati Na+? Izrazim razdaljo z (x,y)?

Hvala za odgovor.

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Mathematica

Odgovor Napisal/-a Aniviller »

Potencialna energija sistema je seveda vsota potecialnih energij vseh parov. Drugi natrij ima torej dva prispevka k energiji (interakcija s klorom in interakcija z drugim natrijem). r_{i,j} so parske razdalje. Para staticni natrij-staticni klor ti seveda ni treba upostevat, ker si natrij "pribil" na fiksen polozaj in bo ta clen konstanten :) Ce bi pa variiral polozaja obeh natrijev, bi rabil pa vse tri clene.

Motore
Prispevkov: 1088
Pridružen: 9.9.2009 23:28

Re: Mathematica

Odgovor Napisal/-a Motore »

Aha super, mislim, da mi je uspelo. Se pravi seštejem prvo enačbo kjer je r=sqrt[x^2+y^2] (ker je Cl v (0,0)) in drugo kjer je r=sqrt[(2.1-x)^2+y^2]. To je potem moja funkcija ali moram še enkrat prištet prvo enačbo zarada klora?

Hvala.

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Mathematica

Odgovor Napisal/-a Aniviller »

Ce bos minimiziral po obeh pozicijah, potem imas tri clene:
Na_1 <-> Cl (prva formula)
Na_2 <-> Cl (prva formula)
Na_1 <-> Na_2 (druga formula)
in 4 neznanke (x1,y1,x2,y2)

Ce minimiziras samo polozaj prvega natrija, pa drugega clena ne rabis, minimiziras pa po (x1,x2). To je to.

Motore
Prispevkov: 1088
Pridružen: 9.9.2009 23:28

Re: Mathematica

Odgovor Napisal/-a Motore »

Pozdravljeni,

Zopet en problem. Imamo to nalogo:
Izriši silnice električnega polja med dvema polravninama, ki se stikata v točki x = 0, kot to kaže
spodnja skica. Polravnini oklepata kot 60 stopinj, ena od polravnin je ozemljena, druga pa se nahaja pri
potencialu U0= 5 V.

Na faksu smo pokazali, da je \(f (z) = u(x,y) +i v(x,y)\) pri čemer je \(u(x,y) =\Phi (x,y)\) in \(v(x,y) = \Psi (x,y)\).
\(\Phi\) je naš potencial, \(\Psi\) pa konjugirani potencial (električno polje). Če damo, da je \(z=x+iy=re^{i \varphi}\) potem dobimo \(f (z)=\Phi (z) + i \Psi (z)= (a+id)-ib \ln (z)\).
Realni del je potemtakem \(\Phi (z) = a+b\varphi\), imaginaren pa \(\Psi (z) = d-b\ln (r)\). Ok tukaj mi je jasno da dobimo a in b iz zač. pogojev, kaj pa glede d-ja?
Večji problem je seveda kako to v matematiki izrisat?
Poskušal sem z naslednjimi postopki (a=0, b=15/Pi, d sem tudi nastavil na 0) pa mi ne uspe:

Koda: Izberi vse

f[z_] := I (-15/Pi)*Log[z];

ParametricPlot[{Re[f[x + I*y]], Im[f[x + I*y]]}, {x, 0, Pi/3}, {y, 0, 
  1}, ImageSize -> 300]

Koda: Izberi vse

f[r_, p_] := (15/Pi)*p - I (15/Pi)*Log[r];

PolyaFieldPlot[f_, {x_, xmin_, xmax_}, {y_, ymin_, ymax_}, 
   opts : OptionsPattern[]] := 
  VectorPlot[
   Evaluate@{Re[f],- Im[f]}, {x, xmin, xmax}, {y, ymin, ymax}, 
   VectorScale -> {0.05, Automatic, Log[#5 + 1] &}, opts];

PolyaFieldPlot[f[x, y], {x, 0, Pi/3}, {y, 0, 1}]
Kot sem razumel profesorja, bi moral prvo narisat v kompleksni ravnini, kar bi potem prišlo neka pravokotna mreža in potem to mrežo nazaj pretvorit v kartezične koordinate. Vendar mi ne uspe, rad bi seveda tudi da se to prikaže v obliki vektorkega polja, ne pa mreže.

Hvala za odg. in lep pozdrav.

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Mathematica

Odgovor Napisal/-a Aniviller »

Premik potenciala fizikalno nima vsebine. Sicer pa lahko za izris mreze uporabis ParametricPlot inverzne funkcije (v stilu konformne preslikave: f(z) obrnes v z(f), kar ti bo za vsak f=Fi+i*Psi dalo tocko v realnem prostoru. Potem samo
ParametricPlot[{Re[z[x+iy]],Im[z[x+iy]]},{x,...},{y,...}]
to je na pamet zdajle, lahko da je kaj narobe.

Motore
Prispevkov: 1088
Pridružen: 9.9.2009 23:28

Re: Mathematica

Odgovor Napisal/-a Motore »

S ParametricPlot mi ne uspe. Eno varianto sem naredil s ContourPlot kjer sem posebej naredil za realno (premice) in imaginarno (krogi) komponento.
Dobil sem nekaj takega:
Elek1.jpg
Elek1.jpg (25.52 KiB) Pogledano 3737 krat
Naslednjo varianto sem poskusil vzet samo realen del ga plotat s ContourPlot ter naredit gradient in plotat s StreamPlot.
To je to:
Elek2.jpg
Elek2.jpg (28.97 KiB) Pogledano 3737 krat
Problem pri prvi je, da nevem kako bi izrisal puščice, pri drugi pa zgleda kot, da je električno polje enakomerno, kar pač ni.
Kako bi dobil pa kaj takega (pustimo ob strani kompleksnost)?:
Elek3.jpeg
Elek3.jpeg (17.57 KiB) Pogledano 3737 krat

Odgovori