0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 14
1

Программа для вычисления Ряда Тейлора

16.01.2014, 22:06. Показов 2748. Ответов 16
Метки нет (Все метки)

В общем сделал программу для вычисления ряда Тейлора.Но проблема вот в чем,не пойму откуда брать значения d и n,также не знаю как пишется знак бесконечности на C#.И почему-то не делаются вычисления.Помогите пожалуйста,завтра защита лабы(((

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
 
namespace _3._3._11
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("x начальное");
            double x = Convert.ToDouble(Console.ReadLine());
 
            Console.WriteLine("шаг dx=");
            double dx = Convert.ToDouble(Console.ReadLine());
 
            Console.WriteLine(" e= ");
            double e = Convert.ToDouble(Console.ReadLine());
 
            double a, b, c = 1;
            double n = 0; - не уверен что 0
            double d = 0; - не уверен что 0
 
            Console.WriteLine("|\tx\t|\tsin x/x\t|\tn\t|"); - правильно ли выразил Sin x/x ?
            while ((Math.Abs(x)) < Бесконечность) ;
            {
                while (Math.Pow(c, 2) >= Math.Pow(e, 2))
                {
                    n = n + 1;
                    a = 1;
                    b = (2.0 * n + 1.0) * Math.Pow(x, (2.0 * n + 1.0));
                    c = a / b;
                    d = d + c;
 
                    Console.WriteLine("|\t" + x + "\t|\t" + d.ToString("F4") + "\t|\t" + n + "\t|");
                }
 
                x = x + dx;
                c = 1;
                n = 0; тоже самое
                d = 0; тоже самое
            }
        }
    }
}
Миниатюры
Программа для вычисления Ряда Тейлора  
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.01.2014, 22:06
Ответы с готовыми решениями:

Программа для вычисления e в стени x с помощью ряда Тейлора
помогита пожалуиста нужно зделать программу для вычисления e в стени x с помощью Ряды Тейлора ...

Составить программу для вычисления суммы ряда
class Program { static void Main(string args) { int summ = 0,...

Создать программу для вычисления частичной суммы ряда
Нужно написать программу, которая вычисляет частичную сумму ряда: 1-1/3+1/5-1/7+1/9-... и сравнить...

Сумма ряда Тейлора
Реализовать алгоритм вычисления функции с заданной точностью e = 0,00001 используя разложение в...

16
2431 / 1831 / 404
Регистрация: 15.12.2013
Сообщений: 8,119
16.01.2014, 22:08 2
Цитата Сообщение от Roronoa Посмотреть сообщение
также не знаю как пишется знак бесконечности на C#.
А зачем он вам?
0
184 / 184 / 29
Регистрация: 14.04.2013
Сообщений: 499
16.01.2014, 22:09 3
Roronoa, n обычно задают.А знак бесконечности вам не нужен.Модуль х меньше бесконечности,если х-действительное число
0
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 14
16.01.2014, 22:38  [ТС] 4
Цитата Сообщение от Закревский Посмотреть сообщение
Roronoa, n обычно задают.А знак бесконечности вам не нужен.Модуль х меньше бесконечности,если х-действительное число
А можно в виде кода?
0
550 / 318 / 138
Регистрация: 08.02.2013
Сообщений: 609
16.01.2014, 22:39 5
Цитата Сообщение от Roronoa Посмотреть сообщение
А можно в виде кода?
C#
1
while (true) { ... }
0
184 / 184 / 29
Регистрация: 14.04.2013
Сообщений: 499
16.01.2014, 22:43 6
Roronoa, думаю вам просто стоит глянуть сюда
0
550 / 318 / 138
Регистрация: 08.02.2013
Сообщений: 609
16.01.2014, 22:47 7
Roronoa, Это условие отвечает за выбор x для которого считается значение функции, чтобы остановить вычисления нужно задать правую границу, бесконечность это хорошо не рационально:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Console.WriteLine("x начальное");
double x = Convert.ToDouble(Console.ReadLine());
 
Console.WriteLine("x конечное");
double xEnd = Convert.ToDouble(Console.ReadLine());
 
Console.WriteLine(" e= ");
double e = Convert.ToDouble(Console.ReadLine());
 
Console.WriteLine("шаг dx=");
double dx = Convert.ToDouble(Console.ReadLine());
 
while (x < xEnd + e)
{
     ... // Вычисление значения функции для текущего x (это Ваш внутренний цикл)
      
     x += dx;
}
0
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 14
17.01.2014, 20:21  [ТС] 8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication33
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("x nachalnoe");
            double x = Convert.ToDouble(Console.ReadLine());
 
            Console.WriteLine("x konechnoe");
            double y = Convert.ToDouble(Console.ReadLine());
 
            Console.WriteLine("shag dx");
            double dx = Convert.ToDouble(Console.ReadLine());
 
            Console.WriteLine("е =");
            double e = Convert.ToDouble(Console.ReadLine());
 
            double a, b = 1, c = 1, d = 1; //числитель, знаменатель, ур-ние, сумма
            double n = 0;
 
            Console.WriteLine("|\tx\t|\t(sin x)/x\t|\tn\t|");
 
            while (Math.Abs(x) <= y)
            {
                while (Math.Abs(c) > Math.Abs(e))
                {
                    a = Math.Pow((-1), n) * Math.Pow(x, 2 * n);
                    for (double i = 0; i <= n; i++)
                    {
                        if (i > 0)
                            b = b * (2 * i + 1);
                        else b = 1;
                    }
                    c = a / b;
                    d = d + c;
 
                    b = 1;
                    n++;
                }
                Console.WriteLine("|\t" + x + "\t|\t" + d + "\t|\t" + n + "\t|");
                n = 0;
                c = 1;
                x = x + dx;
                d = 0;
                Console.Read();
            }
        }
    }
}
В общем вроде написал,но не высчитывает область от -3 до 4 например ... Высчитывает только минус 3 и всё
0
550 / 318 / 138
Регистрация: 08.02.2013
Сообщений: 609
20.01.2014, 16:33 9
Цитата Сообщение от Roronoa Посмотреть сообщение
В общем вроде написал,но не высчитывает область от -3 до 4 например ... Высчитывает только минус 3 и всё
Наверняка задаете шаг больше длины отрезка [-3, 4]. попробуйте dx = 0.5; + после каждого вывода у Вас программа просит нажать на клавишу, чтобы работать дальше.
Цитата Сообщение от Roronoa Посмотреть сообщение
while (Math.Abs(x) <= y)
Вот это считаю неверным (хотя может вписывается в текст задачи). Условие записанное в формуле |x|<∞ - означает, что представление (формула) справедливо для всех конечных x - чисто математическое замечание не связаное с программой. Т.О. модуль лишний, он даже будет мешать, например, для отрезка [-7,2] условие не выполнится т.к. |-7| > 2 и вычисляться ничего не будет.
0
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 14
04.02.2014, 22:21  [ТС] 10
Помогите уже дорешать =((( Решаю уже 2 недели,пришёл вот к такому:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
 
namespace _3._3._11
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("x nachalnoe");
            double x = Convert.ToDouble(Console.ReadLine());
 
            Console.WriteLine("x konechnoe");
            double xEnd = Convert.ToDouble(Console.ReadLine());
 
            Console.WriteLine(" e= ");
            double e = Convert.ToDouble(Console.ReadLine());
 
            Console.WriteLine("shag dx=");
            double dx = Convert.ToDouble(Console.ReadLine());
 
            double a,b,c, d = 1;
            double n = 0;
 
            Console.WriteLine("|\tx\t|\t(sin x)/x\t|\tn\t|");
            while (x < xEnd + e)
            {
                while (Math.Abs(c) >= Math.Abs(e))
                {
                    n = n + 1;
                    a = Math.Pow((-1), n) * Math.Pow(x, 2 * n);
                    for (double i = 0; i <= n; i++)
                    {
                        if (i > 0)
                            b = b * (2 * i + 1);
                        else b = 1;
                    }
                    c = a / b;
                    d = d + c;
 
                    Console.WriteLine("|\t" + x + "\t|\t" + d.ToString("F4") + "\t|\t" + n + "\t|");
                }
                x = x + dx;
                c = 1;
                n = 0;
                d = 1;
            }
            Console.ReadKey();
        }
    }
}
Но тут пишет что я использую локальные переменные с и b которым не присвоено значение,уже не знаю что делать((
Миниатюры
Программа для вычисления Ряда Тейлора  
0
Заблокирован
04.02.2014, 22:50 11
Цитата Сообщение от Roronoa Посмотреть сообщение
Но тут пишет что я использую локальные переменные с и b которым не присвоено значение,уже не знаю что делать((
все правильно пишет, какое у этих переменных должно быть начальное значение?
0
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 14
04.02.2014, 23:16  [ТС] 12
Я же написал что 1.
0
Заблокирован
05.02.2014, 09:20 13
Roronoa, и где в программе вы это указываете?

Тем более вам уже давали ссылку
Вычислить (sin x)/x используя ряд Тейлора
переделать под вашу задачу будет нетрудно.
0
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 14
10.02.2014, 21:30  [ТС] 14
Наше обучение ещё не дошло до таких формул и их использования.Поэтому переделать будет весьма проблематично.И мне нужна система,чтобы он показывал от -3 до 4 например.
0
Заблокирован
11.02.2014, 08:22 15
какие конкретно формулы в этом коде:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
static void Main(string[] args)
        {
            double x;
            do
            {
                Console.Write("Введитe X: ");
            } while (!Double.TryParse(Console.ReadLine(), out x) || x==0);
            Console.WriteLine("Taylor's(X)  : {0}", CalcSin(x));
            Console.WriteLine("Math.Sin(X)/X: {0}", Math.Sin(x) / x);
            Console.ReadLine();
        }
 
        static double CalcSin(double x)
        {
            double sum = 1, sqrt = x * x, min = 1E-12, mem = 1;
            int n = 2, mul = -1;
            do
            {
                mem = mem * sqrt / n++ / n++;
                sum += mul * mem;
                mul =  - mul;
            } while (mem > min || mem < -min);
 
            return sum;
        }
вы еще не использовали?
0
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 14
11.02.2014, 09:03  [ТС] 16
Ты неправильно понял) Всё это использовалось,но при минимальной сложности и поверхностно.И в совокупности получается очень сложно.
0
Заблокирован
11.02.2014, 10:45 17
Вот теперь я совсем не понял.Если нужен отрезок от -3 до 4:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
static void Main(string[] args)
        {
             for (double x = -3; x <= 4; x += 0.5)
            {
                Console.WriteLine("Taylor's(X)  : {0}", CalcSin(x));
                Console.WriteLine("Math.Sin(X)/X: {0}", Math.Sin(x) / x);
            }
            Console.ReadLine();
        }
 
        static double CalcSin(double x)
        {
            double sum = 1, sqrt = x * x, min = 1E-12, mem = 1;
            int n = 2, mul = -1;
            do
            {
                mem = mem * sqrt / n++ / n++;
                sum += mul * mem;
                mul = -mul;
            } while (mem > min || mem < -min);
 
            return sum;
        }
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.02.2014, 10:45
Помогаю со студенческими работами здесь

Программа для вычисления времени
Ребята подскажите что я не правильно делаю?? Код в принцип правильный только я может что то не так...

Программа для вычисления значения формулы
Нужна помощь с написание программы вычисляющей значение формулы. Задание звучит: Написать...

Программа для вычисления суммы цифр
Ввести натуральное число m и определить является ли сумма его цифр четной.

Программа для вычисления значений функции F(x)
Составить программу для вычисления значений функции F(x) на отрезке с шагом /г. Результат...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru