IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Рекурсивные функции в С++
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

Репутация: -  -1  +


Условие задачи:

Вычислить функцию y=ln(x), разложенную в степенной ряд, с заданной степенью точности.

Помогите пожалуйства. Заранее благодарю.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Fanat
***

Группа: Пользователи
Сообщений: 261
Пол: Мужской
Реальное имя: Сергей

Репутация: -  5  +


Цитата(matic @ 28.04.2007 18:10) *

Условие задачи:

Вычислить функцию y=ln(x), разложенную в степенной ряд, с заданной степенью точности.

Помогите пожалуйства. Заранее благодарю.
Вот что получилось. Модуль числа (х-1) должен быть меньше 1. То есть х вводим от 0 до 2.
Всё работает. Сверял с Matcad, только вот точность с результатами Matcada совпадает если в программе взять точность выше. Может где-нибудь есть помарки.

#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <iostream.h>
#include<stdlib.h>

double F(int n,float x,double log1,float eps)
{
if (fabs(pow(-1,n-1)*pow(x-1,n)/n) < eps ) return log1;
log1+=(pow(-1,n-1)*pow(x-1,n)/n);
log1=F(n+1,x,log1,eps);
return log1;
}

int main()
{
clrscr();
float x,eps;
cout<<"X?"<<endl;
cin>>x;
cout<<"EPS?"<<endl;
cin>>eps;
double log=F(1,x,0,eps);
cout<<log;
getche();
return 0;
}
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Fanat
***

Группа: Пользователи
Сообщений: 261
Пол: Мужской
Реальное имя: Сергей

Репутация: -  5  +


Цитата(Fanat @ 29.04.2007 11:58) *
Вот что получилось. Модуль числа (х-1) должен быть меньше 1. То есть х вводим от 0 до 2.
Всё работает. Сверял с Matcad, только вот точность с результатами Matcada совпадает если в программе взять точность выше. Может где-нибудь есть помарки.
if (fabs(pow(-1,n-1)*pow(x-1,n)/n) < eps ) return log1+(pow(-1,n-1)*pow(x-1,n)/n);


Вот так должно быть правильно, хотя проверить не могу щас.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 6.05.2024 15:44
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name