next up previous contents index
Next: A.10 Metodo di bisezione Up: A. Esempi Previous: A.8 Risoluzione di sistemi   Indice   Indice analitico


A.9 Risoluzione di sistemi lineari fattorizzati con Gauss-Seidel

Risolvi Gauss-Seidel con toll=1E-08 e x=[0.5 ... 0.5]

A ? a diagonale dominante per righe, infatti

>> sum(abs(A)')'

ans =

    94		(50)
   104		(62)
    44		(24)
    63		(33)
   102		(53)
    68		(36)
    79		(45)
    66		(37)
   102		(62)
   115		(70)
   
>> A

A =

   -50     4    -3    -4    -4    -5   -12    -9    -1    -2
    -4    62    -8     1     0    -5     6    -2    -5    11
     1    -2   -24    -3     2     1    -2    -2    -6    -1
     7     2    -3    33    -3    -4     0    -6     1    -4
    -6    -8    -2    -9    53     8     4    -6     4     2
     3    -2    -2     8    -7    36     2     1     6    -1
    -4    -3    -8     1    -1     1   -45   -10    -1     5
    -2     2     5     3    -2    -1    -8    37     3     3
    -4    -5     6     7     4     1     2     3    62    -8
     6     0    -1   -11    -3     6    -5    -2    11   -70

>> x

x =

   0.50000000000000
   0.50000000000000
   0.50000000000000
   0.50000000000000
   0.50000000000000
   0.50000000000000
   0.50000000000000
   0.50000000000000
   0.50000000000000
   0.50000000000000

>> b=sum(A')'

b =

   -86
    56
   -36
    23
    40
    44
   -65
    40
    68
   -69

>> [x,i]=risolvi_gauseidel(A,b,x,1E-8,100)

x =

   0.99999999997183
   0.99999999996540
   1.00000000004242
   1.00000000008225
   0.99999999998184
   0.99999999996799
   0.99999999997300
   0.99999999997187
   0.99999999999729
   0.99999999998440

i =

    11

>> errore1=abs((x-k)./k)

errore1 =

  1.0e-010 *

   0.28166358134740
   0.34596991937974
   0.42416070655804
   0.82249318467120
   0.18156254277812
   0.32008729000665
   0.26998292490532
   0.28131719176372
   0.02707722934758
   0.15603962566502

>> [x,i]=risolvi_gauseidel(A,b,x,1E-10,100)

x =

   0.99999999999956
   0.99999999999946
   1.00000000000066
   1.00000000000129
   0.99999999999971
   0.99999999999950
   0.99999999999958
   0.99999999999956
   0.99999999999996
   0.99999999999976

i =

    13

>> errore1=abs((x-k)./k)

errore1 =

  1.0e-011 *

   0.04418687638008
   0.05442313266713
   0.06645795025406
   0.12896350654046
   0.02851052727237
   0.05022648963404
   0.04241051954068
   0.04410916076836
   0.00426325641456
   0.02445821323249
>> [x,i]=risolvi_gauseidel(A,b,zeros(10,1),1E-10,100)

x =

   1.00000000000016
   1.00000000000019
   0.99999999999976
   0.99999999999954
   1.00000000000010
   1.00000000000018
   1.00000000000015
   1.00000000000016
   1.00000000000002
   1.00000000000009

i =

    14

>> errore1=abs((x-k)./k)

errore1 =

  1.0e-012 *

   0.15654144647215
   0.19251267247000
   0.23547830352300
   0.45707881923818
   0.10103029524089
   0.17807977314988
   0.15010215292932
   0.15631940186722
   0.01509903313490
   0.08659739592076
>> u=k*5; [x,i]=risolvi_gauseidel(A,b,u,1E-10,100)

x =

   1.00000000000011
   1.00000000000014
   0.99999999999983
   0.99999999999968
   1.00000000000007
   1.00000000000013
   1.00000000000011
   1.00000000000011
   1.00000000000001
   1.00000000000006

i =

    15

>> errore1=abs((x-k)./k)

errore1 =

  1.0e-012 *

   0.11102230246252
   0.13633538742397
   0.16697754290362
   0.32385205628316
   0.07149836278586
   0.12612133559742
   0.10635936575909
   0.11080025785759
   0.01088018564133
   0.06150635556423
>> [x,i]=risolvi_gauseidel(A,b,k,1E-10,100)

x =

     1
     1
     1
     1
     1
     1
     1
     1
     1
     1


i =

     0
>> B

B =

     3     6     5    -5    -6     5    -5     2    -9    -9
     2     6    -7     1     4    -3     1    -2     5    -5
     5     4     2    -8   -11     0     5    12    -6     2
     3    -9    -9     1     1     1     1     4     1     2
   -14    -5    -8   -11    -4     5     0    -5     4    -3
     1     3     1     2    -4     3     2     4     4     0
     4    -5    -1     1     0    -2     6     3     0     2
    -1    -4    -6     3    -2    -7     7     3    -5     0
     4     3    -2    -4     4    -4    -6    -9    -1     1
     3     0    -3     3    -1     1     1     7    -5    10

>> b=sum(B')'

b =

   -13
     2
     5
    -4
   -41
    16
     8
   -12
   -14
    16

>> x

x =

   0.50000000000000
   0.50000000000000
   0.50000000000000
   0.50000000000000
   0.50000000000000
   0.50000000000000
   0.50000000000000
   0.50000000000000
   0.50000000000000
   0.50000000000000

>> [x,i]=risolvi_gauseidel(B,b,x,1E-8,100)

x =

  1.0e+307 *

   0.28487110312911
  -0.11842061768243
  -0.29998071079006
  -4.71888764765774
                Inf
                Inf
                NaN
                NaN
                NaN
                NaN

i =

    80
	
>> [x,i]=risolvi_gauseidel(B,b,x,1E-8,70)
??? Error using ==> risolvi_gauseidel
Ciclo terminato per numero di iterazioni superiore al limite
S.D.P.

>> A=floor(randn(10)*5)

A =

    -3    -1     1    -2    -9    -6     0     2     3     1
    -9     3    -7     3     1     3    -2    -2     3     0
     0    -3     3     4    -6     2     5    -2     4    -4
     1    10     8     3     7     8   -10    -2    -5    -3
    -6    -1    -4     6    -5     2     2    -8     1     2
     5     0     4     3     2    -4     4    -2     1    -5
     5     5     6     5     1     1     3     0    -6     3
    -1     0    -8    -7    -5    -6     2     1    -4     2
     1    -1    -8    -1   -11    -1     0     7     5    -5
     0    -5     2    -1    -1    -1     3    -2    -1    -2

>> B=A'*A

B =

   179    16   142    -8    64   -23    29    54   -63   -35
    16   171    81    54   126    98  -123   -11   -87     9
   142    81   323    93   182    79   -35   -50   -92   -25
    -8    54    93   159    46   102     6   -90     7   -22
    64   126   182    46   344   126  -114   -66  -126    24
   -23    98    79   102   126   172  -100   -57   -29   -16
    29  -123   -35     6  -114  -100   171   -14    41     1
    54   -11   -50   -90   -66   -57   -14   138    25   -19
   -63   -87   -92     7  -126   -29    41    25   139   -50
   -35     9   -25   -22    24   -16     1   -19   -50    97

>> det(A)

ans =

    2.135387572000000e+009

>> eig(B)

ans =

  1.0e+002 *

   0.02606632812549
   0.09310947296106
   0.37793051462311
   0.43016967141508
   0.70390510058177
   1.12878936451749
   1.88410992082603
   2.78514103352787
   3.43740518148593
   8.06337341193619

>> b=sum(B')'

b =

   355
   334
   698
   347
   606
   352
  -138
   -90
  -235
   -36
>> x

x =

   0.50000000000000
   0.50000000000000
   0.50000000000000
   0.50000000000000
   0.50000000000000
   0.50000000000000
   0.50000000000000
   0.50000000000000
   0.50000000000000
   0.50000000000000
   
>> [x,i]=risolvi_gauseidel(B,b,x,1E-15,500)

x =

   1.00000000000005
   1.00000000000011
   1.00000000000001
   0.99999999999987
   0.99999999999999
   1.00000000000006
   1.00000000000007
   0.99999999999992
   1.00000000000011
   1.00000000000004


i =

   338

next up previous contents index
Next: A.10 Metodo di bisezione Up: A. Esempi Previous: A.8 Risoluzione di sistemi   Indice   Indice analitico
2005-02-09