Professional Documents
Culture Documents
BTL Ex9 Cholesky
BTL Ex9 Cholesky
a)
> n:=3:
> A:= Matrix([[2,-1,0],[-1,2,-1],[0,-1,2]]);
2 -1 0
A := -1 2 -1
0 -1 2
> b:= Matrix([[3],[-3],[1]]);
3
b := -3
1
> B:= Matrix(n);
0 0 0
B := 0 0 0
0 0 0
> B[1,1] := sqrt(A[1,1]);
B1, 1 := 2
> unassign('j');
> for i from 2 to n-1 do B[i,i] := (A[i,i] -
sum('B[i,k]^2',k=1..i-1))^(1/2); for j from i + 1 to n do
B[j,i] := (A[j,i]-sum('B[j,k].B[i,k]',k = 1..i-1))/B[i,i];end do;
end do;
1
B2, 2 := 3 2
2
> unassign('i','j');
> B[n,n] := (A[n,n]-sum('B[n,k]^2',k=1..n-1))^(1/2);
1
B3, 3 := 4 3
3
> B;
2 0 0
1 1
0
2 3 2
2 2
1 1
0 3 2 4 3
3 3
> y :=Matrix(n,1);
0
y := 0
0
> y[1,1] := b[1,1]/B[1,1];
3
y1, 1 := 2
2
> for i from 2 to n do y[i,1] := (b[i,1]-sum('B[i,j].y[j,1]', j =
1..i-1))/B[i,i]; end do;
1
y2, 1 := 3 2
2
y3, 1 := 0
> unassign('i','j');
> y;
3 2
2
1
2 3 2
0
> x:= Matrix(n,1);
0
x := 0
0
> x[n,1] := y[n,1]/B[n,n];
x3, 1 := 0
x1, 1 := 1
> x;
1
-1
0
Câu b)
> n:=4:
> A:= Matrix([[4,1,1,1],[1,3,-1,1],[1,-1,2,0],[1,1,0,2]]);
4 1 1 1
1 3 -1 1
A :=
1 -1 2 0
1 1 0 2
> b:= Matrix([[0.65],[0.05],[0],[0.5]]);
.65
.05
b :=
0
.5
> B:= Matrix(n);
0 0 0 0
0 0 0 0
B :=
0 0 0 0
0 0 0 0
> B[1,1] := sqrt(A[1,1]);
B1, 1 := 2
y3, 1 := .01643356644 13 11
y4, 1 := .01923076923 20 13
> unassign('i','j');
> y;
.3250000000
.01022727273 11 4
.01643356644 13 11
.01923076923 20 13
> x:= Matrix(n,1);
0
0
x :=
0
0
> x[n,1] := y[n,1]/B[n,n];
x4, 1 := .2500000000
> for i from n-1 to 1 by -1 do x[i,1] := (y[i,1] -
sum('B[j,i].x[j,1]',j = (i+1)..n))/B[i,i]; end do;
x3, 1 := -.2000000001
x2, 1 := -.2000000001
x1, 1 := .2000000000
> x;
.2000000000
-.2000000001
-.2000000001
.2500000000
Câu c)
> n:=4:
> A:= Matrix([[4,1,-1,0],[1,3,-1,0],[-1,-1,5,2],[0,0,2,4]]);
4 1 -1 0
1 3 -1 0
A :=
-1 -1 5 2
0 0 2 4
> b:= Matrix([[7],[8],[-4],[6]]);
7
8
b :=
-4
6
> B:= Matrix(n);
0 0 0 0
0 0 0 0
B :=
0 0 0 0
0 0 0 0
> B[1,1] := sqrt(A[1,1]);
B1, 1 := 2
> unassign('j');
> for i from 2 to n-1 do B[i,i] := (A[i,i] -
sum('B[i,k]^2',k=1..i-1))^(1/2); for j from i + 1 to n do
B[j,i] := (A[j,i]-sum('B[j,k].B[i,k]',k = 1..i-1))/B[i,i];end do;
end do;
1
B2, 2 := 11 4
4
1
B3, 3 := 50 11
11
> unassign('i','j');
> B[n,n] := (A[n,n]-sum('B[n,k]^2',k=1..n-1))^(1/2);
1
B4, 4 := 78 25
25
> B;
2 0 0 0
1 1
11 4 0 0
2
4
-1 3 1
11 4 50 11 0
2 44 11
1 1
0 0 50 11 78 25
25 25
> y :=Matrix(n,1);
0
0
y :=
0
0
> y[1,1] := b[1,1]/B[1,1];
7
y1, 1 :=
2
> for i from 2 to n do y[i,1] := (b[i,1]-sum('B[i,j].y[j,1]', j =
1..i-1))/B[i,i]; end do;
25
y2, 1 := 11 4
44
3
y3, 1 := 50 11
275
2
y4, 1 := 78 25
25
> unassign('i','j');
> y;
7
2
25
11 4
44
3
50 11
275
2
25 78 25
> x:= Matrix(n,1);
0
0
x :=
0
0
> x[n,1] := y[n,1]/B[n,n];
x4, 1 := 2
x2, 1 := 2
x1, 1 := 1
> x;
1
2
-1
2
Câu d)
> n:=4:
> A:= Matrix([[6,2,1,-1],[2,4,1,0],[1,1,4,-1],[-1,0,-1,3]]);
6 2 1 -1
2 4 1 0
A :=
1 1 4 -1
-1 0 -1 3
> b:= Matrix([[0],[7],[-1],[-2]]);
0
7
b :=
-1
-2
> B:= Matrix(n);
0 0 0 0
0 0 0 0
B :=
0 0 0 0
0 0 0 0
> B[1,1] := sqrt(A[1,1]);
B1, 1 := 6