none
Найти массив сумм S элементов рекуррентного ряда для каждого значения последовательности x, (x меняется в пределах заданного диапазона с шагом ). Каждую сумму искать с точностью до h (прекращать суммировать, когда абсолютное значение очередного элемента RRS feed

  • Вопрос

  • Язык программирование С#! Найти массив сумм S элементов рекуррентного ряда для каждого значения последовательности x, (x меняется в пределах заданного диапазона с шагом h). Каждую сумму искать с точностью  до e (прекращать суммировать, когда абсолютное значение очередного элемента ряда становится меньше e).

    double
                   Xn, Xk, Hx, Eps;
                string line;
                int 
                   i, k;
                double
                    x, q, a1, a2;
                Console.WriteLine(" ****** ВВод исходных данных ******\n");
                Console.Write(" Xn =  "); line = Console.ReadLine();Xn = Double.Parse(line); 
                Console.Write(" Xk =  "); line = Console.ReadLine();Xk = Double.Parse(line);
                Console.Write(" Hx =  "); line = Console.ReadLine();Hx = Double.Parse(line);
                Console.Write("Eps =  "); line = Console.ReadLine();Eps = Double.Parse(line);
                int M = (int)((Xk - Xn + Hx) / Hx);
                double[] X = new double[M];
                double[] Sum = new double[M];
                int[] It = new int[M];
    
                x = Xn;
                k = 0;
                while (x <= Xk)
                {
                    X[k] = x;
                    Sum[k] = 1;
                    a1 = 1;
                    i = 0;
                    do
                    {
                        q = -x/1; 
                        a2 = a1 * q;
                        Sum[k] += a2;
                        a1 = a2;
                    } while (Math.Abs(a2) > Eps);
                    It[k] = i;
                    k++;
                    x += Hx;
                }
                Console.WriteLine("\n **** Результаты расчета пункта ****\n");
                for (k = 0; k < M; k++)
                    Console.Write("k = {0} \t Iter = {1}\t x ={2} \t Summa ={3}\n",
                        k, It[k], X[k], Sum[k]);
    В программе нет синтаксических ошибок  но результат не выходить!подскажите в чем проблема??может не правильно рекуррентность найдена?

    • Изменено AlcatrazV3 15 ноября 2013 г. 13:50
    14 ноября 2013 г. 20:48

Ответы

  • Здравствуйте. Здесь не оказывают помощь в решении курсовых и т.д. Вам могут помочь, если вы решая задачу столкнулись с проблемой. Начните писать код и если на каком то месте возникнут трудности, пишите.

    Yes, yes - am back!

    15 ноября 2013 г. 6:03
    Отвечающий
  • using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace social.msdn13
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("aap start");
                double x = 0.5;
                double xmax = 1.5;
                double xstep = 0.2;
                double xstop = Math.Pow(1, -4);
                double n = 3;
                double curStep = 0;
                double result = x;
                while (curStep >= xstop && x < xmax)
                {
                    curStep = (Math.Pow(x, n)) / n;
                    result -= (Math.Pow(x, n)) / n;
                    n += 3;
                    x += xstep;
    
                }
                Console.WriteLine(result.ToString());
                Console.ReadLine();
            }
        }
    }
    

    16 ноября 2013 г. 19:40

Все ответы

  • Здравствуйте. Здесь не оказывают помощь в решении курсовых и т.д. Вам могут помочь, если вы решая задачу столкнулись с проблемой. Начните писать код и если на каком то месте возникнут трудности, пишите.

    Yes, yes - am back!

    15 ноября 2013 г. 6:03
    Отвечающий

  • double
                   Xn, Xk, Hx, Eps;
                string line;
                int 
                   i, k;
                double
                    x, q, a1, a2;
                Console.WriteLine(" ****** ВВод исходных данных ******\n");
                Console.Write(" Xn =  "); line = Console.ReadLine();Xn = Double.Parse(line); 
                Console.Write(" Xk =  "); line = Console.ReadLine();Xk = Double.Parse(line);
                Console.Write(" Hx =  "); line = Console.ReadLine();Hx = Double.Parse(line);
                Console.Write("Eps =  "); line = Console.ReadLine();Eps = Double.Parse(line);
                int M = (int)((Xk - Xn + Hx) / Hx);
                double[] X = new double[M];
                double[] Sum = new double[M];
                int[] It = new int[M];
    
                x = Xn;
                k = 0;
                while (x <= Xk)
                {
                    X[k] = x;
                    Sum[k] = 1;
                    a1 = 1;
                    i = 0;
                    do
                    {
                        q = -x/1; 
                        a2 = a1 * q;
                        Sum[k] += a2;
                        a1 = a2;
                    } while (Math.Abs(a2) > Eps);
                    It[k] = i;
                    k++;
                    x += Hx;
                }
                Console.WriteLine("\n **** Результаты расчета пункта ****\n");
                for (k = 0; k < M; k++)
                    Console.Write("k = {0} \t Iter = {1}\t x ={2} \t Summa ={3}\n",
                        k, It[k], X[k], Sum[k]);
    В программе нет синтаксических ошибок  но результат не выходить!подскажите в чем проблема??может не правильно рекуррентность найдена?
    • Изменено AlcatrazV3 15 ноября 2013 г. 13:49
    15 ноября 2013 г. 7:57
  • Вы считаете сумму не по той формуле, которую сами же привели. В цикле do...while написана какая-то чепуха. И второе, начальное значение суммы должно быть = 0, а не 1.
    16 ноября 2013 г. 11:24
  • using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace social.msdn13
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("aap start");
                double x = 0.5;
                double xmax = 1.5;
                double xstep = 0.2;
                double xstop = Math.Pow(1, -4);
                double n = 3;
                double curStep = 0;
                double result = x;
                while (curStep >= xstop && x < xmax)
                {
                    curStep = (Math.Pow(x, n)) / n;
                    result -= (Math.Pow(x, n)) / n;
                    n += 3;
                    x += xstep;
    
                }
                Console.WriteLine(result.ToString());
                Console.ReadLine();
            }
        }
    }
    

    16 ноября 2013 г. 19:40