Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 15.09.2021
Сообщений: 11

Математическое выражение выдаёт nan

15.09.2021, 14:43. Показов 2003. Ответов 5

Студворк — интернет-сервис помощи студентам
Нужно записать данное выражение в С++

при а=b=0.5 выдаёт под y nan на выводе. Подскажите, что делаю не так?


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#define _USE_MATH_DEFINE
#include <iostream>
#include <cstdio>
#include <math.h>
 
int main()
{
    double a = 0.5, b = 0.5, n, y;
 
    y = sqrt(fabs(((pow(a, pow(sin(b), 2))) + cos(pow(b, 3)) + cbrt(pow(b, 2))) / (pow(fabs(a * tan(b)) / (1 - exp(sqrt(a))), 1.0 / 4))));
 
    return 0;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.09.2021, 14:43
Ответы с готовыми решениями:

LU - разложение (выдает NaN)
Здравствуйте. Помогите исправить программу. Проблема заключается в том, что некоторые значение получаются NaN/ #include&lt;iostream.h&gt;...

Выдаёт -nan(ind)
Header.h файл#pragma once double f(double x); double h(double a, double b, int n); double hi(int i, int n, double a, double b); ...

Выдаёт значение nan
Пожалуйста, подскажите где у меня ошибка, во всех файлах, в которые я вывожу ниже, отображается значение nan. У меня скорее всего где-то...

5
0 / 0 / 0
Регистрация: 15.09.2021
Сообщений: 11
15.09.2021, 14:45  [ТС]
при a=b=0.5 на выходе должно получиться 1.214
Миниатюры
Математическое выражение выдаёт nan  
0
0 / 0 / 0
Регистрация: 15.09.2021
Сообщений: 11
15.09.2021, 14:56  [ТС]
Нужно записать данное выражение в С++

при а=b=0.5 выдаёт под y nan на выводе. Подскажите, что делаю не так?
y на выходе должен быть 1.214

Что делаю не так? Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#define _USE_MATH_DEFINE
#include <iostream>
#include <cstdio>
#include <math.h>
 
int main()
{
double a = 0.5, b = 0.5, y;
 
y = sqrt(fabs(((pow(a, pow(sin(b), 2))) + cos(pow(b, 3)) + cbrt(pow(b, 2))) / (pow(fabs(a * tan(b)) / (1 - exp(sqrt(a))), 1.0 / 4))));
 
return 0;
}
Миниатюры
Математическое выражение выдаёт nan  
0
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5208 / 2925 / 1509
Регистрация: 14.12.2018
Сообщений: 5,266
Записей в блоге: 1
15.09.2021, 15:14
Лучший ответ Сообщение было отмечено zss как решение

Решение

Шейди,

математическое условие:

https://www.cyberforum.ru/cgi-bin/latex.cgi?\left\{\begin{matrix}<br />
a>0\\ <br />
(1-e^{\sqrt{a}})sin(2b)\neq 0<br />
\end{matrix}\right.

И код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    const double eps = 1.0e-10;
    double a = 0.5, b = 0.5, y;
 
    if (a <= -eps || fabs(sin(2 * b)* (1 - exp(sqrt(a)))) < eps)
    {
        cout << "Not result !";
    }
    else
    {
        double tu1 = pow(a, sin(b) * sin(b) + cos(b * b * b)) + cbrt(b * b);
        double tu2 = a * tan(b);
        double mau = 1 - exp(sqrt(a));
        y = sqrt(fabs(tu1 / pow(fabs(tu2 / mau), 0.25)));
        cout << "y = " << y;
    }
    return 0;
}
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6170 / 2863 / 1042
Регистрация: 01.06.2021
Сообщений: 10,479
15.09.2021, 15:25
Шейди, у вас fabs распространятся только на (a * tan(b)), а по формуле должен распространяться еще и на знаменатель. Соответственно, функция pow() получает отрицательное число в качестве первого аргумента, что недопустимо, если второй аргумент равен 1 / 4.0. Поэтому у вас и nan.
Большие формулы лучше разбивать на переменные и использовать отладчик в случае ошибок.

Добавлено через 4 минуты
Цитата Сообщение от Шейди Посмотреть сообщение
#include <math.h>
это deprecated
Volga_ правильно рекомендует вам использовать <cmath>
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
15.09.2021, 23:50
Цитата Сообщение от Volga_ Посмотреть сообщение
sin(2 * b)* (1 - exp(sqrt(a)))
как получено это выражение ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.09.2021, 23:50
Помогаю со студенческими работами здесь

Программа в выводе выдаёт -nan
Есть программа, по задумке должна решить систему. Я задал матрицу и реализовал метод гаусса, но программа выводит -nan. Вот код: ...

При вычисление выдает nan
Здравствуйте, дорогие форумчане. Небольшая программка для вычисления полупериметра треугольника и т.д., реализованная через классы. ...

При вычислении выдает nan
Не понимаю, в чем ошибка, по формулам вроде все правильно, но результат всегда nan #include&lt;iostream&gt; #include &lt;math.h&gt; ...

Почему выдает -nan(ind)
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { setlocale(LC_ALL, &quot;rus&quot;); int x =...

На выходе выдает -nan(ind)
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;cmath&gt; using namespace std; int main() { long double y, a, c, b; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru