Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
alex932109
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 11
#1

Нахождения корня р степени из а используя реккурентное выражение - C++

05.04.2012, 19:11. Просмотров 643. Ответов 4
Метки нет (Все метки)

Здравствуйте. На лабораторной попался такой вариант: http://savepic.su/1642399m.png

Вот собственно набросал код:

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
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <math.h>
 
 
 
double step(double a, double p, double x)
{
    double r, s, p2, f, b, c,s1;
    p2=p*p;
    s=a/pow(x,p);
    s1=pow(x,p)/a;
    f=p2-1;
    b=(p+1)*(s/2);
    c=(p-1)*(s1/2);
    r=x*((f+b-c)/p2);
    return r;
}
int _tmain(int argc, _TCHAR* argv[])
{
    
    double e,a,xn,p,xn1;
    int n;
    printf("Vvedite a:  ");
    scanf("%lf",&a);
    printf("\nVvedite p:  ");
    scanf("%lf",&p);
    printf("\nVvedite e:  ");
    scanf("%lf",&e);
    xn=0;
    xn1=step(a,p,xn);
    
    for(n=1; abs(xn1-xn)<=e; n++);
    {
        double xt;
        xt=xn;
        xn=xn1;
                xn1=step(a,p,xn1);
    }
 
    if (n>1000)
    {
        printf("\n\n Ryad ne shoditsya");
    }
    else
    {
        printf("\nN = %d Result = %lf", n, xn1);
    }
 
    getch();
}
Не работает как надо. Что я делаю не так?
0
Миниатюры
Нахождения корня р степени из а используя реккурентное выражение  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2012, 19:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нахождения корня р степени из а используя реккурентное выражение (C++):

Функция корня степени - C++
Написать и протестировать функцию, которая по натуральному k и вещественным x &gt; 0, 0 &lt; ε ≤ 10-6 вычисляет значение , используя следующую...

Извлечение корня n-степени - C++
Написал программу для вычисления корня n-cтепени #include&lt;iostream&gt; #include&lt;math.h&gt; using namespace std; int main() ...

Вычисление корня n-ой степени - C++
Сам обучаюсь C#, но дали решить С++ не понимаю помогите пожалуйста!!!

Вычисление корня заданной степени - C++
Всем привет. Как сделать корень по основанию? Например:

Рекурсия: вычисление корня n-ой степени - C++
Вот условие А вот то, что я набросал... Прошу исправить... Зарание спасибо: #pragma argsused #include &lt;stdio.h&gt; #include &lt;conio.h&gt;...

Рекурсивное вычисление корня k-й степени - C++
Описать рекурсивную функцию RootK(X, K, N) вещественного типа, находящую приближенное значение корня K-й степени из числа X по формуле: ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
05.04.2012, 19:21 #2
начальное значение 0 нельзя брать, у тебя х в знаменателе есть в формуле + на х множится всё выражение, что в любом случае тебе будет давать 0 (если б в знаменателе 0 не было)

Добавлено через 3 минуты
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
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <iostream>
 
 
 
double step(double a, double p, double x)
{
    double r, s, p2, f, b, c,s1;
    p2=p*p;
    s=a/pow(x,p);
    s1=pow(x,p)/a;
    f=p2-1;
    b=(p+1)*(s/2);
    c=(p-1)*(s1/2);
    r=x*((f+b-c)/p2);
    return r;
}
int main()
{
    
    double e,a,xn,p,xn1;
    int n;
    printf("Vvedite a:  ");
    scanf("%lf",&a);
    printf("\nVvedite p:  ");
    scanf("%lf",&p);
    printf("\nVvedite e:  ");
    scanf("%lf",&e);
    xn=1;
    xn1=step(a,p,xn);
    for(n=1; fabs(xn1-xn)>e; n++)
    {
        double xt;
        xt=xn;
        xn=xn1;
        xn1=step(a,p,xn1);
    }
 
    if (n>1000)
    {
        printf("\n\n Ryad ne shoditsya");
    }
    else
    {
        printf("\nN = %d Result = %lf\n", n, xn1);
    }
    system("pause");
    return 0;
}
1
alex932109
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 11
05.04.2012, 20:06  [ТС] #3
Большое спасибо, всё работает.

Добавлено через 31 минуту
Рано радовался:для некоторых значений выдаёт либо отрицательное значение (а=64, р=2, результат -8), либо вообще ничего. Ошибка в условии?
0
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
05.04.2012, 20:51 #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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <iostream>
using namespace std; 
 
 
float step(float a, float p, float x)
{
    return (x*(p*p-1+(p+1)*a/(2*pow(x,p))-(p-1)*pow(x,p)/(2*a))/(p*p));
}
int main()
{
    
    float e,a,xn,p,xn1;
    int n;
    printf("Vvedite a:  ");
    scanf("%f",&a);
    printf("\nVvedite p:  ");
    scanf("%f",&p);
    printf("\nVvedite e:  ");
    scanf("%f",&e);
    xn=-1;
    xn1=step(a,p,xn);
    n=1;
    cout<<"N="<<n<<" x = "<<xn1<<endl;
    while (fabs(xn1-xn)>e)
    {
        xn=xn1;
        xn1=step(a,p,xn1);
        n++;
        cout<<"N="<<n<<" x = "<<xn1<<endl;
        if (n>1000) break;
    }
 
    if (n>1000)
    {
        printf("\n\n Ryad ne shoditsya");
    }
    else
    {
        printf("\nN = %d Result = %f\n", n, xn1);
    }
    system("pause");
    return 0;
}
1
alex932109
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 11
05.04.2012, 21:30  [ТС] #5
Всё равно не работает как надо. Например при попытке вычислить из 81 корень 3й степени или из 1024 корня 10й степени выдаёт -1.#INF00. При а=81 р=2 выдаёт -9. Мне кажется дело в начальном значении xn, но каким его вообще нужно брать?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2012, 21:30
Привет! Вот еще темы с ответами:

Извлечение корня н-ной степени из числа - C++
Здравствуйте!!! Тут задачка такая: нужно извлечь корень н-ной степени из числа методом деления отрезка пополам. Я реализовал такой код: ...

Рекурсия: приближенное значение корня k-й степени из числа - C++
Приветствую всех. Прошу кого нибудь, если не трудно, помочь немного с задачей на рекурсию, я её просто не понимаю, не пойму, как надо...

Приближенное вычисление корня n-ой степени, в чем ошибка? - C++
#include &lt;cmath&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; main() { float x,x1,e,y,y1,p;y1=1; cout &lt;&lt; &quot;Введите степень точности...

Вычисление корня n степени оформить в виде функции - C++
Вычислить z=x\sqrt{y}+\frac{\sqrt{y}}{ctgx}+tx(x+y) при x=2.12, y=5 Вычисление корня n степени оформить в виде функции


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.04.2012, 21:30
Ответ Создать тему
Опции темы

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