Jump to content

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


Recommended Posts

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

Link to comment
Share on other sites

  • 2 weeks later...

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

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

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

a^x

sin(x)

x^2+3*x

Спасибо.

Link to comment
Share on other sites

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

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

Edited by Тролль
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...