magava Опубликовано 31 октября, 2008 Жалоба Поделиться Опубликовано 31 октября, 2008 Нужна программа на с++ выясняющая является ли вводимая функция выпуклой или нет. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 31 октября, 2008 Жалоба Поделиться Опубликовано 31 октября, 2008 magava: #include <iostream.h>int main(){float f1,f2,f3; bool b;cout<<"Enter values and any letter at the end"<<endl; cin>>f1; cin>>f2; while(cin>>f3){if(b=f3-2*f2+f1<0)break; f1=f2; f2=f3;}cout<<(b?"unconvex":"convex")<<endl; system("PAUSE"); return 0;} Вводим значения функции, заканчиваеи вводом любой буквы вместо числа; если значения разделялись Enter, то результат будет выдан сразу, как только станет ясным вид функции, если пробелами - после ввода всех данных. Ссылка на комментарий Поделиться на другие сайты Поделиться
magava Опубликовано 11 ноября, 2008 Автор Жалоба Поделиться Опубликовано 11 ноября, 2008 magava:Что делает следующая строка while(cin>>f3){if(b=f3-2*f2+f1<0)break; f1=f2; f2=f3;} Будет ли программа верно работать если ввести такие выражения a^x sin(x) x^2+3*x Спасибо. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 11 ноября, 2008 Жалоба Поделиться Опубликовано 11 ноября, 2008 (изменено) Что делает следующая строка while(cin>>f3){if(b=f3-2*f2+f1<0)break; f1=f2; f2=f3;} Ввводит очередное значение функции, вычисляет с его помощью вторую производную в очередной внутренней точке функции и сравнивает ее с нулем. Функция, для которой проверяется ее выпуклость, считается заданной в табличном виде или приведенной к нему и вводится в виде последовательности значений этой фунции при равноотстоящих значениях аргумента в диапазоне проверки выпуклости. То есть вводятся числа, а не алгебраическая запись функции. Например, для функции x²+x-2 на интервале 0..4 вводятся значения -2, 0, 4, 10, 18. Ввод значений заканчивается буквой e или любой другой. Приведенное тобой определение выпуклости функции тоже могло быть использовано вместо нахождения второй производной - по сути это запись вычисления площади треугольника, его смысл в проверке того, что треугольник, образованный тремя точками, лежащими на графике выпуклой функции, всегда находится выше этого графика или совпадает с ним, оно вычисляется несколько сложнее, чем вторая производная. Если же ты имеешь в виду анализ поведения функции, введенной в виде ее алгебраической записи, то на C++ для этого потребуется разработка системы символьных математических вычислений класса Mathcad ;), чтобы осуществить нахождение выражения для второй производной в аналитическом (символьном) виде и поиск ее глобальных экстремумов. P.S. Заменил пример, на прежнем (было -x²+x-2) сразу выдавалось, что функция невыпукла, так неинтересно. Вводимых значений, кстати, должно быть не меньше трех, иначе невыпуклость не заметить. Изменено 11 ноября, 2008 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти