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

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

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

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

24.03.2009, 13:50. Просмотров 3982. Ответов 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++
Помогите сделать задачу. Необходимо посчитать правую и левую производную для какой-либо функции на отрезке h.

Скопировать часть строки и часть удалить - C++
1. Удалить из строки ее часть с заданной позиции и заданной длины. 2. Скопировать часть строки с определенной позиции и определенной...

Если в строке левая и правая скобки идут рядом, удалить их из строки - C++
Сгенерировать строку, длиной в 256 символов, которая состоит из случайной последовательности скобок разных видов: круглых, квадратных и...

Как будет выглядеть на C++ часть кода, написанного на Pascal? - C++
type station = record ns:byte; time:longint; end; train = record n:byte; st:arrayof...

Найти наименьшее число, которое удовлетворяет условию - C++
Дано вещественное число a. Найти такое наименьшее n, что 1+1/2+1/3+…+1/n &gt;a. Пункт 3.4 Правил: Спокойствие и хладнокровие помогут вам...

Матрица. Найти закрашенную часть - C++
Матрица размера n*n найти закрашенную часть

Найти целую часть суммы чисел - C++
Исходные данные: x=12 a=9,5 Найти целую часть суммы чисел G, I, U

Найти сумму дробей и выделить целую часть - C++
Даны натуральные числа a,b,c,d.Найти сумму a/b+c/d в виде правильной несократимой дроби с выделенной целой частью. Пример: ...

ошибка с fabs - C++
Приветствую. Проблема в обще в том, что вылетает ошибка вовремя выполнения проги на отмеченной строчке. В принципе в этой функции мне нужно...

Сравнить два одномерных массива и найти самую длинную их общую часть - C++
как сравнить два одномерных массива и найти самую длинную их общую часть? сравниваю массивы типа char. допустим мы нашли общий...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
2561 / 1783 / 251
Регистрация: 08.06.2007
Сообщений: 6,910
Записей в блоге: 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
2561 / 1783 / 251
Регистрация: 08.06.2007
Сообщений: 6,910
Записей в блоге: 4
20.04.2009, 02:06     Ошибка в задаче: Найти мин. k, которое будет удовлетворять условию: fabs(правая часть - левая часть) < 10^(-15) #5
Теперь понял. Извини, что вмешался.
Yandex
Объявления
20.04.2009, 02:06     Ошибка в задаче: Найти мин. k, которое будет удовлетворять условию: fabs(правая часть - левая часть) < 10^(-15)
Ответ Создать тему
Опции темы

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