Numerieke Wiskunde: verschil tussen versies
Regel 460: | Regel 460: | ||
// we laten de bovenste rij naar de onderste rij toekomen | // we laten de bovenste rij naar de onderste rij toekomen | ||
// we lossen telkens het 2x2 stelseltje op gevormd door de huidige bovenste en onderste rij | // we lossen telkens het 2x2 stelseltje op gevormd door de huidige bovenste en onderste rij | ||
while(boven | while(boven > onder) { | ||
int[] oplossingen = los2x2op(A[boven][boven],A[boven][onder],A[onder][boven],A[onder][onder],B[boven],B[onder]); | int[] oplossingen = los2x2op(A[boven][boven],A[boven][onder],A[onder][boven],A[onder][onder],B[boven],B[onder]); | ||
oplossing[boven] = oplossingen[0]; | oplossing[boven] = oplossingen[0]; |
Versie van 25 jan 2006 02:29
Examenvragen Numerieke Wiskunde
Hieronder een aantal examenvragen die van een aantal bronnen zijn samengeraapt...
Deze kunnen onduidelijk, onvolledig, onmogelijk,... zijn...
De opmaak is niet altijd helemaal in orde
Oplossingen kunnen fout zijn, daarom volgende aanduidingen:
- NIET NAGEKEKEN: Ter aanduiding van een oplossing, die mogelijk fout is.
- NAGEKEKEN DOOR: <naam>: Ter aanduiding van een oplossing die nagekeken (en indien nodig verbeterd is)
Gelieve mee te helpen in het oplossen (en corrigeren van de vragen). Aanpassingen ondertekenen aub (de voorlaatste knop rechts voegt een handtekening toe).
Hulp met wiskundesyntax vindt je hier: http://meta.wikimedia.org/wiki/Help:Formula
Examenvraag 1
Gegeven een programma
som = 0.0 for i = 0.0:0.1:1.0 verschil = i - som % == 0 som = som + 0.1
end
Output:
verschil = 0 verschil = 0 .. verschil = 1.1.. e-15
(Syntaxverduidelijking: % en alles wat erachter komt is commentaar, geen modulo ofzo.)
Verklaar waarom het verschil plots niet meer gelijk is aan 0. Waarvoor staat dat getal?
--> Theeft iets te maken met de voorstelling van 0.1 int binair en het verschil in berekening tussen 'sum' en 'i'.
Stevel:
0,1 wordt in het binair voorgesteld door 0,0001100110011.... In de computer wordt slechts gewerkt met een eindige mantisse, er gebeurt bijgevolg een minieme afrondingsfout. In het begin is deze afrondingsfout klein genoeg (kleiner dan de machineprecisie), om bij omzetting naar het decimale talstelsel opnieuw 0,1 uit te komen, 0,2 wordt nog exact voorgesteld als 0,1+0,1. 0,3 wordt echter niet meer voorgesteld als 0,1+0,1+0,1. Daarom zal er bij de binaire aftrekking een kleine rest overblijven, maar groter dan de machineprecisie, die het verschil als resultaat geeft.
--Stevel 23 jan 2006 15:22 (CET) NAGEKEKEN DOOR: RubenV (zie lager)
RubenV: Dit is normaalgezien na te kijken met behulp van dumpfp.m uit de (eerste?) pc-zitting. Helaas werkt dit onding niet op mijn installatie van matlab. Lijkt me wel juist. --RubenV 24 jan 2006 09:38 (CET)
Examenvraag 2
Je krijgt de QR ontbinding van een matrix A, en Q'.b.
gevraagd: ||r|| en hoe zou je x bepalen dat hoort bij die ||r||.
(staat niet in boek, maar in slides bij toepassingen van factorisaties, kleinste kwadratenbenadering)
Hebben wij kleinste kwadratenbenadering gezien dit jaar(05/06)? --Willem
Examenvraag 3
Je krijgt een paar grafiekjes en maple code over Newton Rapshon en de vereenvoudigde Newton Raphson (niet lineaire stelsels). Je krijgt een 4 tal kleine "verklaar waarom" vraagskes
Examenvraag 4
Maple afdruk: laatste vraag van de examenvragen in de winabundel (Die over het bepalen van eigenwaarden met de methode van de machten).
Uit de matrix A = [2 1 -1; 0 3 -5; 0 0 -2] wordt de dominante eigenwaarde berekend. De startwaarden zijn: [-1.00001 1.00002 1]. Op de grafiek is zichtbaar dat er eerst naar 2 lijkt te convergeren, maar uiteindelijk toch de juiste eigenwaarde 3 gekozen wordt. Het berekenen gebeurd met de methode van de machten met normalisatie.
- Hoe komt het dat er eerst naar 2 geconvergeerd wordt?
Wanneer we de startvector uitdrukken met een basis van eigenvectoren (deze vormen een orthonormale basis) blijkt dat de component van de eigenvector van 2 groter is dan de compontent van de eigenvector van 3, voor de gegeven startwaarde. ->die is niet "groter", er is helemaal geen component naar de eigenvector horende bij de eigenwaarde 3 (want er staat een 0). Door de afrondingsfouten (hieronder) komt daar dus wel iets dus dat klopt :) -Ben
- Waarom uiteindelijk toch naar 3?
Tijdens het berekenen van een normalisatie worden er afrondingsfouten gemaakt, waardoor er in de component van de eigenvector horende bij de eigenwaarde 3 toch een waarde komt, hierdoor wordt dan convergentie naar 3 gestart.
- Wat als er geen normalisatie gebruikt zou worden?
De methode zou niet naar 3 convergeren, maar bij 2 blijven hangen.
Opmerking: deze oplossing (de laatste twee vragen toch) heb ik ergens zien staan, maar vind nu zelf niet meer waar, heel verontrustend...
--RubenV 19 jan 2006 12:06 (CET) NIET NAGEKEKEN
--ScAv 23 jan 2006 12:08 (CET) NAGEKEKEN (oplossing verkregen van assistent, oplossing komt overeen, alle info staat hier)
Examenvraag 5
Maple printout
p1=(x-2)(x-4)... (x-30)=PROD(i=1..15)(x-xi) met xi=2*i
p2=p1
uitgewerkt: x15+b14x14+...+b0=SOMi=0..15(bixi) [met bi gegeven constanten]
die twee geplot.
een keer van interval x=2..6
een keer van interval x=6..20
een keer van interval x=20..30
(de fout in het derde interval was veel groter dan in het eerste interval)
#Maple code om te testen f:= (x-2)*(x-4)*(x-6)*(x-8)*(x-10)*(x-12)*(x-14)*(x-16)*(x-18)*(x-20)*(x-22)*(x-24)*(x-26)*(x-28)*(x-30); g:=collect(f,x); #Aangezien ik geen verschil kon zien bij mijn eigen test van de 2 functies heb ik het verschil geplot plots[logplot]([f-g],x=2..6); plots[logplot]([f-g],x=6..20); plots[logplot]([f-g],x=20..30);
De vraag is hoe het komt dat de fouten groter zijn voor grotere nulpunten. Als bijvraag moest ik verklaren waarom de fout voor vb. x=28 van de orde 10^13 is en van welke orde de fout dan is voor x = 4. ( dat laatste zag je niet op de grafiek, omdat de fout heel klein was tegenover de grootte van de functie zelf ).
Een beetje uitwerking van mezelf, omdat dit niet makkelijk is, en we zoiets niet direct gezien hebben in de oefenzittingen:
noem r(x) de veelterm met coëfficiënten b_i = a_i(1+epsilon_i).
Dan geldt: r(x)-p(x) = som voor i van 1 tot 15 van (epsilon_i*a_i*x^i).
Neem nu epsilon = max epsilon_i. Dan moet je epsilon buiten haakjes halen, en het is dan heel belangrijk en niet voor de hand liggend dat je absolute waarden moet toevoegen in de som, omdat elke epsilon apart zowel positief als negatief kan zijn.
Dus r(x)-p(x) = epsilon* som voor i van 1 tot 15 van abs(a_i*x^i).
Dan ben je er, want dat laatste is groter als x groter wordt en zo.
Voor de grootte-ordes moet je gewoon de grootte-ordes van epsilon en van die som zoeken. Voor epsilon hangt dat af van je getalvoorstelling, en voor de som kan je het met je rekenmachine uitrekenen voor gegeven a_i en x.
Examenvraag 6
Er is een functie van de vorm
p(x) = a0 + a1x + a2x^2 + ... +an*x^n (n is niet gekend)
p(0) = 5
p(1) = 9
p(2) = 15
p(3) = 18
Gegeven dat alle gedeelde differenties van de vierde graad 1 zijn.
Geef a3.
Aangezien alle gedeelde differenties van graad vier gelijk zijn aan 1, kan je eenvoudig inzien (gedeelde diff. berekenen) dat al die van graad 5 gelijk zijn aan 0. Je kent dus de graad van de interpollerende veelterm. Dan is het gewoon een kwestie van de Newtonveelterm invullen met gedeelde differenties die je eenvoudig berekent. Een weggevertje dus.
Deze vraag is identiek aan vraag 9 (met andere gegevens weliswaar), uitwerking staat daar.
Examenvraag 7
Maple printout
Newton Raphson.
gegeven: f(x), df(x)
plot van de fout voor a=-1 (naar nulpunt -0.3....)
geef de convergentiesnelheid in detail.
Examenvraag 8
gegeven een 2-dimensionaal lineair stelsel Ax = b met
A = [ (alfa+1) 1 ] [ alfa 1 ]
We gebruiken de methode van Jacobi om een nulpunt te vinden. Bepaal alle waarden van alfa waarvoor de methode van Jacobi convergeert ( voor alle startwaarden ).
Oplossing:
0 < alfa < 1
Zie boek pagina 81-82.
- Door te eisen dat de matrix diagonaal-dominant is (maar dit is voldoende voorwaarde, niet noodzakelijke!).
- Door G te berekenen (p. 81) en de norm ervan kleiner als 1 te eisen.
Ben NAGEKEKEN DOOR: --RubenV 19 jan 2006 15:03 (CET) -> lijkt me juist, strikte ongelijkheid
- Lijkt mij fout hoor --Thomas
Uitleg bij de oplossing.
We bepalen ||G||2 zo, dat 0<||G||2<1 (||G||2 is de 2-norm van G)
G is voor jacobi -D^-1 *(U+L).
In ons geval is
U+L = [ 0 1 ] [ alfa 0 ]
en
D^-1 = [ 1/(alfa+1) 0 ] [ 0 1 ]
hieruit volgt dat
G = - [ 0 1/(alfa+1) ] [ alfa 0 ]
We mogen niet ||G||1 nemen van G, we moeten ||G||2 van G.
||G||2 is (max(eigenwaarden van G^T*G))^(1/2)
We bepalen dus eerst
G^T*G =
[ alfa^2 0 ] [ 0 1/(alfa+1)^2 ]
De eigenwaarden hiervan zijn de oplossing naar lambda van
det((G^T*G)-lambda*eenheidsmatrix) = 0
de eigenwaarden zijn de oplossingen naar L van volgende gelijkheid
L^2+L*(-(A^2+(1/(A+1)^2)))+A^2/(A+1)^2 = 0
Zei L1, L2 de 2 oplossingen hiervan
dan is (max(L1,L2))^1/2 de 2-norm van G
De gezochte waardes voor alfa zijn de alfas die ervoor zorgen dat 0<(max(L1,L2))^1/2<1
--Thomas
Ik ga de hele oefening niet opnieuw maken, maar belangrijke nieuwe kennis: Door hier de 2-norm te nemen is kijken of die kleiner is als 1 NIET VOLDOENDE VOORWAARDE, net als diagonaaldominantie checken. Wél voldoende is de spectraalradius vergelijken met 1, en dat is gemàkkelijker! (Spectraalradius = absolute waarde van grootste eigenwaarde).--Ben 24 jan 2006 16:15 (CET)
hmm ik heb het alvast opgelost door gewoon de 2-norm van G kleiner dan 1 te stellen
en dan heb ik dat 0<=alfa<.8392867553 (die numerieke waarde is met rekenmachine berekend, aangezien dat de oplossing is van een 3e-graadsvergelijking)
--RealBirkoff 24 jan 2006 18:45 (CET)
Ik bedoel: als ge de 2-norm van G kleiner dan 1 stelt (zoals hierboven) hebde NIET alle waarden! Met andere woorden: als de 2-norm groter is als 1 wilt dat NIET zeggen dat er geen convergentie is. --Ben 24 jan 2006 20:30 (CET)
Als we de oplossing van Thomas volgen tot aan
G = - [ 0 1/(alfa+1) ] [ alfa 0 ]
en zoeken hiervan de eigenwaarde
| -L -1/(alfa+1) | = 0 | -alfa -L |
krijgen we
L² = alfa/alfa + 1
en dus is
L = sqrt(alfa/alfa + 1)
de 2 eigenwaarde zijn in absulate waarde evengroot
vergelijking van de spectraalradius:
abs(sqrt(alfa/alfa+1)) < 1
klopt dit? --Willem
Examenvraag 9
- eem p(x) = a0 + a_1 x + ... + a_n x^n n is onbekend. p(0)=4, p(1)=9, p(2)=15, p(3)=18. De gedeelde differenties van orde 4 zijn allemaal gelijk aan 1. Bepaal a_3.
- (Gedeeltelijke) Oplossing:
Stel dan volgende diff tabel op:
0 4 5 1 9 0.5 6 -2/3 2 15 -1.5 1 <= gegeven 3 0 <= deze rij is dus helemaal 0, en bijgevolg is de graad 4 3 18 1
Vul dan de tabel eventueel achterwaards in voor xi = 4, een veelterm van graad 4 is volledig bepaald door die 4 punten.
uit 4.26 halen we dat de coëf van x^3 = -2/3 + 1 -> moet dit niet -2/3 - 6 zijn? --Ben
immers expand((-2/3)*(x-0)*(x-1)*(x-2)) =
2 3 2 4 - - x + 2 x - - x 3 3
en expand((x-0)*(x-1)*(x-2)*(x-3))=
4 3 2 x - 6 x + 11 x - 6 x
de andere termen hebben geen 3de graadsterm.
-> klopt moet -2/3 - 6 zijn --Willem
Uitleg bij de oplossing.
Die elementen op de bovenste rij zijn de coefficieten voor de interpolerende veelterm volgens Newton. Die coefficienten staan tegenover basis 1,(x-x0),(x-x0)(x-x1),...
Wat gevraagd is, is de coefficient die bij x^3, tegenover basis 1,x,x^2,...
Om dat op te lossen, zoekt ge eerst de coefficienten tegenover basis 1,(x-x0),(x-x0)(x-x1),... Ge krijgt dan, p(x) = f[x0] + f[x0,x1] (x-x0) + ...
De f[x0], f[x0,x1], .... verkijgen we door de differentie tabel van hierboven op te lossen.
Dan werken we p(x) = f[x0] + f[x0,x1] (x-x0) + ... uit zodat we iets in de vorm van p(x) = a + b x + c x^2 + ... krijgen
Deze uitwerking gebeurt per term in de interpolerende veelterm volgens netwon De eerste uitgewerkte term is expand(f[x0]) De tweede uitegewerkte term is expand(f[x0,x1](x-x0) enz...
Daarna tellen we alle expands op bij elkaar en krijgen we de interpolerende veelterm tegenover de basis 1,x,x^2,...
Uit die expands zien we dat ben gelijk heeft, de coef bij x^3 is volgens mij ook -2/3 - 6
--Thomas
Examenvraag 10
Gegeven nog een hoop maple-uitvoer. Het gaat over een vijfdegraadsveelterm met een nulpunt in -0.31. Er wordt Newton-Raphson gebruikt om dat nulpunt te berekenen, en je krijgt een logaritmische plot van de fout. De plot is een heel normale, typische plot voor kwadratische convergentie.
De vraag is: verklaar deze grafiek ( van de fout dus ). Wat is de convergentie-snelheid ?\" Als bijvraag kreeg ik \"het aantal juiste beduidende cijfers verdubbelt bij elke stap, hoe zie je dat in de grafiek ?.
Examenvraag 11
Gegeven: A,b en twee berekende x matrices: Ax=b. De resultaten liggen ver uit elkaar. Bespreek stabiliteit van de methodes als machinenauwkeurigheid 10^-15 is.
Examenvraag 12
- Vraag: Veelterm met en . Geef alle veeltermen van zo laag mogelijke graad die hieraan voldoen. (Antwoord: p(0)+x-x³)
- Oplossing:
De graad is 3 (2 punten is graad 1, 3 is graad 2, en die afgeleide zorgt voor nog een graad)
Het bestaan van de afgeleide is volgens mij geen noodzakelijke voorwaarde voor een graad meer. Een functie die door 3 punten met dezelfde functiewaarde loopt is ofwel een constante functie (maar dan is de afgeleide overal 0. Dit is in tegenspraak met ), ofwel is de functie van minstens graad 2. Echter, bij graad 2 kan een bepaalde functiewaarde maar overeenkomen met 2 punten. Bij een functie van graad 3 is dit wel mogelijk. --Stevel 24 jan 2006 10:04 (CET)
We zoeken dus een veelterm van de vorm --Thomas 19 jan 2006 17:04 (CET)
analoog met het stelsel op pag 118 krijgt men
(invullen van -1) (invullen van 0) (invullen van 1) (invullen van en 0)
oplossen geeft:
en dus is de oplossing
kan de waarde van eender welke constante aannemen, de oplossing is dus anders geformuleerd , met c element van R --Thomas 19 jan 2006 17:31 (CET)
NAGEKEKEN Lijkt me juist --Thomas 19 jan 2006 17:06 (CET), mij ook --Stevel 24 jan 2006 13:00 (CET)
Examenvraag 13
Methode van het midden: bespreek grafiek, slecht geconditioneerd?
Examenvraag 14
Newton-Raphson + vereenvoudigde: bespreek een hele hoop grafieken en geef convergentiefactor en orde.
Examenvraag 15
waarom is 0.1*3 niet hetzelfde als 0.3 (= 0,1 en 0,3 worden niet juist voorgesteld)
- Zie examenvraag 1
Examenvraag 16
Stel de hermite interpolerende veelterm van graad 3 door ( en ) en (, )
-> Volledig analoog als in boek 1, pagina 119. Vooral veel schrijfwerk denk ik. --Ben
Het gaat ook met de methode der onbepaalde coefficiënten op p 118. t/m zijn gevraagd, en er zijn 4 punten (dus 4 vgl.) gegeven. De 4 vergelijkingen zijn dan de volgende:
waarbij , , , , en bekenden zijn, en de onbekenden. Verder dus een gewoon stelsel met parameters. Oplossen en klaar, ook deze methode zal wel heel wat schrijfwerk zijn... --Stevel 24 jan 2006 14:58 (CET)
Examenvraag 17
Gegeven de methode van Newton Raphson. Verklaar de relatieve fouten grafiek van een willekeurige 5de graads veelterm met 3 nulpunten en geef de convergentiesnelheid (hint: die is 0 )
Examenvraag 18
Methode van de machten: zie examenbundel wina (hint: normalisatie beïnvloedt alleen het niet-overlopen, en NIET de componenten van je x_0 tov de andere eigenvectoren)
Examenvraag 19
Dubbel met examenvraag 5
(x-2)(x-4)...(x-30)
en dan diezelfde uitgewerkt.
De fouten verklaren die optreden bij de uitgewerkte veelterm.
Examenvraag 20
niet-lineaire stelsels, grafieken bespreken.
Examenvraag 21
Dubbel met examenvraag 2
QR factorisatie, Q, R, Q'b, etc gegeven, stond helemaal in de cursus
Examenvraag 22
Dubbel met examenvraag 5
Neem de examenvragenbundel mee, want daar staat de vraag helemaal in uitgewerkt (in het ding da ni in TeX is uitgewerkt). Je hebt een Wilkinsonachtige veelterm.
(x-2)(x-47)...(x-18) of zo iets. Als ge die zo in matlab uitvoert, dan is da ne juiste grafiek. als ge die echter eerst laat uitrekenen, dan geeft die fouten. De fouten worden heel groot als x groter wordt. Hoe komt dat? Je moet zeker een uitwerking geven van fouten enzo. Het komt er dan op neer dat de fout drastisch groter zal worden als x groter wordt.
Examenvraag 23
Je hebt de methode van NR om een stelsel van twee niet-lineaire vgln op te lossen. Deze gaat even naar een vreemde waarde op de grafiek. Dit is omdat de startvector dicht bij een waarde ligt waar de jacobiaan singulier is (det J = 0) . Gevraagd is de convergentieorde -en factor gevraagd. Dan heb je dezelfde vgln (ook grafiekjes) van de totale stapmethode en enkelv. stapmeth. Ook is convergentieorde en -factor gevraagd. Je kan die een beetje afleiden uit het grafiekje van de rel. fout. (let op: bij de laatste was da lineair, maar 't was een randgeval of zo iets) De twee grafieken raken, dus zijn het allemaal randgevallen die ge moet geven als oplossing. Bij enkelv. stapmeth.: waarom convergeert da naar het andere punt? -> singulier gedoe van J. Hoe kunnen we dat naar het andere punt laten gaan?-> andere volgorde van vgl oplossen. Een prulvraag waar het vooral op de mondelinge verdediging aankomt.
Examenvraag 24
Je krijgt een willekeurige 8*10-matrix (A), de Q en R ervan. Ook heb je een willekeurige 8*1-vector b. Dan geven ze je Q'b=bt .
Gevraagd: min_(x)||Ax-b||_ 2 tot op twee cijfers na de komma.
Een methode hoe je dit moet berekenen.
Naar 't schijnt iet's met kleinste waarden benadering.
Examenvraag 25
Gegeven is een functie f(x) = sin(x) in het interval (-pi,pi).
Gevraagd : geef een bovengrens op de interpolatie-fout als ge weet dat uw interpolerende veelterm p is die in n-1 interpolatiepunten interpoleert.
--> Gewoon formulekes uit het boek overschrijven + invullen en uitwerken. Gelukkig wordt uw n-de afgeleide sin() dus wordt da 1, Dus hangt die waarde enkel af van (x-x_0)(x-x_1)...(x-x_n). Nu wil hij wel een concrete waarde. Dan moet ge dus inzien dan (x-x_i) hoogsten 2*pi is en dan bekomt ge (2*pi)^n/n!
Examenvraag 26
Gaat over Newton-Raphson en het bepalen van sqrt(a). Ge krijgt een iteratie-functie gegeven. Gevraagd : de functie bepalen die als wortel sqrt(a) heeft. En dan wa analyseren.
--> Oefening in oefenzitting gezien, dus eigenlijk met een paar kleine aanpassingen gewoon overschrijven.
Examenvraag 27
Gegeven een matrix en een startwaarde, bespreek dan wat er gebeurt als ge de methode van de machten toepast daarop.
--> Blijkbaar is de eigenvector die ge uitkomt nul,... blablabla...??
Examenvraag 28
Examenvraag uit eerste oefenzitting
Examenvraag 29
Zij A een matrix waarbij alle elementen nul zijn behalve de elementen op de diagonaal en antidiagonaal. Schrijf een algoritme om het stelsel AX=B op te lossen.
Bijschrift Amemes: Niet zo moeilijk als ge even nadenkt. Gewoon n/2 keer Gauss op 2*2-stelsels.
Ruben: Het stelsel ziet er dus als volgt uit:
| x 0 0 0 x | | x 0 0 0 0 x | | 0 x 0 x 0 | Of, bij n even: | 0 x 0 0 x 0 | | 0 0 x 0 0 | | 0 0 x x 0 0 | | 0 x 0 x 0 | | 0 0 x x 0 0 | | x 0 0 0 x | | 0 x 0 0 x 0 | | x 0 0 0 0 x |
Waarbij elke x een getal voorstelt. We kunnen hier een versimpelde versie van Gauss gebruiken (door de speciale structuur van de matrix).
for (i = n/2; i < n; i++) { // Eerste x van de regel nul maken, we houden m bij, de parameter uit de derde // elementaire transformatie van Gauss, om er nadien de 2e x van de regel mee // te berekenen. Eigenlijk zouden we A(i, n-1-i) ook op deze manier moeten // berekenen, maar we weten reeds dat dit toch nul wordt. m = A(i-n/2, n-1-i) / A(i, n-1-i); A(i, n-1-i) = 0; // Tweede getal van de regel berekenen met de gevonden factor m (wederom een // derde elementaire transformatie van Gauss (zie p. 46)). A(i, i) = A(i, i) - m * A(i-n/2, i); // Resultaatkolom berekenen. B(i) = B(i) - m * B(i-n/2); B(i) = B(i) / A(i, i); A(i, i) = 1; // We kunnen nu meteen ook de resultaten in de hogere kolom oplossen. B(i-n/2) = B(i-n/2) - A(i-n/2, i) * B(i); A(i-n/2, i) = 0; A(i-n/2, n-1-i) = 1; }
Zoals je kunt zien wordt de herleidingsstap en de substitutiestap dus tegelijk gedaan, dit is mogelijk omdat de rijen mekaar (door de structuur van de matrix) niet beïnvloeden. Een versie die de stappen niet combineert, en elk deel van de diagonalen apart behandelt (dus met een lus of 4 denk ik) is veel leesbaarder (en dat kan belangrijk zijn op een examen), mijn versie is nogal gecombineerd / geoptimaliseerd.
Zou moeten werken, denk ik.
--RubenV 19 jan 2006 17:59 (CET) NIET NAGEKEKEN
Alternatieve oplossing:
int[][] A = new int[n][n]; // de matrix A uit AX = B int[] B = new int[n]; // de matrix B uit AX = B int[] oplossing = new int[n]; // de matrix X uit AX = B int boven = n-1; int onder = 0; // we laten de bovenste rij naar de onderste rij toekomen // we lossen telkens het 2x2 stelseltje op gevormd door de huidige bovenste en onderste rij while(boven > onder) { int[] oplossingen = los2x2op(A[boven][boven],A[boven][onder],A[onder][boven],A[onder][onder],B[boven],B[onder]); oplossing[boven] = oplossingen[0]; oplossing[onder] = oplossingen[1]; onder++; boven--; } if(boven == onder) { oplossing[onder] = B[onder]/A[onder][onder]; }
/** * Lost 2x2 stelseltje van de volgende vorm op: * [ a11 a12 ] * [ x1 ] = [ b1 ] * [ a21 a22 ] [ x2 ] [ b2 ] * Geeft x1 en x2 terug als eerste en tweede element van een array terug. */ public int[] los2x2op(a11,a12,a21,a22,b1,b2) { a22 -= (a11/a21)*a12; b2 -= (a11/a21)*b1; x2 = b2/a22; x1 = (b1-a12*x2)/a11; return new int[] {x1,x2}; }
--Thomas 19 jan 2006 21:07 (CET) NAGEKEKEN en goed bevonden door Ben (19 jan 2006 21:55)
Examenvraag 30
Stelsel van 2 niet-lineaire vergelijkingen. Convergentiegetal en -orde bepalen.
Examenvraag 31
Matrix [ a b; c d] met a = 10^-5 b = 10^-5 c = 3 - a d = ab - 2 / b
Startwaarde [1; 1]
Zoek convergentiegetal en orde en waarom is er zo'n grote fout?
Examenvraag 32
matrix met op eerste rij a1, a2,..., an en dan op de diagonaal onder de hoofddiagonaal allemaal eentjes en rest van elementen zijn 0.
Gegeven is dat λ1 > dan alle andere eigenwaardes.
Dan is het volgende proggrammake gegeven;
Kies X^(0) willekeurig for i = 1 tot n X^(i) = A * X^(i-1)
Scaleer deze zodat laatste component 1 wordt
Nu moet je bewijzen dat de voorlaatste component naar λ1 convergeert
Oplossing
Aangezien dit een niet zo makkelijke oefening is, heb ik er een oplossing van gezocht.
Eerst moeten we bepalen waar de scalering aan gelijk is:
Cp * X(0) is gelijk aan:
[ a_1*x_1 + a_2*x_2 + ... a_n*x_n ] (=f1) [ x_1 ] [ . ] [ . ] [ x_(n-1) ]
En als we dit nog eens doen (en we scaleren met de factor xn-2(de voorlaatste component!!)) verkrijgen we:
[ f1/x_(n-2)*x_1 + f1/x_(n-2)*x_2 + ... + f1/x_(n-2) ] [ f1/x_(n-2) ] [ . ] [ . ] [ 1 ]
Het is dus duidelijk dat dit de juiste scaleringsfactor is!
Nu weten we dat X(k) = A * X(k-1) / s(k-1) (met s de scalering die we telkens doen)
Nog een stap verder wordt dit: X(k) = A * A * X(k-2) / (s(k-1)*s(k-2))
Als we dit helemaal verderzetten krijgen we dus dat:
(k) k 0 X = A * X ----------------- i PRODUCT(i=0..k) s
(1) Dus X(k) * (PRODUCT) = Ak*X0
In boek 2 op p. 99 staat dat bij het berekenen van een dominante eigenwaarde dat A(k+1)*X(0) / A(k)*X(0) gelijk is aan λ1 voor k gaande naar oneindig.
Als we dit toepassen op wat we hierboven zijn uitgekomen(nl. (1)) krijgen we dat:
X(k+1) * (PRODUCT(i=0..k+1) / X(k) * (PRODUCT(i=0..k)) = λ1
Nu weten we dat X(k+1) / X(k) = 1 (we scaleren immers telkens opnieuw...)
Dus blijft er enkel over dat s(k+1) = λ1
Dit betekent dus dat de voorlaatste component gaat convergeren naar λ1
En dus het gevraagde is bewezen!