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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

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

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


Благодарю, выручил меня...
А можешь написать математически как, к примеру раскладывается в степенной ряд функция ln(x)
при x=2 и степенью точности 1...?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Fanat
***

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

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


Цитата(matic @ 5.05.2007 13:31) *
Благодарю, выручил меня...
А можешь написать математически как, к примеру раскладывается в степенной ряд функция ln(x)
при x=2 и степенью точности 1...?
Вопрос не совсем понятен. И скорее всего его надо задать в математике.
А вот дополненная программа, которая подсчитает логарифм любого числа с заданной точностью.
..........
int T=1;
cout<<"X?"<<endl;
cin>>x;
while (x>2)
{
T=2*T;
x=sqrt(x);
}
cout<<"EPS?"<<endl;
cin>>eps;
double log=T*F(1,x,0,eps);
..........
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата
Сверял с Matcad, только вот точность с результатами Matcada совпадает если в программе взять точность выше.

а можешь прикрепить исходник для маткада где ты проверял?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Fanat
***

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

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


Цитата(Гость @ 8.05.2007 21:23) *

а можешь прикрепить исходник для маткада где ты проверял?


В смысле?..нажал ln(x)=ответ...или тебе весь маткад?.. smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

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

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


а причем тогда тут заданная точность?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Fanat
***

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

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


Цитата(matic @ 8.05.2007 23:17) *

а причем тогда тут заданная точность?


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


Новичок
*

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

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


ну я знаю что задание такое...
Просто ты говаришь, что в маткаде написать ln(x), а где тут указываеться заданная точность?
Я просто не могу понять как ты на мактаке проверял...
Прикрепи исходник для маткада где ты проверял с расширением xmcd.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Fanat
***

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

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


Цитата(matic @ 9.05.2007 11:05) *

ну я знаю что задание такое...
Просто ты говаришь, что в маткаде написать ln(x), а где тут указываеться заданная точность?
Я просто не могу понять как ты на мактаке проверял...
Прикрепи исходник для маткада где ты проверял с расширением xmcd.


Точночть-TOL:=точность...
Кол-во цифр после запятой-Format-Result-Number of decimal places...

Что то не получаеться прикрепить исходник...но я думаю и так понятно всё будет...

Сообщение отредактировано: Fanat -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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