Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 66
1

Нахождение минимума функции одной переменной методом кубической параболы

30.03.2014, 18:01. Показов 2602. Ответов 1
Метки нет (Все метки)

Допущена ошибка в коде.Предполагаю,что неверно выбран x1 в самой функции метода.Также возможна ошибка в выборе шага(я беру 0.59).
Помогите,буду благодарен.
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include<iostream>
#include<math.h>
using namespace std;
double MP3(double x1,double e,double h);
double F(double x);
double Fsh(double x);
int main(void)
{
    double y,z,x,ht,b,a,m,h,x1,x0,e;int i;
    cout<<"vvedite shag h";
    cin>>h;
    cout<<"vvedite pogreshnost` e";
    cin>>e;
    cout<<"vvedite kolvo tochek dlya vivoda m";
    cin>>m;
    a=2;
    b=18;
    ht=(b-a)/m;
    x=a;
    do
    {
        y=F(x);
        cout<<"PRI X ="<<x<< "    Y = " <<y<<endl;
        x=x+ht; 
    }while(x<=b);
    x=a+h;
    do
    {
        if((F(x-h)>F(x))&&F(x+h)>F(x))
        {
            z=MP3(x,e,h);
            cout<<"minimum :"<<z<<"   znachenie funkcii :"<<F(z)<<endl;
        }
        x+=h;
    }while(x<b);
    system("pause");
    return(0);
}
double MP3(double x,double e,double h)
{
    double otvet,r,q,p,y2,y1,z1,zm,d2,x2,d1;
    d1=Fsh(x1);
    if(d1<0)
    {
        h=-h;
    }
    x2=x1+h;
    d2=Fsh(x2);
    if(((d2-d1)/h)>0)
    {
        y1=F(x1);
        y2=F(x2);
    do
    {
        z1=x1-x2;
        p=(d1-d2-2*(y1-y2-d2*z1)/z1)*pow(z1,2);
        q=(d2-d1+3*(y1-y2-d2*z1)/z1)*z1;
        r=d2;
        zm=(-q+pow((pow(q,2)-3*p*r),1/2))/(3*p);
        x1=x2;
        y1=y2;
        d1=d2;
        x2=x2+zm;
        y2=F(x2);
        d2=Fsh(x2);
    }while(fabs(zm)>e);
    }
    else
    {
        cout<<"nachalnoe priblijenie ne vibrano";
        return(0);
    }
    otvet=x2+zm;
    return(otvet);
}
double F(double x)
{
    return(x*cos(x)-x);
}
double Fsh(double x)
{
return(cos(x)-sin(x)*x-1);
}
Добавлено через 1 час 57 минут
Ну или помогите с проверенным источником для решения этой задачи.
Я один нашёл,но там аналогично моей,однако знаки наоборот(в if`ах).
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.03.2014, 18:01
Ответы с готовыми решениями:

Найти минимум функции методом кубической параболы
Добрый вечер. Делаю лабораторную работу по c++ (нахождение минимума функции методом кубической...

Нахождение минимума функции методом градиента
Помогите переделать программу для нахождения минимума функции двух переменных методом градиента для...

Поиск минимума функции одной переменной
Метод секущих поиска минимума функции одной переменной. Рассмотреть на 2-х любых примерах.

Нахождение минимума функции методом золотого сечения
Необходимо реализовать на Scheme: Реализуйте поиск минимума функции одной переменной. Определите...

1
__Sasha__
15.05.2014, 10:57 2
На сколько я помню, программа ещё должна делать запрос на ввод локального минимума (число точек задано условием); и для zm ещё должна быть проверка на подкоренное выражение (pow(q,2)-3*p*r >= 0), иначе zm=-q/(3*p).
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2014, 10:57

Нахождение минимума функции методом половинного деления
Есть программа нахождения корня методом половинного деления. Как ее переделать, чтобы она находила...

Нахождение минимума и максимума функции методом перебора.
Доброе время суток. Появилась еще одна проблема, с которой сам не могу справиться. Проблемы...

Поиск минимума у функций методом квадратичной параболы
Реализовать поиск минимума у функций y=sin(x), y=cos(x), y=a*(x^2)+b*x+c методом квадратичной...

Нахождение max и min функции одной переменной
Нужна помощь. Надо написать программу которая находить max и min функции с 1 переменой....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.