Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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());
        }
Exemplo n.º 3
0
        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());
        }