Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Непрерывные функции и нахождение минимума на отрезке - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ работа с файлами http://www.cyberforum.ru/cpp-beginners/thread122932.html
подскажите пожалуйста a. В текстовом файле хранятся квадратные вещественные матрицы порядка n (n – const). Преобразовать файл, удалив из каждой матрицы элементы побочной диагонали. б. Дан файл...
C++ упорядочить столбцы матрицы Характерикой столбца матрицы назовем произведение положительных элементов с четными номерами строк. Упорядочить столбцы матрицы по возрастанию их характеристик. http://www.cyberforum.ru/cpp-beginners/thread122911.html
программа на тему "ветвление" C++
даны числа A1, B1, C1, A2, B2, C2. Напечатать координаты точки пересечения прямых A1x+B1y=C1 и A2x+B2y=C2, либо сообщить, что эти прямые совпадают, не пересекаются или вовсе не существуют.
Матрица!!! Курсовое задание!!! C++
Задача: Дана действительная квадратная матрица порядка n. Найти наибольшее из значений элементов, расположенных в заштрихованной области матрицы и наименьшее из значений элементов, расположенных вне...
C++ Цикл не работает так как надо http://www.cyberforum.ru/cpp-beginners/thread122898.html
Всем привет! Народ, у меня цикл в программе работает не так как надо. 1 круг цикла происходит в норме, а когда начинается 2ой он пропускает 1 переменную которую надо ввести, и после ввода 2ой он...
C++ Разбиение строк Доброго времени суток! Собственно нужна помощь в поиске ошибки. вот код: #include "stdafx.h" typedef struct { char str; подробнее

Показать сообщение отдельно
AndyHell
5 / 5 / 0
Регистрация: 18.04.2010
Сообщений: 20

Непрерывные функции и нахождение минимума на отрезке - C++

28.04.2010, 20:55. Просмотров 1475. Ответов 1
Метки (Все метки)

Помогите реализовать функцию Solve из данной задачи:

Задается непрерывная функция f(x). Требуется на интервале [a,b] с заданной точностью E найти точку (Xmin, Ymin), в которой f(x) принимает наименьшее значение. Точность задается как номер знака, до которого производятся вычисления и округление результата.

Требования:
Интерфейс реализуются в главной функции Main(). Вычисления реализуются в функции Solve(double a, double b, double eps, int numfunc). Примеры тестовых функций реализуются в функции double FuncTest(int number, double x) с помощью конструкции switch, где number – это номер тестовой функции. Функция FuncTest вызывается из Solve для вычисления значения функции в точке. Функция Solve вызывается из Main после ввода всех необходимых данных. В Main задается номер знака после десятичной точки, а далее исходя из знака, выбирается начальная погрешность E, которая затем может изменяться в функции Solve.
Тестирование:
В данной задаче тестовыми случаями будут функции. Функции должны быть подобраны под каждую ситуацию, исходя из условий задачи.
Исключительные ситуации:
Неправильно заданный интервал. Деление на ноль.
Добавлено через 45 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
double FuncTest(int number, double x)
{
    double y;
    switch (number)
    {
        case 1: y=x*x+2*x+3;
            break;
        case 2: y=x*2+10;
            break;
        case 3: y=x*x*x+5;
            break;
        default: y=0;
    }
    return y;
}
Добавлено через 8 часов 43 минуты
Вот что самому удалось сделать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
#include <cmath>
using namespace std;
double FuncTest(int number, double x)
{
    double y;
    switch (number)
    {
        case 1: y=x*x+2*x+3;
            break;
        case 2: y=x*2+10;
            break;
        case 3: y=x*x*x+5;
            break;
        default: y=0;
    }
    return y;
}
double Solve(double a, double b, double eps, int numfunc)
{
    double ymin;
    double f;
    ymin=FuncTest(numfunc,a);
    do
    {
        f=FuncTest(numfunc,a);
        if (f<ymin) ymin=f;
        a=a+eps;
    }
    while (a<=b);
    return ymin;
}
void main()
{
    char ch;
    short digit;
    double epsilon;
    double x1, x2;
    int num;
    cout <<"Select an option from the list"<<endl;
    cout <<"1:y=x^2+2x+3"<<endl;
    cout <<"2:y=2x+10"<<endl;
    cout <<"3:y=x^3+5"<<endl;
    cout <<"Your choice:";
    cin >> num;
    cout <<"Enter border on the right. a=";
    cin >> x1;
    cout <<"Enter border on the left. b=";
    cin >> x2;
    cout <<"Enter the number of characters to which the calculation should be made:";
    cin >> digit;
    epsilon = 1/powf(10, digit);
    cout <<"The minimum of this function is:";
    cout.precision(digit);
    cout <<Solve(x1,x2,epsilon,num);
    cin.get (ch);
    cin.get (ch);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru