2011-03-05

Numeriska metoder

I kursen Numeriska metoder, "Nummen", lär man sig om numeriska metoder. Det handlar mycket om hur man genom att upprepa beräkningssteg kan hitta extrempunkter, lösa differentialekvationer, hitta skärningspunkter, lösa integraler, passa in kurvor genom punkter och så vidare. I praktiken innebär det att man sitter framför en dator i timmar med svårbegripliga matematiska problem och försöker göra ett program i Matlab som löser problemen. Det finns assistenter i datorsalarna under de schemalagda tiderna, men de har sällan nog med tid för att kunna sätta sig in i uppgifterna. Det här är en kurs som kombinerar det värsta inom matematik och programmering.

Man arbetar i grupper om två, så välj en bra labbpartner. Är ni redan vänner, försäkra er om att er vänskap håller för denna påfrestning. Å andra sidan kan motgångarna som Nummen innebär också föra människor närmare varandra.

För att visa hur roligt detta är så har jag här en lösning på ett av de första problemen vi fick. Jag har dock tappat bort själva problemet.
------------------------------------------------------------------------
clear all, clc
% Systemmatrisen blir:
A = [2 1 2; 1 2 -1; 2 -1 -2; 1 -2 1];
b = [3 1 -1 -3]';
% '\' löser automatiskt med minstakvadratmetoden för överbestämda system
u = A\b
% Insättning för att se hur väl systemet satisfieras:
c = A*u;
% Om residualvektorn är liten är det bra satisfiering
resid = b-c
% Residualvektorn skall vara ortogonal mot kolumnvektorer i A, d.v.s:
zerovector = resid'*A
% Är denna vektor ej exakt noll kan de bero på datorns avrundningsfel
------------------------------------------------------------------------

Programmeringsdelen är inte så svår eftersom man redan har läst en introduktionskurs i Python-programmering i ettan. Den är snarare irriterande eftersom det innebär mycket feltestande och inläsning av en hel del programfunktioner.

Inga kommentarer:

Skicka en kommentar

Blogg listad på Bloggtoppen.se