Årsarkiv: 2015

Partiell integration med Tic-Tac-Toe

Nyligen såg jag filmen Stand and Deliver från 1988 som handlar om hur Jaime Escalante, en hyperengagerande mattelärare, undervisar några High School-kids i Calculus. Filmen innehåller både spanska och 80-talets LA och är verklighetsbaserad så what’s not to like? But wait there’s more! Man kan till och med lära sig lite tips för när man räknar matte och det ska vi kika närmare på i det här inlägget.

I en av filmens scener får vi se hur Mr. Escalante lär ut ett trick för att lösa integraler med partiell integration, vilket kan vara både enkelt och svårt. Enkelt för att det är såhär man gör:

\int \! f(x)g(x) \, \mathrm{d}x = F(x)g(x) - \int \! F(x)g'(x) \, \mathrm{d}x

Svårt för att som vi ser i formeln ovan ges en ny integral som vi eventuellt måste lösa med en ny partiell integration. Håller man inte tungan rätt i mun kan man hamna i en oändlig loop av integraler, och det är ingen dunderhit. Dessutom måste man hålla koll på minustecknen, något som kan ställa till det även för den bäste. Med Tic-Tac-Toe-metoden blir det förhoppningsvis lite lättare. Vi tar ett exempel för att visa hur det går till. Integralen vi vill lösa lyder som följer:

\int \! x^3sin(x) \, \mathrm{d}x

Av uppenbara orsaker väljer vi att derivera polynomet och integrera den trigonometriska funktionen. (Om det inte är uppenbart för läsaren kan ni prova att göra tvärtom.) Vi börjar med att ställa upp en tabell med tre kolumner där den vänstra kolumnen består av upprepade deriveringar av vårt polynom, ända tills vi får 0. Låt mig demonstrera:

x^3
3x^2
6x
6
0

Nästa steg är att fylla den mittersta kolumnen med upprepade integrationer av vår trigonometriska funktion sin(x). Detta pågår lika många gånger som vi deriverade polynomet. Såhär alltså:

x^3 sin(x)
3x^2 -cos(x)
6x -sin(x)
6 cos(x)
0 sin(x)

Den tredje och sista kolumnen ska fyllas med omväxlande plus- och minus-tecken. Den översta raden har ingen betydelse, så där skriver jag ”Tecken” och därefter fyller jag i kolumnen. Först plus, sen minus, sen plus osv.

x^3 sin(x) Tecken
3x^2 -cos(x) +
6x -sin(x) -
6 cos(x) +
0 sin(x) -

Tabellen är ifylld och nu är det äntligen dags att spela Tic-Tac-Toe! Vi ska skapa grupper om tre delar: en del polynom, en del trigfunk och ett tecken. Grupperingen sker genom att ta den översta vänstra cellens polynom, gå snett neråt höger för trigfunktionen och sen ett steg åt höger för tecknet. Det där var lite krångligt att skriva, så jag slänger på lite visuella förbättringar i tabellen i form av färger och pilar:

x^3 sin(x) Tecken
3x^2 -cos(x) +
6x -sin(x) -
6 cos(x) +
0 sin(x) -

Det enda som återstår nu är att multiplicera ihop delarna i våra grupper och sedan summera resultatet, och glöm för allt i världen inte bort konstanten C:

\int \! x^3sin(x) \, \mathrm{d}x = -x^3cos(x)+3x^2sin(x)+6xcos(x)-6sin(x)+ C

Det där, mina kära läsare, är hur man integrerar med hjälp av Luffarschack. Jag hoppas att mitt exempel visade på styrkan hos den här metoden. Om inte, prova öka graden på polynomet. Metoden är inget jag använde i mina tidigare mattekurser, helt enkelt för att jag inte visste att den fanns, men jag tror att den kan fungera väl för att undvika enkla misstag som teckenfel.

Det här inlägget inspirerades av videon Tabular Integration in Stand And Deliver och detta föreläsningsmaterial av Oliver Knill, Harvard University.

Lager than life

