powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вычисление значения натурального логарифма,выводит в полученных значениях inf
9 сообщений из 9, страница 1 из 1
Вычисление значения натурального логарифма,выводит в полученных значениях inf
    #39559597
otars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задание такое
Вычисление значения натурального логарифма (ln+1)=x-(x^2/2)+(x^3/3)-(x^4)/4+..+((-1)^n+1* x^n)/n

Первая попавшаяся ссылка с википедии дала подсказку решения c помощью Ряда Тэйлора

то есть таким образом
ln(x)=x - ((x-1)^2)/2+ ((x-1)^3)/3 - ((x-1)^4)/4 + ....

Но программа выдаёт неправильные результаты.
К примеру res=1.386 а log10 в большинстве случаев выдаёт inf(ind)

Отладчиком прошёлся,сразу в формулу вычисления посмотрел.
И в итоге синтаксическая проблема с кодом,которую исправлял 3-4 раза а результат такой же.

Сам код(Самая первая реализация)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
int main()
{
	int n = 100;
	double x = -1;
	double res = 0, q = 1, k = 0;
	do
	{
		q = pow((x - 1), k)/k;
		res += q;
		k++;
	} 
	while (k <= n);
	cout <<"Poluchennoe znachenie = " <<res<<endl;
	cout <<"Kontrolnoe znachenie = " << log10(x) << endl;
	system("pause");
    return 0;
}
...
Рейтинг: 0 / 0
Вычисление значения натурального логарифма,выводит в полученных значениях inf
    #39559600
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала неплохо бы научиться отличать натуральный логарифм от десятичного...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вычисление значения натурального логарифма,выводит в полученных значениях inf
    #39559602
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
otars,
проверь что под логарифмом положительное число
...
Рейтинг: 0 / 0
Вычисление значения натурального логарифма,выводит в полученных значениях inf
    #39562328
Alexander70
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программа вычисления логарифма на Си - вы будете смеяться, но кажется это ласковый троллинг преподавателей.
...
Рейтинг: 0 / 0
Вычисление значения натурального логарифма,выводит в полученных значениях inf
    #39562333
Alexander70
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovДля начала неплохо бы научиться отличать натуральный логарифм от десятичного ...-это болезнь и кажется не излечимая :)
...
Рейтинг: 0 / 0
Вычисление значения натурального логарифма,выводит в полученных значениях inf
    #39563383
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
otarsЗадание такое
Вычисление значения натурального логарифма (ln+1)=x-(x^2/2)+(x^3/3)-(x^4)/4+..+((-1)^n+1* x^n)/n

Первая попавшаяся ссылка с википедии дала подсказку решения c помощью Ряда Тэйлора

то есть таким образом
ln(x)=x - ((x-1)^2)/2+ ((x-1)^3)/3 - ((x-1)^4)/4 + ....

Но программа выдаёт неправильные результаты.
К примеру res=1.386 а log10 в большинстве случаев выдаёт inf(ind)

Отладчиком прошёлся,сразу в формулу вычисления посмотрел.
И в итоге синтаксическая проблема с кодом,которую исправлял 3-4 раза а результат такой же.

Сам код(Самая первая реализация)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
int main()
{
	int n = 100;
	double x = -1;
	double res = 0, q = 1, k = 0;
	do
	{
		q = pow((x - 1), k)/k;
		res += q;
		k++;
	} 
	while (k <= n);
	cout <<"Poluchennoe znachenie = " <<res<<endl;
	cout <<"Kontrolnoe znachenie = " << log10(x) << endl;
	system("pause");
    return 0;
}



Помимо вышесказанного, на нулевой итерации вы производите деление на 0(k=0), что вероятно приводит к следующему эффекту inf + const ~ inf
...
Рейтинг: 0 / 0
Вычисление значения натурального логарифма,выводит в полученных значениях inf
    #39591517
otars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за замечания и советы.
...
Рейтинг: 0 / 0
Вычисление значения натурального логарифма,выводит в полученных значениях inf
    #39591533
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
otars, Ряд Тейлора применяется для разложения в окрестности точки (для маленьких отклонений от какой-то точки). Именно поэтому членами с увеличивающимися степенями можно пренебречь (0.001 в пятой степени- очень маленькое число). В вашем же случае формула применяется для очень больших чисел (10), и ошибка очевидна: не понятно почему вы отбрасываете члены с большими степенями в бесконечном ряду.

Вам надо сначала с математикой разобраться, чтобы было понятно что вы программировать собираетесь.
...
Рейтинг: 0 / 0
Вычисление значения натурального логарифма,выводит в полученных значениях inf
    #39591541
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
otars,

2.
Код: plaintext
1.
q = pow((x - 1), k)/k;


возводить в нецелые степени можно только неотрицательные числа
наверное стоит завести отдельную переменную и на каждом цикле умножать её на (x-1), а потом находить q
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вычисление значения натурального логарифма,выводит в полученных значениях inf
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]