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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.76
molodzo
Сообщений: n/a
#1

Ошибка в задаче: Найти мин. k, которое будет удовлетворять условию: fabs(правая часть - левая часть) < 10^(-15) - C++

24.03.2009, 13:50. Просмотров 3972. Ответов 4
Метки нет (Все метки)

Задача:

k изменяется от 0 до бесконечности ((4k+1)! / [(2k)!]^2) * x^2k = =1/2*[(1-4x)^(-3/2) + (1+4x)^(-3/2)]

X принадлежит интервалу (-1/4 ; 1/4)

Найти мин. k, которое будет удовлетворять условию:
fabs(правая часть - левая часть) < 10^(-15)

Проблема в том, что прога не может найти такого числа! Как быть?

#include <stdio.h>
#include <iostream>
#include <conio.h>
using namespace std;

long fact(long double val)
{if (val==0) return 1;
else return (val*fact(val-1));
}

int _tmain()
{ double x, a, f;
double k = 1;
long double left = 0;
long double right = 0;
long double step =pow(0.1,15);
do
{
cout << "Vvedite x: ";
cin >> x;
}
while ((x>=0.25) || (x<=-0.25));

f = fact(2*k);
a = fact(4*k + 1) / pow(f, 2) * pow(x, 2 * k);
right = 0.5 * (pow((1/(1 - 4 * x)), 1.5) + pow((1/(1 + 4 * x)), 1.5));

do
{
left = ((4*(4*k+3)*(4*k+5)) / ((2*k+1)*(2*k+2))) * a * pow(x,2);
cout << "Left = " << left << endl;
cout << "Right = " << right << endl;
cout << "Fabs = " << (right - left) << endl;
cout << "k = " << k << endl;
a = left;
k++;
}
while (fabs(right - left) > step);

cout << "RESULTAT :";
cout << "k = " << k-1 << endl;
cout << "right = " << right << endl;
cout << "left = " << left << endl;
system("pause");
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2009, 13:50     Ошибка в задаче: Найти мин. k, которое будет удовлетворять условию: fabs(правая часть - левая часть) < 10^(-15)
Посмотрите здесь:

C++ ошибка с fabs
C++ Найти целую часть суммы чисел
Если в строке левая и правая скобки идут рядом, удалить их из строки C++
C++ Как будет выглядеть на C++ часть кода, написанного на Pascal?
Матрица. Найти закрашенную часть C++
GCC как часть библиотек линковать статически, а часть динамически? C++
Найти наименьшее число, которое удовлетворяет условию C++
C++ Есть ли возможность в char-массив часть данных ввести в буквах, а часть в цифрах?
C++ Правая и левая производная
Разделить дробное число на 2 части: целая часть числа и его дробная часть C++
Найти сумму дробей и выделить целую часть C++
Скопировать часть строки и часть удалить C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Airhand
Сообщений: n/a
09.04.2009, 21:09     Ошибка в задаче: Найти мин. k, которое будет удовлетворять условию: fabs(правая часть - левая часть) < 10^(-15) #2
Во-первых, замени long double на long.
Во-вторых, проверь свои вычисления. Я например, не вижу в условии,
чтобы правая часть была равна: 0,5*((1/(1-4х))^(1,5)+(1/(1+4x))^(1,5))
Дело в том, что компилятор сначало считает 1/(1-4х), а потом возводит его в степень.
palva
2460 / 1682 / 216
Регистрация: 08.06.2007
Сообщений: 6,644
Записей в блоге: 4
10.04.2009, 18:21     Ошибка в задаче: Найти мин. k, которое будет удовлетворять условию: fabs(правая часть - левая часть) < 10^(-15) #3
операция ^ это не возведение в степень, это "исключающее или" или иначе XOR

си это вам не бейсик.
Airhand
Сообщений: n/a
13.04.2009, 17:14     Ошибка в задаче: Найти мин. k, которое будет удовлетворять условию: fabs(правая часть - левая часть) < 10^(-15) #4
операция ^ это не возведение в степень, это "исключающее или" или иначе XOR
си это вам не бейсик.
Плохо ты знаеш математику. Мы пользовались операцией ^ для описания формулы, а не для языка С++. Если где-то он юзал эту операцию в С++, так покажи, а не разводи тут опусы про Бейсик, которого я вообще не знаю.
P.S. Не отвечал так долго потаму, что форум глючит.
palva
2460 / 1682 / 216
Регистрация: 08.06.2007
Сообщений: 6,644
Записей в блоге: 4
20.04.2009, 02:06     Ошибка в задаче: Найти мин. k, которое будет удовлетворять условию: fabs(правая часть - левая часть) < 10^(-15) #5
Теперь понял. Извини, что вмешался.
Yandex
Объявления
20.04.2009, 02:06     Ошибка в задаче: Найти мин. k, которое будет удовлетворять условию: fabs(правая часть - левая часть) < 10^(-15)
Ответ Создать тему
Опции темы

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