22:08

У каждого в жизни есть кто-то, кто никогда тебя не отпустит, и кто-то, кого никогда не отпустишь ты.
Подскажите, как правильно написать код в си для:
1. (a+bc)*log(x)
пишу (a+(b*c))*log10(x)
2. 3 корень sin^2(y)
пишу exp(1/3*log(pow(sin,2)(y))))
где ошибка?

@темы: C#

Комментарии
17.09.2012 в 23:09

счастье рядом
код в си
@темы: C#
так си или си шарп?

пишу (a+(b*c))*log10(x)
(a + b*c) * log10(x), а с чего вы взяли, что там ошибка?



3 корень sin^2(y)
корень от синуса в квадрате будет просто синус же
3 * sqrt(pow(sin(y), 2));
17.09.2012 в 23:22

У каждого в жизни есть кто-то, кто никогда тебя не отпустит, и кто-то, кого никогда не отпустишь ты.
В первом не была уверена на 100%, а вот со вторым проблема
вот скрин
тут просто писать, как видишь? То есть как вы написали?
17.09.2012 в 23:55

На свете есть всего 10 разновидностей людей. Те, которые понимают бинарный код, и те, кто не понимают
exp(1/3*log(pow(sin,2)(y))))
А выдает, дайте угадаю, единицу?

В С и С++ если целое делить на целое, то результат тоже будет целым числом. Таким образом, 1/3 дает ноль.
17.09.2012 в 23:58

Пау-чок
Во-первых, не
,
а
.
А во-вторых:

=)
18.09.2012 в 00:01

Пау-чок
alba-longa, ай, спасибо, поправили =)

18.09.2012 в 00:07

На свете есть всего 10 разновидностей людей. Те, которые понимают бинарный код, и те, кто не понимают
O, всегда пожалуйста :) это типичная студенческая ошибка, равно как и проверка на равенство двух вещественных, глаз наметан :)
18.09.2012 в 00:27

счастье рядом
O, alba-longa, а так можно?
pow(pow(sin(y), 2), 1.0/3.0)
18.09.2012 в 00:36

Пау-чок
дымчатая.реальность, O, alba-longa, а так можно? pow(pow(sin(y), 2), 1.0/3.0)
Можно, но зачем?
(sin(x)^2)^(1/3) = sin(x)^(2/3)
В вашем случае получается лишний вызов функции, а это лишние вычислительные затраты.
18.09.2012 в 00:38

счастье рядом
O, да, я не подумала, спасибо большое)
18.09.2012 в 02:55

Пау-чок
дымчатая.реальность, было бы за что =)
18.09.2012 в 07:32

У каждого в жизни есть кто-то, кто никогда тебя не отпустит, и кто-то, кого никогда не отпустишь ты.
спасибо всем огромное
10.10.2012 в 15:17

Эллипс - это круг, который можно вписать в квадрат 25х40
Можно, но зачем?
(sin(x)^2)^(1/3) = sin(x)^(2/3)
В вашем случае получается лишний вызов функции, а это лишние вычислительные затраты.

А можно глупый вопрос...
Ведь дробная степень обычно определяется только для положительных оснований... Я не знаю как такое считает си, но многие вычислительные пакеты заточены именно под такое определение...
Например, Вольфрам выдёт комплексное число с минимальным аргументом... www.wolframalpha.com/input/?i=%28-8%29%5E%281%2...
Так может имеет смысл идти на вычислительные затраты при отрицательном синусе...
10.10.2012 в 16:23

Пау-чок
Ведь дробная степень обычно определяется только для положительных оснований...
Нет, вопрос ни разу не глупый, это я глупый =)
Тем более, что `man pow` очень отчётливо говорит о том, что "Если x меньше 0, а y конечное не-целое число, происходит ошибка и возвращается NaN".
Всё верно, сначала надо возводить в квадрат, а потом уже в степень 1/3.