Добрый день! Помогите, пожалуйста реализовать функцию квадратного корня из числа через ряд Тейлора на с++: Вот некоторые похожие рабочие функции
double f_sin(double var)
{
double q,sum=0;
int n;
q=var;
for(n=1;n <= 100;n++){///синус через ряды
sum+=q;
q*=(-1)*var*var/(2*n)/(2*n+1);
}
return sum;
}
double f_cos(double var)
{
double q,sum=1;
int n;
q=var;
q*=(-1)*var/2;
sum+=q;
for(n=2;n <= 100;n++){///косинус через ряды тейлора
q*=(-1)*var*var/(2*n)/(2*n-1);
sum+=q;
}
return sum;
}
double f_sqrt(double var)
{
/*var--;
double q=-1, sum=1;
for(int n=1; n<=100; n++){
q*=(-1)*var/2; /// не работает
sum+=q;
}*/
return sum;
}
Сделал исправления в f_sqrt функцию закоментированную, код без рекурсии, только этот ряд работает для x
из [0,2]
, для больших значений ряд расходится. Ошибка у автора была в том, что он полагал что в знаменателе просто степени двойки, а там значительно более сложное выражение и в числителе и знаменателе. Вот что получилось, можно запустить онлайн:
#include <cmath>
#include <iostream>
using namespace std;
double f_sqrt(double var)
{
var -= 1;
double q = 1, sum = 1;
for(int n=1; n <= 100; n++){
q *= (-1.0) * (2 * n - 1) * 2 * n * var / (n * n * 4);
sum += q / (1.0 - 2 * n);
}
return sum;
}
int main() {
double x = 1.5;
cout << f_sqrt(x) << endl;
cout << sqrt(x) << endl;
return 0;
}
Попробуйте такой вариант может. но и ваш вроде как должен работать, непонятно почему не срабатывает
double f_sqrt(double var, float eps) {
//eps - точность, при достижении которой останавливаемся
double sum = 0, tmp = 0;
int n = 0;
while(tmp > eps) {
tmp = (pow(-1, n) * fact(2 * n))/((1 - 2 * n) * pow(fact(n), 2) * pow(4, n)) * pow(var, n);
sum += tmp;
n++;
}
return sum;
}
int fact(int n)
{
if(N < 0)
return 0;
if (N == 0)
return 1;
else
return N * fact(N - 1);
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Числа будут в комбобоксах и нужно чтобы допустим если месяц такой то то дней в этом месяце столько тоже самое про год
Добрый деньРешаю задачи на с++, но не могу дорешать из-за некоторых ошибок:"multiple definition of 'main' " Помогите справиться с этим,пожалуйста