Advertisement
Guest User

Untitled

a guest
May 21st, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. ClearAll[Matrix];
  2.  
  3. (*------------------------------------------------------------------*)
  4.  
  5. h = 0.1;
  6. Xy = Range[-1.0, 1.0, h];
  7. t = Length[Xy] + 2;
  8. Cstala = (1/(h^2)) + (1/(2*h));
  9. Astala = (1/(h^2)) - (1/(2*h));
  10. Bstala = -2/(h^2);
  11.  
  12. (*------------------------------------------------------------------*)
  13. \
  14.  
  15. (* f(x) = 2x + 1, interval : -1 , 1 , step : 0.1 *)
  16. alfaZero = 0;
  17. alfaN = 0;
  18. betaZero = 0;
  19. betaN = 0;
  20. n = t - 1;
  21. A = Table[0, {i, n - 1}];
  22. B = Table[0, {i, n - 1}];
  23. CVector = Table[0, {i, n - 1}];
  24. F = Table[0, {i, n - 1}];
  25. TableAlfa = Table[0, {i, n + 1}];
  26. TableBeta = Table[0, {i, n + 1}];
  27. TableAlfa[[1]] = alfaZero;
  28. TableAlfa[[n + 1]] = alfaN;
  29. TableBeta[[1]] = betaZero;
  30. TableBeta[[n + 1]] = betaN;
  31.  
  32. (*------------------------------------------------------------------*)
  33. \
  34.  
  35. (* Fill the Vectors A, B, C and F for function f(x) = 2x + 1 in \
  36. range (-1,1) with step 0.1 *)
  37. For[i = 1, i <= n - 1, i++,
  38. A[[i]] = 1*Astala;
  39. B[[i]] = (-1)*(Bstala + Xy[[i]]);
  40. CVector[[i]] = 1*Cstala;
  41. F[[i]] = 2*Xy[[i]] + 1; (* f(x) = 2x + i *)
  42. ];
  43.  
  44.  
  45. (*------------------------------------------------------------------*)
  46.  
  47. (*Fill the alfa and beta vectors---------------------------------the \
  48. vectors A,B,C,F are indexing from 1 to N-1\[Rule]size is N-1 the \
  49. vectors alfa and beta are indexing from 0 to N\[Rule]size is N+1 So \
  50. that is the reason why when we take alfa[i] and A[i] we need to index \
  51. A[i-1],because it has indexes ones \
  52. back---------------------------------*)
  53. For[i = 2, i < n + 1, i++,
  54. TableAlfa[[i]] = (-1*
  55. CVector[[i - 1]])/(A[[i - 1]]*TableAlfa[[i - 1]] - B[[i - 1]]);
  56. TableBeta[[i]] = (F[[i - 1]] -
  57. A[[i - 1]]*TableBeta[[i - 1]])/(A[[i - 1]]*TableAlfa[[i - 1]] -
  58. B[[i - 1]]);
  59. ];
  60.  
  61. (*------------------------------------------------------------------*)
  62.  
  63. (*Calculating resaults depended on alfa and beta \
  64. values------------------------------------------------------------------\
  65. *)
  66. U = Table[0, {i, n + 1}];
  67. (*Firstly,calculate U[n]*)
  68. U[[n + 1]] = (TableAlfa[[n + 1]]*TableBeta[[n]] +
  69. TableBeta[[n + 1]])/(1 - TableAlfa[[n + 1]]*TableAlfa[[n]]);
  70. (*Then,calculate backward U*)
  71. For[i = n, i > 0, i--,
  72. U[[i]] = TableAlfa[[i]]*U[[i + 1]] + TableBeta[[i]];];
  73.  
  74. (*------------------------------------------------------------------*)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement