Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 14.03.2016
Сообщений: 5
1

Java. Рекурсивный метод вычисления 10*x + exp(x) + exp(-x)

10.05.2016, 21:47. Просмотров 539. Ответов 4
Метки нет (Все метки)

Целью задания было написать 3 метода для вычисления 10*x + exp(x) + exp(-x) (1 встроеным методом, 2 при помощи ряда тейлора циклом и рекурсией).
Первые 2 я написал, но вот с рекурсией запутался.
Вот что есть:
1) Встроенным методом.
Java
1
2
3
4
public static void libraryFunction(int x){
        double function = 10*x + Math.exp(x) + Math.exp(-x);
        System.out.println(function);
    }
2) Ряд Тейлора. Цикл.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static void ownLoopFunction(int x){
        double tempFact = 1;
        int n = 1;
        double power = x;
        double tempPower = power;
        double function = 10 * x + 2;
        do{
            tempFact*= n;
            function += (tempPower/tempFact) + (Math.pow(-1, n) * (tempPower/tempFact));
            tempPower *= power;
 
            n++;
        }while (tempPower/tempFact >= 0.00001);
 
        System.out.println(function);
    }
3)Рекурсивный метод (не могу сделать)
Java
1
2
3
4
5
6
7
8
9
10
11
12
public static void ownRecursionFunction(int x){
        double power = x;
        double function = 10 * x + 1;
        function += (power/1) + (-power/1) * recursion(power, 2, 2,power*power);
        System.out.println(function);
    }
 
    public static double recursion(double power, double factorial, double tempFactorial, double tempPower){
        if(tempPower/tempFactorial >= 0.000001){
            return 1 + (power/factorial) * recursion(power, factorial++, factorial*tempFactorial, tempPower*power);
        }else return 1;
    }
Ну и собственно прошу вас помощи с реализацией 3го метода. И замечаний по реализации 2го. Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2016, 21:47
Ответы с готовыми решениями:

Ввести exp(2), exp(3) , exp(1). pi^2 c консоли
Требуется ввести экспоненту и число пи в степенях с клавиатуры.

Проверьте пожалуйста правильный ли следующий код: вычисление exp(x) и exp(-x)
Всем доброго время суток! Проверьте пожалуйста правильный ли следующий код exp(x): #include...

Доказать |exp (z)|=e^(Re z), a Arg(exp(z)=Im(z)+2*pi*k, k є Z
|exp (z)|=e^(Re z), a Arg(exp(z))=Im(z)+2*pi*k, k є Z

Построение графика y=(exp(ln(X) * 3) + exp(ln(X) * 2)-15)/2;
Помогите пожалуйста доделать программу. При запуске программы пишет "Program1.pas(62) : Ошибка...

4
8 / 8 / 6
Регистрация: 11.05.2016
Сообщений: 16
11.05.2016, 11:33 2
fussboll, Привет!
Сам только начинаю изучать Java, по п.3 написал следующее, может быть оно и полный бред конечно

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private static int recursionX(int x){
        if(x == 1) return 10;
        int result = 10 + recursionX(x-1);
        return result;
    }
 
    private static double recursionExpX(int x){
        if(x == 1) return Math.E;
        double result = Math.E * recursionExpX(x - 1);
        return result;
    }
 
    public static double recursionExpression(int x){
        return recursionX(x) + recursionExpX(x) + 1/recursionExpX(x);
    }
0
0 / 0 / 0
Регистрация: 14.03.2016
Сообщений: 5
11.05.2016, 12:10  [ТС] 3
не совсем то что надо, но спасибо за попытку)
0
8 / 8 / 6
Регистрация: 11.05.2016
Сообщений: 16
11.05.2016, 12:22 4
Тогда с рядом Тейлора, я тоже наверно не прав, но ответы сошлись. Держи, вдруг пригодится:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
private static long fact(int x){
        long result = 1;
        for(int i = 1; i <= x; i++){
            result *= i;
        }
        return result;
    }
 
    private static double taylor(int x){
        int k = 0;
        double result = 0;
        double partResult = 1;
 
        while(partResult > 0.001){
            partResult = Math.pow(x,k)/fact(k);
            result += partResult;
            k++;
        }
        return result;
    }
 
    public static double taylorExpression(int x){
        return 10 * x + taylor(x) + 1/taylor(x);
    }
1
0 / 0 / 0
Регистрация: 14.03.2016
Сообщений: 5
23.05.2016, 12:44  [ТС] 5
Java
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
    public static double libraryFunction(double x) {
        return 10 * x + Math.exp(x) + Math.exp(-x);
    }
 
    public static double loopFunction(double x) {
        int n = 1;
        double nFact = 1;
        double function = 10 * x + 2;
        while (pow(x, n) / nFact >= 0.00001) {
            function += (pow(x, n) / nFact) + (pow(-1, n) * (pow(x, n) / nFact));
            nFact *= ++n;
        }
        return function;
    }
 
    public static double recursionFunction(double x) {
        int n = 1;
        double function = 10 * x + 2;
        function += (x / 1) * rec(x, n + 1) + (-(x / 1) * recNeg(x, n + 1));
        return function;
    }
 
    private static double recNeg(double x, double n) {
        if (pow(x, n) / fact(n) >= 0.00001) {
            return 1 - (x / n) * recNeg(x, n + 1);
        } else return 1;
    }
 
    private static double rec(double x, double n) {
        if (pow(x, n) / fact(n) >= 0.00001) {
            return 1 + (x / n) * rec(x, n + 1);
        } else return 1;
    }
 
    private static double pow(double a, double b) {
        return Math.pow(a, b);
    }
 
    private static double fact(double n) {
        return (n == 0) ? 1 : n * fact(n - 1);
    }
Если кому вдруг поможет. Помогла схема горнера (x^n)/n! = t; t1(1+t2(1+t3(1+t4(...(1+tn)..); Если кому пригодятся.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2016, 12:44

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Вычислите:1/Exp(1 * ln(3))*1/Exp(2 * ln(3))+...+1/Exp(50 * ln(3))
помогите решить,очень надо!!!

преобразовать функции sqr, ceil, floor и exp в sqr=>elina ceil=>demon floor=>drou exp=>coma
преобразовать функции sqr, ceil, floor и exp то есть sqr=elina ceil=demon floor=drou exp=coma...

exp(-40)
Всем доброго времени суток, у меня не получается посчитать exp(-40) с необходимой точностью, я знаю...

Y''=-(1+exp(y)
Как решить это уравнение:y''=-(1+exp(y)) - не могу понять, вроде сначала понижением степени, потом...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.