Задача:
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
#include
#include
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;
}
Последние комментарии
-
Zlata02747393, 11 января в 15:11 → Математика в школе 16
-
rgo, 11 января в 10:28 → Как «замокать» файл для юниттеста в Python? 1
-
Zlata02747393, 11 января в 9:47 → посоветуйте!!Как ой велосипед приобрести девушке? 9
-
Yarossslavovich, 30 декабря в 13:05 → Как настроить чтоб работало две сетевые платы — две сети 2
-
ilyas490, 8 декабря в 13:27 → Книги по Bash? 13

C какого у тебя k — double? Твоя функция вычисления факториала не корректна для double.
Мне кажеться или a — это и есть левая часть, а в цикле какая-то чушь считается?
В цикле не чушь считается…
Это упрощенный алгоритм(т.к. если считать вслепую уравнение, то происходит переполнение памяти, отведенной под переменную)!!!
Факториал у тебя считается только для k=1.
А вот что здесь происходит вообще не понятно.
Что ты подразумеваешь под переполнение памяти не очень понятно.
Догадываюсь, что переполнение стека, но это из-за использование рекурсии, от нее можно избавиться.
Ну раз алгоритм упрощенный, то ошибка в упрощении.
Я нашёл. PEBKAC.
gcc exception: invalid programmer detected