Hybrydyzacja to procedura matematyczna, której użył Linus Pauling do wyjaśnienia wyznaczonych doświadczalnie kątów między wiązaniami w prostych cząsteczkach np. metanu, etenu, wody czy amoniaku. Hybrydyzacja to procedura sumowania orbitali, czyli dodawania (i odejmowania oczywiście) funkcji. Zrobił to bo orbitale 2s i 2p dawały dziwaczny obraz wiązań w tych cząsteczkach. Sumy orbitali odtwarzały rozsądnie dane doświadczalne. Jak się sumuje funkcje. Zupełnie prosto. Bierzemy dwie (albo więcej) funkcji i dodajemy je do siebie. Czasem mnożymy je przez współczynniki. To wszystko.
Zrealizujmy praktycznie dodawanie funkcji 2s oraz 2px, ale z pominięciem współczynników, które są konieczne w obliczeniach szczegółowych, ale zaciemniają istotę zagadnienia. Wynik i tak będzie sensowny. Dodawanie realizują programy, których wydruki są na końcu tego wpisu zamieszczony poniżej.
Wynik działania programu z zaznaczeniem na fioletowo części ujemnej orbitalu, a na kolor niebieski części dodatniej.
Proszę o dokonanie doświadczeń z mnożeniem poszczególnych orbitali przez współczynniki, aby zorientować się, co do wpływu wartości tych stałych na kształt hybrydy. Proszę sprawdzić, jak wpływa usunięcie apostrofu sprzed zmiennej orbital3 na orientację "hantli" hybrydy. Czy powstanie wtedy jedno z ramion hybrydy sp2? Jeszcze tylko małe usprawiedliwienie. Wybrałem hybrydę sp, dlatego że bez żadnych kłopotów daje się narysować na płaszczyźnie ekranu. Podobnie jest z hybrydą sp2. Inne hybrydy rozmieszczone są często między osiami (np. hybryda sp3). Rysowanie przekrojów w jednej płaszczyźnie daje mocno zubożony obraz takiej funkcji. W celu uzyskania poprawnych obrazów należy stosować przekroje trójwymiarowe.
Starsza wersja programu w QBASICu:
Starsza wersja programu w QBASICu:
'-------------- poczatek danych
skala = 45
ustawx = 300
ustawy = 230
kontur = .15
startx = -4.2
koniecx = 3.2
starty = -4.2
koniecy = 4.2
boksiatki = .02
'-------------- koniec danych
screen 12
for x = startx to koniecx step boksiatki
for y = starty to koniecy step boksiatki
r = sqr(x * x + y * y)
orbital1 = (2 - r) * exp(-r)
orbital2 = x * exp(-r)
'orbital3 = y * exp(-r)
hybryda = orbital1 + orbital2 '+ orbital3
xekran = x * skala + ustawx
yekran = y * skala + ustawy
if hybryda >= kontur then pset (xekran, yekran), 3
if hybryda <= -kontur then pset (xekran, yekran), 5
next y
next x
Nowsza wersja (2020) programu w SmallBasicu:
dane() for x = startx to koniecx step boksiatki for y = starty to koniecy step boksiatki r = Math.SquareRoot(x * x + y * y) orbital1 = (2 - r) * Math.Power(exp, -r) orbital2 = x * Math.Power(exp, -r) 'orbital3 = y * Math.Power(exp, -r) hybryda = orbital1 + orbital2 '+ orbital3 xekran = x * skala + ustawx yekran = y * skala + ustawy if hybryda >= kontur then GraphicsWindow.SetPixel(xekran, yekran, "blue") ElseIf hybryda <= -kontur then GraphicsWindow.SetPixel(xekran, yekran, "magenta") EndIf EndFor EndFor Sub dane skala = 45 ustawx = 300 ustawy = 230 kontur = .15 startx = -4.2 koniecx = 3.2 starty = -4.2 koniecy = 4.2 boksiatki = .02 exp = 2.71 EndSub
Brak komentarzy:
Prześlij komentarz