Som så många gånger tidigare stod jag och skulle steka bacon, den här gången tillsammans med gårdagens färskpotatis. Det skulle bli gott och i vanlig ordning var jag rejält hungrig, men det var ändå något som gnagde mig (fastän jag är högst i näringskedjan). Min stekpanna hade de senaste gångerna inte funkat riktigt så bra som den borde. Trots normal temperatur hade allt jag stekte en tendens att fastna i stekpannans botten och då pratar vi  ändå om en teflonpanna från Tefal som borde hålla hög kvalité, Jamie Oliver ska ju till och med tycka om den. Mycket riktigt fastnade både bacon och potatis i botten, och stekresultatet blev uselt.

Medan jag åt min mediokra lunch tänkte jag på vilken ny stekpanna jag skulle behöva köpa, den nuvarande gick helt enkelt inte att stå ut med. Det kändes betungande att behöva lägga ut pengar när jag bara hade haft min stekpanna i knappt två år, jag köpte den i augusti sommaren då jag flyttade ner till Linköping. ”Knappt två år”, tänkte jag och ur detta föddes tanken om garanti. Jag gick igenom min kvittosamling. Till slut hittade jag ett blekt kvitto från NetOnNet och mycket riktigt var det snart två år sedan inköpsdatumet: 2013-08-09.

Kanske berodde det på ett svagt illamående från den giftiga teflonmaten jag just ätit men i den stunden kunde jag höra Stefan Löfvens röst inom mig ”Gör din plikt – Kräv din rätt”. Jag packade ner stekpannan, kvittot och en vattenflaska i min ryggsäck och förberedde mig för den milslånga cykelturen till NetOnNets lagervaruhus.

Jag anlände till den stora lagerlokalen mitt ute bland Linköpings nordostliga åkrar och stegade in mot kundserviceavdelningen. Jag förklarade problemet för mannen på andra sidan disken, visade upp stekpanna och kvitto och efter en snabb inspektion och lite pappersarbete gick jag därifrån utan stekpanna men däremot med ett tillgodokvitto på 399 SEK och ett sprudlande gott humör. NetOnNet är fantastiskt, förutom deras utomordentliga kundservice har de så mycket roliga prylar och det är lugnt och stilla bland lagerhyllorna. Jag hittade en ny kanonfin stekpanna som dessutom bara kostade 299 SEK vilket gav mig 100 kronor att spendera på annat.

Med en packning som blev betydligt tyngre på hemvägen än ditvägen begav jag mig hem mot Ryd i både motvind och uppförsbacke. Den nya stekpannan fick inte plats i ryggsäcken så jag fick ha den i en plastpåse hängandes på styret som självklart fångade upp massa vind och agerade fel-riktnings-segel. Men lika glad för det var jag. Att jag lyckats byta in min 23 månader gamla panna och få komma hem med en splitterny variant och mer därtill kändes för bra för att vara sant. Jag hade nästan lite dåligt samvete, men bara nästan.

På vägen hem, när jag cyklade längs Vasavägen, gick det ett gäng på tre unga män i åldrarna 18-22 i bredd i riktning mot mig. Ungefär en och en halv av dessa tre män gick på cykelbanan. Då jag ansåg mig ha förkörsrätt på cykelbanan valde jag att initialt inte väja undan för gänget utan hoppades att de skulle dra sig in mot gångbanan. Ett chicken race i mini-format inträffade och fastän jag både bromsade och till slut girade undan så träffade jag den yttersta mannen med styret och högerarmen. Detta fick cykeln att göra en alltför tvär sväng och jag tvingades liksom hoppa av i farten för att inte ramla tillsammans med cykeln som slog i backen, samtidigt som jag tjöt ett ”OOOOooooj!!” på ett ilsket och skrämt sätt. Från en av de tre männen hörde jag ett irriterat ”Vad gör du?!” varpå jag svarade ”Gå inte på cykelbanan”. De replikerade med ”Skaru ha spö?!” och jag kunde inte låta bli att med ett stort leende utbrista ”Kör igång!”. Deras ledare gick fram och försökte sig på en högersving mot min käke men som var på tok för långsam och yvig för att vara något hot. Jag duckade, slöt mina ögon, andades in och hörde prasslet från plastpåsen som gled av från stekpannan vars handtag jag hade ett fast grepp om. Därefter följde en forehand, backhand och smash med ett fotarbete som till och med hade fått Federer imponerad. De tre musketörerna låg nu och kved på marken. Lugnt och stilla yttrade jag ett ”F**k you, f**k you, f**k you, I’m out!” till de tre och hoppade på cykeln igen och trampade vidare till publikens rungande jubel och applåder. Jag kan bekräfta att både stekpannan och mina tennistakter håller en mycket hög kvalité. (Eller också fick jag väja undan för tre unga män som helt respektlöst gick mitt på cykelbanan vilket gjorde mig en smula sur, ni får tro vad ni vill.)

