function olek format compact strich = '---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ----'; for i=-16:16 a=10^i; strich %gibts auch eine "print-funktion" a %wie koennte man das auf eine zeile kriegen (ich wollte ein alpha = a ausgeben auf einer linie)? ausrechnen(a); ausrechnenkond(a); end format loose function ausrechnen(a) A=[2 2*a 2*a;1 2+a -a; 1 1 1]; b=[2*a; 0; 3/2]; %A\b inv(A)*b cond(A) function ausrechnenkond(a) A=[2/a 2 2;1/a 2/a+1 -1; 1/a 1/a 1/a]; b=[2; 0; 3/(a*2)]; %A\b inv(A)*b %ungenaue varainte um fehler zu zeigen %(damit matlab nicht vorkonditioniert) cond(A) >> olek strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e-16 ans = -0.0000 0.0000 1.5000 ans = 3.4534 ans = -0.0000 0.0000 1.5000 ans = 3.4534 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e-15 ans = -0.0000 0.0000 1.5000 ans = 3.4534 ans = -0.0000 0.0000 1.5000 ans = 3.4534 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e-14 ans = -0.0000 0.0000 1.5000 ans = 3.4534 ans = -0.0000 0.0000 1.5000 ans = 3.4534 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e-13 ans = -0.0000 0.0000 1.5000 ans = 3.4534 ans = -0.0000 0.0000 1.5000 ans = 3.4534 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e-12 ans = -0.0000 0.0000 1.5000 ans = 3.4534 ans = -0.0000 0.0000 1.5000 ans = 3.4534 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e-11 ans = -0.0000 0.0000 1.5000 ans = 3.4534 ans = -0.0000 0.0000 1.5000 ans = 3.4534 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e-10 ans = -0.0000 0.0000 1.5000 ans = 3.4534 ans = -0.0000 0.0000 1.5000 ans = 3.4534 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e-09 ans = -0.0000 0.0000 1.5000 ans = 3.4534 ans = -0.0000 0.0000 1.5000 ans = 3.4534 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e-08 ans = -0.0000 0.0000 1.5000 ans = 3.4534 ans = -0.0000 0.0000 1.5000 ans = 3.4534 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e-07 ans = -0.0000 0.0000 1.5000 ans = 3.4534 ans = -0.0000 0.0000 1.5000 ans = 3.4534 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e-06 ans = -0.0000 0.0000 1.5000 ans = 3.4534 ans = -0.0000 0.0000 1.5000 ans = 3.4534 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e-05 ans = -0.0000 0.0000 1.5000 ans = 3.4534 ans = -0.0000 0.0000 1.5000 ans = 3.4534 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e-04 ans = -0.0001 0.0001 1.5000 ans = 3.4535 ans = -0.0001 0.0001 1.5000 ans = 3.4535 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e-03 ans = -0.0005 0.0010 1.4995 ans = 3.4539 ans = -0.0005 0.0010 1.4995 ans = 3.4539 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 0.0100 ans = -0.0051 0.0100 1.4951 ans = 3.4591 ans = -0.0051 0.0100 1.4951 ans = 3.4591 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 0.1000 ans = -0.0556 0.0960 1.4596 ans = 3.6117 ans = -0.0556 0.0960 1.4596 ans = 3.6117 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1 Warning: Matrix is singular to working precision. > In /afs/ethz.ch/users/k/kusterth/homepage/html/numerik/3/ausrechnen.m at line 5 In /afs/ethz.ch/users/k/kusterth/homepage/html/numerik/3/olek.m at line 8 ans = NaN NaN NaN ans = 4.4126e+17 Warning: Matrix is singular to working precision. > In /afs/ethz.ch/users/k/kusterth/homepage/html/numerik/3/ausrechnenkond.m at line 5 In /afs/ethz.ch/users/k/kusterth/homepage/html/numerik/3/olek.m at line 9 ans = NaN NaN NaN ans = 4.4126e+17 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 10 ans = 0.5556 0.4040 0.5404 ans = 31.7847 ans = 0.5556 0.4040 0.5404 ans = 31.7847 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 100 ans = 0.5051 0.4900 0.5049 ans = 285.7329 ans = 0.5051 0.4900 0.5049 ans = 285.7329 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1000 ans = 0.5005 0.4990 0.5005 ans = 2.8313e+03 ans = 0.5005 0.4990 0.5005 ans = 2.8313e+03 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 10000 ans = 0.5001 0.4999 0.5000 ans = 2.8287e+04 ans = 0.5001 0.4999 0.5000 ans = 2.8287e+04 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 100000 ans = 0.5000 0.5000 0.5000 ans = 2.8285e+05 ans = 0.5000 0.5000 0.5000 ans = 2.8285e+05 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1000000 ans = 0.5000 0.5000 0.5000 ans = 2.8284e+06 ans = 0.5000 0.5000 0.5000 ans = 2.8284e+06 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 10000000 ans = 0.5000 0.5000 0.5000 ans = 2.8284e+07 ans = 0.5000 0.5000 0.5000 ans = 2.8284e+07 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 100000000 ans = 0.5000 0.5000 0.5000 ans = 2.8284e+08 ans = 0.5000 0.5000 0.5000 ans = 2.8284e+08 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e+09 ans = 0.5000 0.5000 0.5000 ans = 2.8284e+09 ans = 0.5000 0.5000 0.5000 ans = 2.8284e+09 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e+10 ans = 0.5000 0.5000 0.5000 ans = 2.8284e+10 ans = 0.5000 0.5000 0.5000 ans = 2.8284e+10 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e+11 ans = 0.5000 0.5000 0.5000 ans = 2.8284e+11 ans = 0.5000 0.5000 0.5000 ans = 2.8284e+11 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e+12 ans = 0.4999 0.5000 0.5000 ans = 2.8284e+12 ans = 0.4999 0.5000 0.5000 ans = 2.8284e+12 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e+13 ans = 0.5008 0.5000 0.5000 ans = 2.8284e+13 ans = 0.4980 0.5000 0.5000 ans = 2.8284e+13 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e+14 ans = 0.5008 0.5000 0.5000 ans = 2.8284e+14 ans = 0.5000 0.5000 0.5000 ans = 2.8284e+14 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e+15 ans = 0.3898 0.5000 0.5000 ans = 2.8284e+15 ans = 0.3750 0.5000 0.5000 ans = 2.8284e+15 strich = ---- alpha ---- ohne Vorkonditionierung (x, cond(A)) ---- mit Vorkonditionierung (x, cond(A)) ---- a = 1.0000e+16 Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 3.333333e-17. > In /afs/ethz.ch/users/k/kusterth/homepage/html/numerik/3/ausrechnen.m at line 5 In /afs/ethz.ch/users/k/kusterth/homepage/html/numerik/3/olek.m at line 8 ans = 1.5000 0.5000 0.5000 ans = 2.8284e+16 Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 3.333333e-17. > In /afs/ethz.ch/users/k/kusterth/homepage/html/numerik/3/ausrechnenkond.m at line 5 In /afs/ethz.ch/users/k/kusterth/homepage/html/numerik/3/olek.m at line 9 ans = -0.5000 0.5000 0.5000 ans = 2.8284e+16 >>