Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Программирование на с++


Рекомендуемые сообщения

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, то результат будет выдан сразу, как только станет ясным вид функции, если пробелами - после ввода всех данных.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

magava:Что делает следующая строка

while(cin>>f3){if(b=f3-2*f2+f1<0)break; f1=f2; f2=f3;}

Будет ли программа верно работать если ввести такие выражения

a^x

sin(x)

x^2+3*x

Спасибо.

Ссылка на комментарий
Поделиться на другие сайты

Что делает следующая строка

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) сразу выдавалось, что функция невыпукла, так неинтересно. Вводимых значений, кстати, должно быть не меньше трех, иначе невыпуклость не заметить.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...