Hursomhelst har jag nu kommit hem med mina nya prylar och vem vet, om 23 månader kanske det är dags igen. Till alla er därute, kom ihåg att SPARA ALLA KVITTON!

Stekpanna, kollegieblock och popcorn.

ALLT det här, förutom bordet och gardinen, kan man få för en två år gammal stekpanna. Det är matlådor, kollegieblock, popcorn, Cola och en stekpanna!!!! Hur fantastiskt är inte det?!?!?!?!?

 

 

My Kubuntu Setup

I recently had to reinstall Kubuntu 14.04 on my PC due to some driver issues which I wrote about in my last post. Doing so made me realize that I had quite a few tweaks made to the vanilla installation to get a pleasant experience. I also realized that I had forgotten many of my configurations and had to spend a couple of hours looking through blog posts and whatnots to  rediscover all my favorite settings. To avoid this hassle the next time I’m reinstalling, I’m going to list the most important settings to make Kubuntu the best distribution, by far.

Font Settings

The first thing that strikes me when booting a freshly installed Kubuntu is the fonts which not only look bad but also hurt my eyes, everything is so small. My current font settings are heavily inspired by this blog post, with the exception that I have increased every font size by one. I also increase the zoom level in Firefox for some sites, especially Reddit and Youtube go nice with being zoomed in once or twice, keeping your eyes relaxed and happy!

Font settings in KDE

Anti alias settings

The Anti-alias settings. I have no idea what this stuff actually do but this looks good to me.

Application and workspace style

From the screenshots above you can see that the style is somewhat darker than the defaults. This spurred from the fact that, IIRC, the default taskbar had a transparency effect that I didn’t like. Instead of removing the transparency effect I decided to do a full overhaul of the appearance. From the System Settings menu, enter the Workspace Appearance and make sure that you’re using the Oxygen theme in Window Decorations. Second, we need to change the Desktop Theme to Caledonia. There might be more than one way to install Caledonia, but I just downloaded this KDE theme archive and followed the installation instructions. After a successful installation you should be able to select the Caledonia theme from the list of themes in Desktop Theme settings.

Next up is the style for the application window as the default settings in combination with the Caledonia theme is very ugly, so let’s fix that right away. From the System Settings menu, go to Application Appearance->Colors and click the Get New Schemes button. From the list of schemes you should be able to search for a scheme named DarkRed and install it, done! DarkRed might work somewhat bad when filling in online forms as you might end up typing black text on a black background. Apart from that, it’s nearly perfect.

Turning Firefox into fire and shadow

When switching to a dark desktop theme, or any theme for that matter, you probably want to achieve a high level of consistency regardless of which program you’re running. When it comes to Firefox and websites you will of course not reach perfect darkness as some pages simply aren’t dark by design. Well, a small attempt to make Firefox look nicer is to install some visually enhancing add-ons and themes and do some magic for frequently visited sites. Install the add-ons Stylish, Customize about:newtab and if you surf Reddit, install RES and activate night mode. I’ve installed Stylish themes for Facebook och Youtube. My customizations to the about:newtab page consists of setting the columns to 5 and rows to 2, all to make some room for this background image. This goes along very well with the Dark Fox Firefox theme.

And finally some must-have packages

This is in no way a complete list, it’s just some of the packages that I usually install during the first hours so I might as well list them here just in case it come in handy sometime.

sudo apt-get install terminator emacs htop vim git

To wrap this up I leave you with a screenshot of my main screen! G’night :D

A screenshot, very nice.

It’s so beautiful…

Driver du med mig?

Den här veckan fick jag ett paket med prylar från Inet. Det brukar oftast vara en glädjefylld tid när man får nya datorgrejer att leka  med men den här gången kan jag konstatera att det blev en jobbig start. Låt oss ta det från början.

