| iteration | |||
| 1 | 0.50000000000000 | 0.33333333333333 | 0.50000000000000 |
| 2 | 0.25000000000000 | 0.36017071357763 | 0.35491389049015 |
| 3 | 0.37500000000000 | 0.36042168047602 | 0.36046467792776 |
| 4 | 0.31250000000000 | 0.36042170296032 | 0.36042169766326 |
| 5 | 0.34375000000000 | 0.36042170296032 | 0.36042170296032 |
| iteration | |||
| 1 | 3.3070e-01 | -1.0000e+00 | 3.3070e-01 |
| 2 | -2.8662e-01 | -6.8418e-02 | -1.3807e-02 |
| 3 | 3.6281e-02 | -6.2799e-04 | 1.0751e-04 |
| 4 | -1.2190e-01 | -5.6252e-08 | -1.3252e-08 |
| 5 | -4.1956e-02 | -6.6613e-16 | 2.2204e-16 |
| iteration | |
||
| 1 | |||
| 2 | |||
| 3 | |||
| 4 | |||
| 5 |
|
|
|
|
| iteration | |
||
| 1 | 1.3958e-01 | -2.7088e-02 | 1.3958e-01 |
| 2 | -1.1042e-01 | -2.5099e-04 | -5.5078e-03 |
| 3 | 1.4578e-02 | -2.2484e-08 | 4.2975e-05 |
| 4 | -4.7922e-02 | -1.6653e-16 | -5.2971e-09 |
| 5 | -1.6672e-02 | 1.1102e-16 | 2.2204e-16 |
|
|
|
|
| 7.1644e+00 | -3.6916e+01 | 7.1644e+00 |
| -1.2640e+00 | 1.0793e+02 | -2.5342e+01 |
| -7.5744e+00 | 1.1163e+04 | -1.2816e+02 |
| -3.0421e-01 | 1.3501e+08 | -8.1130e+03 |
| 2.8744e+00 | -1.5000e+00 | -2.3856e+07 |
First method does not converge, while the second method converges faster than the third one. The second method converges at the fourth step because the next step is also at the same error level and they are small enough. The third one seems to converge at the fifth step since it is small enough.
From the error ratio table, first method has a monotonic behavior and it is also seen that it does not converge. The second method is the fastest method and it approaches to the exact value with the square of the error of the previous step in each iteration. The third one is also fast method but with the same ratio of the previous step.
| |
|||
| Name |
| |
|||
| Name | Bisection | Newton | Muller |
Since we do not care about the prices for each method, dealing just
with the numbers. Newton's method is the best one since it converges quadratically, so it is the fastest one.
>>solve('2*x-6*log(x)')
ans =
-3*lambertw(-1/3)
-3*lambertw(-1,-1/3)
>> -3*lambertw(-1/3)
ans = 1.8572
>> -3*lambertw(-1,-1/3)
ans = 4.5364
write the function
function fx=func(x)
fx=2*x-6*log(x);
save as func.m
write the function
function fx=funcdiff(x)
fx=2-6/x;
save as funcdiff.m
>> format long >> x0=1.5;x1=x0-(func(x0)/funcdiff(x0)) x1 = 1.78360467567551 >> x2=x1-(func(x1)/funcdiff(x1)) x2 = 1.85354064971539 >> x3=x2-(func(x2)/funcdiff(x2)) x3 = 1.85717450334217 >> x4=x3-(func(x3)/funcdiff(x3)) x4 = 1.85718386014596 >> x5=x4-(func(x4)/funcdiff(x4)) x5 = 1.85718386020784 >> x6=x5-(func(x5)/funcdiff(x5)) x6 = 1.85718386020784 >> x7=x6-(func(x6)/funcdiff(x6)) x7 = 1.85718386020784or start with
>> x0=3.1;x1=x0-(func(x0)/funcdiff(x0)) x1 = 12.22039636867234 >> x2=x1-(func(x1)/funcdiff(x1)) x2 = 5.97649660388231 >> x3=x2-(func(x2)/funcdiff(x2)) x3 = 4.74567026655091 >> x4=x3-(func(x3)/funcdiff(x3)) x4 = 4.54457398303521 >> x5=x4-(func(x4)/funcdiff(x4)) x5 = 4.53641793698142 >> x6=x5-(func(x5)/funcdiff(x5)) x6 = 4.53640365501743 >> x7=x6-(func(x6)/funcdiff(x6)) x7 = 4.53640365497353 >> x8=x7-(func(x7)/funcdiff(x7)) x8 = 4.53640365497353 >> x9=x8-(func(x8)/funcdiff(x8)) x9 = 4.53640365497353
same result.
%**********************************************
%i) Ax=b
>> A=[1 -2 4; 8 -3 2; -1 10 2]
>> b=[6 2 4]
>> GEPivShow(A,b')
Begin forward elimination with Augmented system:
1 -2 4 6
8 -3 2 2
-1 10 2 4
Swap rows 1 and 2; new pivot = 8
After elimination in column 1 with pivot = 8.000000
8.0000 -3.0000 2.0000 2.0000
0 -1.6250 3.7500 5.7500
0 9.6250 2.2500 4.2500
Swap rows 2 and 3; new pivot = 9.625
After elimination in column 2 with pivot = 9.625000
8.0000 -3.0000 2.0000 2.0000
0 9.6250 2.2500 4.2500
0 0 4.1299 6.4675
ans = -0.1132 0.0755 1.5660 %these are x1, x2, x3
>> det(A)
ans = 318
>> 8.0000*9.6250 *4.1299 %product of the diagonal of U
ans = 318.0023
% For LU-decomposition
>> [L,U,pv] = luPiv(A)
L = 1.0000 0 0
-0.1250 1.0000 0
0.1250 -0.1688 1.0000
U = 8.0000 -3.0000 2.0000
0 9.6250 2.2500
0 0 4.1299
pv =
2
3
1
% two times pivoting
%**********************************************
% ii) for not pivoting case;
>> GEshow(A,b')
Begin forward elimination with Augmented system:
1 -2 4 6
8 -3 2 2
-1 10 2 4
After elimination in column 1 with pivot = 1.000000
1 -2 4 6
0 13 -30 -46
0 8 6 10
After elimination in column 2 with pivot = 13.000000
1.0000 -2.0000 4.0000 6.0000
0 13.0000 -30.0000 -46.0000
0 0 24.4615 38.3077
ans = -0.1132 0.0755 1.5660
>> 1.0000*13.0000*24.4615
ans = 317.9995
% Solutions are the same. They are same because the system is
% not ill-conditioned.
%**********************************************
% iii) LUx=bb now bb=[-3 7 -2]
% First Check!
% L an U is found above. Coution: b --> Permutted b
% b=[2 4 6]
% Ly=b : Find y
>> y=GEPivShow(L,b')
Begin forward elmination with Augmented system:
1.000000000000000 0 0 2.000000000000000
-0.125000000000000 1.000000000000000 0 4.000000000000000
0.125000000000000 -0.168831168831169 1.000000000000000 6.000000000000000
After elimination in column 1 with pivot = 1.000000
1.000000000000000 0 0 2.000000000000000
0 1.000000000000000 0 4.250000000000000
0 -0.168831168831169 1.000000000000000 5.750000000000000
After elimination in column 2 with pivot = 1.000000
1.000000000000000 0 0 2.000000000000000
0 1.000000000000000 0 4.250000000000000
0 0 1.000000000000000 6.467532467532467
y =
2.000000000000000
4.250000000000000
6.467532467532467
% Ux=y : Find x
>> xx=GEPivShow(U,y)
Begin forward elmination with Augmented system:
8.000000000000000 -3.000000000000000 2.000000000000000 2.000000000000000
0 9.625000000000000 2.250000000000000 4.250000000000000
0 0 4.129870129870130 6.467532467532467
After elimination in column 1 with pivot = 8.000000
8.000000000000000 -3.000000000000000 2.000000000000000 2.000000000000000
0 9.625000000000000 2.250000000000000 4.250000000000000
0 0 4.129870129870130 6.467532467532467
After elimination in column 2 with pivot = 9.625000
8.000000000000000 -3.000000000000000 2.000000000000000 2.000000000000000
0 9.625000000000000 2.250000000000000 4.250000000000000
0 0 4.129870129870130 6.467532467532467
xx =
-0.113207547169811
0.075471698113208
1.566037735849056
% Same as before as expected!
% Now for bb=[-3 7 -2]
>> bb=[-3 7 -2]
bb = -3 7 -2
>> y=GEPivShow(L,bb')
Begin forward elmination with Augmented system:
1.000000000000000 0 0 -3.000000000000000
-0.125000000000000 1.000000000000000 0 7.000000000000000
0.125000000000000 -0.168831168831169 1.000000000000000 -2.000000000000000
After elimination in column 1 with pivot = 1.000000
1.000000000000000 0 0 -3.000000000000000
0 1.000000000000000 0 6.625000000000000
0 -0.168831168831169 1.000000000000000 -1.625000000000000
After elimination in column 2 with pivot = 1.000000
1.000000000000000 0 0 -3.000000000000000
0 1.000000000000000 0 6.625000000000000
0 0 1.000000000000000 -0.506493506493507
y =
-3.000000000000000
6.625000000000000
-0.506493506493507
>> xx=GEPivShow(U,y)
Begin forward elmination with Augmented system:
8.000000000000000 -3.000000000000000 2.000000000000000 -3.000000000000000
0 9.625000000000000 2.250000000000000 6.625000000000000
0 0 4.129870129870130 -0.506493506493507
After elimination in column 1 with pivot = 8.000000
8.000000000000000 -3.000000000000000 2.000000000000000 -3.000000000000000
0 9.625000000000000 2.250000000000000 6.625000000000000
0 0 4.129870129870130 -0.506493506493507
After elimination in column 2 with pivot = 9.625000
8.000000000000000 -3.000000000000000 2.000000000000000 -3.000000000000000
0 9.625000000000000 2.250000000000000 6.625000000000000
0 0 4.129870129870130 -0.506493506493507
xx =
-0.075471698113208
0.716981132075472
-0.122641509433962
% solution is completed
%**********************************************
%**********************************************
%Switching rows 2 &3 first
>> A=[7 -3 4; 2 5 3; -3 2 6]
>> B=[6 -5 2]
>> jacobi(A,B',P',0.01,20)
k = 1 P =
0.857142857142857
-1.000000000000000
0.333333333333333
k = 2 P =
0.238095238095238
-1.542857142857143
1.095238095238095
k = 3 P =
-0.429931972789116
-1.752380952380953
0.966666666666667
k = 4 P =
-0.446258503401361
-1.408027210884354
0.702494331065760
k = 5 P =
-0.147722708130871
-1.242993197278911
0.579546485260771
k = 6 P =
-0.006737933268545
-1.288638807904114
0.673803045027535
k = 7 P =
-0.080161229117497
-1.401586653709102
0.759510636000432
k = 8 P =
-0.177543215018434
-1.423641889953260
0.760448270010952
k = 9 P =
-0.187531249986227
-1.385251675999198
0.719109022475203
k = 10 P =
-0.147455873985486
-1.356452913490631
0.701318267006619
k = 11 P =
-0.124947401214053
-1.361808610609777
0.711756367504134
k = 12 P =
-0.133207328835124
-1.377074860016859
0.724795836262899
k = 13 P =
-0.147201132157454
-1.381594570223690
0.725754622254725
k = 14 P =
-0.149686028527138
-1.376572320489853
0.720264290662503
k = 15 P =
-0.144396303445653
-1.372284162986646
0.717347759233048
k = 16 P =
-0.140891932270305
-1.372650134161568
0.718563235939389
k = 17 P =
-0.141743335177466
-1.374781168655511
0.720437411918703
k = 18 P =
-0.143727593377335
-1.375565113080236
0.720722055296438
k = 19 P =
-0.144226222918065
-1.374942195826928
0.719991241004744
>> gseid(A,B',P',0.001,20)
k = 1 P =
0.857142857142857
-1.342857142857143
1.209523809523809
k = 2 P =
-0.409523809523810
-1.561904761904762
0.649206349206349
k = 3 P =
-0.183219954648526
-1.316235827664399
0.680468631897203
k = 4 P =
-0.095797430083144
-1.369962207105064
0.742088687326783
k = 5 P =
-0.154034481517475
-1.383639419789080
0.717529232504289
k = 6 P =
-0.145862169912057
-1.372172671537751
0.717793138889889
k = 7 P =
-0.141098652881830
-1.374236422181201
0.720862814286152
k = 8 P =
-0.143737217669745
-1.375022801503793
0.719805658333059
k = 9 P =
-0.143470148263374
-1.374495335694486
0.719763371099808
% Gauss-Seidel iterates much faster