c ++ cout математическая функция - PullRequest
2 голосов
/ 19 сентября 2011

Вы cin значение переменной f.f может быть чем-то вроде:

pow(5.957,-X*X*X*X)-cos(X*X) +20*sin(X*X)

или какой-либо другой сложной математической функцией.Я также попытался объявить это непосредственно как таковой.

f = pow(5.957,-X*X*X*X)-cos(X*X) +20*sin(X*X);
std::cout << "Bisection method on function,  f = " << f << " "<<std::endl;

Вывод на MinGW и VS2010:

f = nan

Как мне заставить cout печатать f на экране?

Я объявил f как таковой

double F(double X) { double f; f =  pow(5.957,-X*X*X*X)-cos(X*X) +20*sin(X*X); return f; }

В основном я пишу программу на C ++ для выполнения различных численных методов поиска корней в функции: деление пополам, метод Монте-Карло, метод Ньютона и т. Д. Те, которые работают, но я хочу отобразить функцию впользователь после того, как он набирает его, и он просто отображается как NaN.

Ответы [ 3 ]

2 голосов
/ 19 сентября 2011

Судя по всему, вы пытаетесь определить f как фактическую математическую функцию (прямым способом сделать это).Это определенно не сработает.

Но если у вас есть строка, то f выведет строку, игнорируя математическую функцию.

Помните, в отличие от других языков программирования, C ++ очень... темперамент.

Вы не можете назначить символ для int и наоборот.Но string может содержать что угодно , потому что это всего лишь фрагмент текста.

Попробуйте использовать getline ... просто подождите секунду, и я пойду за своей книгой ..

Редактировать: Хорошо.Если вы используете getline (cin, foo);, где foo определяется как string foo, и вы включаете <string>, это должно работать.Это то, как изначально выглядело ваше кодирование?

Edit2: Вы все еще должны иметь возможность использовать stream для преобразования строки вперед-назад ... но мне нужен кто-тоболее опытный, чем я, чтобы подтвердить это.

0 голосов
/ 19 сентября 2011

Каковы значения X? Может случиться так, что число будет настолько большим, что вы получите чрезмерную (или недостаточную) ошибку потока, которая может объяснить, почему вы получаете NaN.

Предлагаю вам также распечатать X и обновить вопрос.

0 голосов
/ 19 сентября 2011

Вы, похоже, ищете алгебраическую систему. Хотя такие вещи могут существовать, они довольно редки. Вам придется искать библиотеку для обработки формул в общем виде, конвертируя текстовые представления в исполняемый (или интерпретируемый) формат во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...