Lite datorprylar

From Inet with love and pingvinstång.

Ett tränat öga kanske lägger märke till att grafikkortet (det stora paketet) har text med kyrilliska bokstäver. Är det ryssen som planerar invasion månntro? Tja, en snabb översättning med det här fina tangentbordet och Google Translate avslöjar att det medföljer en uppsättning vapen som gåva. Men jag tror vi kan vara lugna, jag är rätt säker på att de hör till spelet War Face.

Det vara bara till att knö in grafikkortet i min ganska trånga datorlåda. Allt gick inte perfekt, det var svettigt och jag var rätt hungrig trots energin från pingvinstången, men till slut blev det såhär fint:

Innehållet i min dator.

Snyggt byggt, fräsig kärra

Nu var det bara till att veva igång muskedundret och ägna sig åt mjukvaran istället för hårdvaran, vilket jag i regel tycker är mycket roligare. Den här gången skedde ett undantag från regeln. Jag är ledsen över att behöva gå in rätt djupt på de tekniska detaljerna nu, men situationen krever detta för att kunna ge en rättvis bild av eländet. (Och jag vet hur man stavar kräver men ibland får jag mina associationer. För dig som inte vill läsa vidare kan jag därför istället rekommendera en kik på Ett kilo mjöl.)

Planen var nu att installera drivrutiner från Nvidia. Det skulle inte vara svårt, det fanns en jättebra guide på Ask Ubuntu och jag hade faktiskt installerat Nvidias drivrutiner på Linux på min gamla dator Svinpäls för typ fem år sen, det kunde väl knappast ha blivit svårare med åren? Jag hade dessutom tänkt på att jag redan hade en drivrutin till mitt integrerade grafikkort i Intelprocessorn, den avinstallerade jag enkelt med kommandot

sudo apt-get autoremove --purge intel-linux-graphics-installer

och till slut var jag redo att installera den nya drivrutinen. Men det var något som inte ville fungera. Varje gång jag försökte installera drivrutinen så avbröts den med felmeddelandet ”Unable to load kernel module” eller nåt liknande. Detta var inget jag trodde skulle vara några problem, det fanns ju en detaljerad loggfil och Google att tillgå. I loggfilen såg jag två fel, dels att ”Kernel configuration is invalid.” och nåt om ”Unknown symbol drm_*”. För mig sa det inte så mycket, men på Google kunde man hitta många andra som hade haft liknande problem. Så de följande timmarna bestod mest av att installera paket, ta bort paket, skriva saker i konfigurationsfiler, starta om datorn, köra installationsprogrammet, misslyckas. Om och om igen, allt i den fantastiska upplösningen av 800×600 pixlar.

Tiden gick, jag blev hungrigare, tröttare, argare och jag behövde sova för nästa dag var en helt vanlig arbetsdag. Om den här historien hade haft ett lyckligt slut hade det stått att jag till slut insåg att det var några gamla rester från den där Inteldrivrutinen som låg och skräpade. Jag läste på lite noggrannare om hur man avinstallerade drivrutinen och kunde läsa att man behövde ta bort ett dkms-paket som jag tidigare förbisett. Hursomhelst har inte den här historien ett så pass lyckligt slut, och jag vet inte om det faktiskt var det där dkms-paketet som var roten till det onda. Det fanns nämligen en ”enklare” lösning: ominstallation! Enkelt var ordet, så enkelt att jag gjorde en liten lista över hela förfarandet:

Bestämma mig att det är dags att gå över till Kubuntu 15.04 -> Ladda ner ISOn -> Fixa bootbart USB-minne på macen, inte via UNetbootin utan via Manual Approach för att jag i den stunden är en idiot. -> Kopierar med dd till /dev/disk2, tar jättelång tid så efter en kvart avbryter jag och kör via /dev/rdisk2 istället, går på tre minuter. -> Installera via USB-stickan, bara det att installationen krashar halvvägs och säger att den troligtvis är korrupt, misstänker att /dev/rdisk2 var fel väg att ta. -> Kopierar på nytt via /dev/disk2 istället, hinner ta en dusch under tiden. -> Försöker installera via USB-stickan på nytt, samma fel. Verkar som att den nedladdade ISO-filen var helt paj. -> Försöker ladda ner på nytt, superlångsam server. -> Laddar ner via BitTorrent istället. -> Installerar via UNetbootin istället, framsteg! -> Lyckas installera! -> Lyckas installera grafikdrivrutinen. -> Bara till att installera alla program på nytt.

