Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ClearAll[Matrix];
- (*------------------------------------------------------------------*)
- h = 0.1;
- Xy = Range[-1.0, 1.0, h];
- t = Length[Xy] + 2;
- Cstala = (1/(h^2)) + (1/(2*h));
- Astala = (1/(h^2)) - (1/(2*h));
- Bstala = -2/(h^2);
- (*------------------------------------------------------------------*)
- \
- (* f(x) = 2x + 1, interval : -1 , 1 , step : 0.1 *)
- alfaZero = 0;
- alfaN = 0;
- betaZero = 0;
- betaN = 0;
- n = t - 1;
- A = Table[0, {i, n - 1}];
- B = Table[0, {i, n - 1}];
- CVector = Table[0, {i, n - 1}];
- F = Table[0, {i, n - 1}];
- TableAlfa = Table[0, {i, n + 1}];
- TableBeta = Table[0, {i, n + 1}];
- TableAlfa[[1]] = alfaZero;
- TableAlfa[[n + 1]] = alfaN;
- TableBeta[[1]] = betaZero;
- TableBeta[[n + 1]] = betaN;
- (*------------------------------------------------------------------*)
- \
- (* Fill the Vectors A, B, C and F for function f(x) = 2x + 1 in \
- range (-1,1) with step 0.1 *)
- For[i = 1, i <= n - 1, i++,
- A[[i]] = 1*Astala;
- B[[i]] = (-1)*(Bstala + Xy[[i]]);
- CVector[[i]] = 1*Cstala;
- F[[i]] = 2*Xy[[i]] + 1; (* f(x) = 2x + i *)
- ];
- (*------------------------------------------------------------------*)
- (*Fill the alfa and beta vectors---------------------------------the \
- vectors A,B,C,F are indexing from 1 to N-1\[Rule]size is N-1 the \
- vectors alfa and beta are indexing from 0 to N\[Rule]size is N+1 So \
- that is the reason why when we take alfa[i] and A[i] we need to index \
- A[i-1],because it has indexes ones \
- back---------------------------------*)
- For[i = 2, i < n + 1, i++,
- TableAlfa[[i]] = (-1*
- CVector[[i - 1]])/(A[[i - 1]]*TableAlfa[[i - 1]] - B[[i - 1]]);
- TableBeta[[i]] = (F[[i - 1]] -
- A[[i - 1]]*TableBeta[[i - 1]])/(A[[i - 1]]*TableAlfa[[i - 1]] -
- B[[i - 1]]);
- ];
- (*------------------------------------------------------------------*)
- (*Calculating resaults depended on alfa and beta \
- values------------------------------------------------------------------\
- *)
- U = Table[0, {i, n + 1}];
- (*Firstly,calculate U[n]*)
- U[[n + 1]] = (TableAlfa[[n + 1]]*TableBeta[[n]] +
- TableBeta[[n + 1]])/(1 - TableAlfa[[n + 1]]*TableAlfa[[n]]);
- (*Then,calculate backward U*)
- For[i = n, i > 0, i--,
- U[[i]] = TableAlfa[[i]]*U[[i + 1]] + TableBeta[[i]];];
- (*------------------------------------------------------------------*)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement