private static void Lab2() { var answer = new TridiagonalSolution(a, b, c, d).GetAnswer(); Console.WriteLine("a:"); Console.WriteLine("b:"); Console.WriteLine("c:"); Console.WriteLine("d:"); Console.WriteLine("answer:"); Print(answer); }
public List <double> FiniteDifference(double h) { var A = new List <double> { 0 }; for (int i = 1; i < n - 1; i++) { A.Add(1 - p(x[i]) * h / 2); } A.Add(-gamma); var B = new List <double> { alpha *h - beta }; for (int i = 1; i < n - 1; i++) { B.Add(q(x[i]) * h * h - 2); } B.Add(delta * h + gamma); var C = new List <double> { beta }; for (int i = 1; i < n - 1; i++) { C.Add(1 + p(x[i]) * h / 2); } C.Add(0); var D = new List <double> { y0 *h }; for (int i = 1; i < n - 1; i++) { D.Add(f(x[i]) * h * h); } D.Add(y1 * h); var tridiagonal = new TridiagonalSolution(A, B, C, D); var answer = tridiagonal.GetAnswer(); return(tridiagonal.GetAnswer()); }
private double[] CountC() { var a = new List <double> { 0 }; Enumerable.Range(2, n - 3).Select(H).ToList().ForEach(a.Add); var b = Enumerable.Range(2, n - 2).Select(item => 2 * (H(item - 1) + H(item))).ToList(); var c = Enumerable.Range(2, n - 3).Select(H).ToList(); c.Add(0); var d = Enumerable.Range(2, n - 2) .Select(i => 3 * ((fi[i] - fi[i - 1]) / H(i) - (fi[i - 1] - fi[i - 2]) / H(i - 1))).ToList(); var answer = new TridiagonalSolution(a, b, c, d).GetAnswer(); answer.Insert(0, 0); answer.Insert(0, 0); return(answer.ToArray()); }