Dagen därpå märkte jag att Kubuntu 15.04 har en bug, och just där och då hade jag inte tålamod för fler buggar och problem. Jag hamnar i en mindre distributionskris, om jag inte trivs med Kubuntu, vad finns det då för hopp? Jag bestämmer mig för att gå tillbaka till det som funkar, och installerar Kubuntu 14.04 på nytt, med samma gamla installationssticka som jag använde för 10 månader sen när datorn var ny. Eländescirkeln var sluten.

Jag hade gärna gått igenom hur installationen av 14.04 gick och vad jag behövde göra för att få det att fungera som jag vill, men det här inlägget är långt nog nu, så det spar vi. Det jag har lärt mig är att ibland kan det vara en bra idé att vid problem ta ett steg tillbaka, laga mat till lunchlådan nästa dag och äta lite men när min dator inte fungerar är det svårt att slita sig från problemet, det är lite av mitt skötebarn. En ominstallation är sällan den bästa lösningen och den här gången var det sannerligen inte enkelt. Ta hand om er och era datorer :)

– Eric

Latex och kedjor

Inläggets titel kan man kalla för clickbait, för även om inlägget kommer att handla om typ Latex och typ kedjor, så är det kanske inte riktigt vad de flesta förväntar sig.

Latex är, förutom gummivarianten, ett typsättningssystem som man kan använda sig av för att formatera text. Det lämpar sig ypperligt för att skriva matematiska ekvationer och annat skoj. I matematiken finns en regel för derivator som kallas kedjeregeln, så nu har vi fått med kedjorna också.

När jag läste att WordPress, som min blogg använder, stödjer Latex blev jag förstås eld och lågor. Därför tänkte jag försöka skriva en del av mina anteckningar från senaste föreläsningen i flervariabelananlys och se hur det blir.

Kedjeregeln (en variabel)
D( f( g( x) )) = f'(g(x)) \cdot g'(x)
Alltså om du tar derivatan av en funktion som har en inre funktion så får du derivatan av den yttre funktionen som fortfarande omsluter den inre oförändrade funktionen multiplicerat med derivatan av den inre funktionen. Usch, det är svårare att förklara matematik med ord än det är att bara skriva det. Vi tar ett exempel:

Om vi tar g(x) = ln x från föregående exempel får vis:
D(f(ln x)) = f'(ln x)\frac{1}{x}

Okej, om vi tar ett lite trixigare exempel:
D((ln x)^2 + ln x) = 2lnx \cdot \frac{1}{x} + \frac{1}{x} = \frac{1}{x}(2ln x + 1)

Jag har lite problem att tyda mina anteckningar och jag behöver dessutom laga mat så jag kommer i resten av inlägget inte gå in på detalj varför det står som det gör, men det är nog lika bra det, matematiken får tala för sig själv helt enkelt.

Variabelbyte (en variabel)
Eulerekvationen lyder:
x^2 y'' - 2xy' + 2y = 2x^2 (x > 0, y = y(x))

Vi gör variabelbytet t = ln x, alltså x = e^t
y(t) = y(ln x)
y_x' = y' \cdot \frac{1}{x}
y_{xx}'' = (y''(ln x) \cdot \frac{1}{x})\frac{1}{x} + y'(ln x) \cdot (- \frac{1}{x^2})

Nu börjar det hända saker, det sista steget var i alla fall produktregeln för derivata tillämpat på det vi fick ut från steget innan. Vi kan förenkla uttrycket vi fick på slutet till detta:
y_{xx}'' = (y'' - y')\frac{1}{x}

Sätter vi in detta i Euelerekvationen som visades ovan får vi:
x^2(y'' - y')\frac{1}{x} - 2x \cdot y' \cdot \frac{1}{x} + 2y = 2x^2 \Leftrightarrow y'' - 3y' + 2y = 2e^{2t} (=2x^2)

Nu har vi fått oss en fin lite differentialekvation att lösa, tror jag. Vi vill få fram den homogena lösningen till ekvationen vilket vi får mha den karakteristiska ekvationen:
r^2 - 3r + 2 = 0 \Leftrightarrow r = 1 \lor r = 2
vilket ger:
y_h = Ce^t + De^{2t}

Huga, nu börjar vi närma oss, för att hitta partikulärlösningen gör vi en ansats: (eller kanske en insats, fniss)
y = Ate^{2t}
y' = (A + 2At)e^{2t}
y'' = (2A + 4At)e^{2t}

Insatt i ekvationen vi fick lite högre upp:
(2A + 4At)e^{2t} - 3(A + 2At)e^{2t} + 2Ate^{2t} = 2e^{2t} \Leftrightarrow 2A - 3A = 2 \Leftrightarrow A = -2

Detta ger oss partikulärlösningen:
y_p = -2te^{2t}

Nästa framme nu, så:
y(t) = Ce^t + De^{2t} - 2te^{2t}
y(x) = Cx + Dx^2 - 2x^2 \cdot lnx

Och roligare än så blir det inte gott folk. Det är stor risk för att det smög med sig nåt skrivfel, och det var väl inte så rolig läsning till å börja med. Men jag fick träna på att skriva Latex och förhoppningsvis kan det komma till användning inför framtiden.

PS Jag slängde in det här i CSS:en för att latexen skulle se lite bättre ut:
.entry-content img.latex {
box-shadow: none;
position: relative;
top: 6px;
}

¡Vivir con miedo es cómo vivir a medias!

Du som kan spanska kan säkert översätta inläggets titel, men även den som sett filmen Strictly Ballroom har en chans.

Trots att mi no habla español utan istället tillhör den sistnämnda gruppen kan jag avslöja att det betyder ungefär ”Ett liv levt i rädsla är ett liv levt till hälften.”

Det börjar närma sig final i årets säsong av Let’s Dance och då danshungern inte riktigt kan hejda sig hos mig tänkte jag att det vore kul att se en dansfilm. För er som inte hört talas om Strictly Ballroom kan jag säga att det är en australiensisk romantisk dramakomedi som handlar om dans och danstävling. Att den är australiensisk är anledning nog att se den. Komedi är ingen favoritgenre hos mig men i den här filmen tycker jag att den tillåter handlingen att utvecklas i ett högt tempo vilket höjer underhållningsvärdet. Soundtracket är bra, särskilt om man gillar Cindy Laupers Time after Time. Scenen på taket med Coca-Cola-skylten1 är magisk!

Filmen är helt klart köpvärd, för det är en film som man mår bra av och som funkar att se ensam eller med vänner och familj. Så jag tänkte, varför inte köpa den, en över 20 år gammal film kan inte kosta en förmögenhet. Eftersom att jag inte har någon DVD-spelare så blev jag väldigt glad när jag såg att den fanns tillgänglig för nedladdning på Itunes. Eller ja, väldigt glad är väl att ta i, Itunes är ju inte det bästa världen fått beskåda, men det fanns inga bättre alternativ. Så jag loggar in på mitt Itunes-konto, försöker leta upp filmen, går lite trögt och till slut får jag fram ett meddelande som löd ungefär ”Denna film är inte tillgänglig i din region.”

Jahopp, det var ju tråkigt tänkte jag, tråkigt för dem. För min del fick jag helt enkelt gå över till plan B. Jag slängde ut mitt magiska nät, gick och borstade tänderna och när jag kom tillbaka så fanns filmen där. Jag kan inte gå in på detaljer för hur det riktigt gick till, men för att citera Filip Hammar när han bjuder Fredrik på en magisk kaka: ”De som fattar, fattar.”

Nåväl, back to Sweden och Let’s Dance. Om jag får tippa resultatet tror jag att vi får se Serneholt mot Björkman i finalen och väl där tror jag att Björkman vinner om han dansar så att domartrion ger 28 poäng eller högre per dans. Serneholt har ju varit den bättre dansaren genom säsongen men svenska folket verkar ha charmats av tennislegendaren. Hur det faktiskt blir får vi se, spännande är det i alla fall.

  1. Hur många bindestreck ska det vara egentligen?