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

Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки - C++

Восстановить пароль Регистрация
 
 
IvanovPRO
1 / 0 / 0
Регистрация: 16.08.2013
Сообщений: 38
16.08.2013, 08:54     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки #1
Приветствую всех. Такая проблема:
Делаю лабораторную работу, нужно отобразить результат работы программы
в Visual C++ 2005 она работает, а вот в C++ 2008 не работает. Нужна ваша помощь, я не очень опытный в программиоровании:

Это результат компиляции:

Код
1>------ Построение начато: проект: 123, Конфигурация: Debug Win32 ------
1>Компиляция...
1>1234.cpp
1>Компиляция манифеста в ресурсы...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
1>Copyright (C) Microsoft Corporation.  All rights reserved.
1>Компоновка...
1>Внедрение манифеста...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
1>Copyright (C) Microsoft Corporation.  All rights reserved.
1>Журнал построения был сохранен в "file://c:\Documents and Settings\Elektron\Рабочий стол\123\123\Debug\BuildLog.htm"
1>123 - ошибок 0, предупреждений 0
========== Построение: успешно: 1, с ошибками: 0, без изменений: 0, пропущено: 0 ==========

Вот код программы:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
#include<complex>
using namespace std;
void main()
{locale::global(locale("rus"));
int a=-10;
int b=10;
double n,h,x,U,min,minX;
n=(b-a)/0.01;
h=(b-a)/n;
min=2;
 
for(x=a;x<=b;x=x+h)
{
    U=x*x+4*exp(-0.25*x);
    if(U<min)
    {min=U;
    minX=x;}
}
cout<<"аргумент="<<minX<<"\n";
cout<<"минимум="<<min;
}

А вот ошибка, которая появляется при запуске программы:
http://content-22.foto.mail.ru/mail/...swers/i-25.jpg

вот и все. Находил некоторые рекомендации в Интернете, но в С++ я начинающий, поэтому некоторые фразы я просто не понимаю
За помощь буду вам благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.08.2013, 08:54     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки
Посмотрите здесь:

C++ Непрерывные функции и нахождение минимума на отрезке
Функции ввода / вывода, вычисления (исправить ошибки) C++
C++ Найти ошибки и исправить
найти и исправить ошибки C++
с++ шаблон функции, прога выдает 3 ошибки, как их исправить? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
korep
 Аватар для korep
47 / 40 / 9
Регистрация: 06.01.2013
Сообщений: 566
16.08.2013, 08:59     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки #2
попробуйте присвоить какое-нибудь значение переменной x
IvanovPRO
1 / 0 / 0
Регистрация: 16.08.2013
Сообщений: 38
16.08.2013, 09:11  [ТС]     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки #3
Цитата Сообщение от korep Посмотреть сообщение
попробуйте присвоить какое-нибудь значение переменной x
for(x=a;x<=b;x=x+h)
вместо a поставил -10

Таже самая ошибка получается
korep
 Аватар для korep
47 / 40 / 9
Регистрация: 06.01.2013
Сообщений: 566
16.08.2013, 09:13     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки #4
Цитата Сообщение от IvanovPRO Посмотреть сообщение
if(U<min)
{min=U;
minX=x;}
}
из-за этого условия у вас не всегда переменным присваиваются значения. Определите их где-нибудь раньше.
IvanovPRO
1 / 0 / 0
Регистрация: 16.08.2013
Сообщений: 38
16.08.2013, 10:36  [ТС]     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки #5
Цитата Сообщение от korep Посмотреть сообщение
из-за этого условия у вас не всегда переменным присваиваются значения. Определите их где-нибудь раньше.
Переменным которые в условии?
korep
 Аватар для korep
47 / 40 / 9
Регистрация: 06.01.2013
Сообщений: 566
16.08.2013, 10:37     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки #6
да min и minX, вы просто их обязательно выводите, но не обязательно присваиваете им значение
IvanovPRO
1 / 0 / 0
Регистрация: 16.08.2013
Сообщений: 38
16.08.2013, 10:45  [ТС]     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки #7
MinX присвоил -10 до цикла, теперь ругается на U
А как вывести U там же формула к шагу привязана
korep
 Аватар для korep
47 / 40 / 9
Регистрация: 06.01.2013
Сообщений: 566
16.08.2013, 10:51     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки #8
C++
1
double n,h,x,U,min,minX = 0;
попробуйте так, если не получиться, то так:
C++
1
2
3
4
5
6
double n = 0;
double h = 0;
double x = 0;
double U = 0;
double min = 0;
double minX = 0;
IvanovPRO
1 / 0 / 0
Регистрация: 16.08.2013
Сообщений: 38
16.08.2013, 11:13  [ТС]     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки #9
аргумент=0
минимум=2

в обоих случах выходит такой результат
Но у меня было:

-0,422554
5,81005 (точка минимума на графике)
korep
 Аватар для korep
47 / 40 / 9
Регистрация: 06.01.2013
Сообщений: 566
16.08.2013, 11:16     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки #10
выложите весь код программы
IvanovPRO
1 / 0 / 0
Регистрация: 16.08.2013
Сообщений: 38
16.08.2013, 11:22  [ТС]     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки #11
Эм... Это весь код программы.

Я его сразу указал в теме.
А вот задание:
Найти на отрезке [-10;10] абсциссу точки минимума х* функции U=x2+k1*exp(k2*x) с абсолютной погрешностью, не превышающей 0,01.
korep
 Аватар для korep
47 / 40 / 9
Регистрация: 06.01.2013
Сообщений: 566
16.08.2013, 11:24     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки #12
не-не-не. обновленный
IvanovPRO
1 / 0 / 0
Регистрация: 16.08.2013
Сообщений: 38
16.08.2013, 11:30  [ТС]     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки #13
Ааа)) сори))
надеюсь правильно понял

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
#include<iostream>
#include<complex>
using namespace std;
void main()
{locale::global(locale("rus"));
int a=-10;
int b=10;
 
double n = 0;
double h = 0;
double x = 0;
double U = 0;
double min = 0;
double minX = 0;
 
n=(b-a)/0.01;
h=(b-a)/n;
min=2;
 
for(x=a;x<=b;x=x+h)
{
U=x*x+4*exp(-0.25*x);
if(U<min)
{min=U;
minX=x;}
}
cout<<"аргумент="<<minX<<"\n";
cout<<"минимум="<<min;
korep
 Аватар для korep
47 / 40 / 9
Регистрация: 06.01.2013
Сообщений: 566
16.08.2013, 11:39     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки #14
Цитата Сообщение от IvanovPRO Посмотреть сообщение
n=(b-a)/0.01;
h=(b-a)/n;
здесь h у вас всегда будет 0.01

Добавлено через 4 минуты
честно говоря даже не представляю. по коду вроде бы все нормально

Добавлено через 1 минуту
данная функция не может принимать отрицательные значения
IvanovPRO
1 / 0 / 0
Регистрация: 16.08.2013
Сообщений: 38
16.08.2013, 11:42  [ТС]     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки #15
А вы можете ее у себя запустить, мне нужен просто скрин командной строки с результатом ответов

Добавлено через 31 секунду
Именно первоначальный код, может у меня компилятор просто глючный
korep
 Аватар для korep
47 / 40 / 9
Регистрация: 06.01.2013
Сообщений: 566
16.08.2013, 11:44     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки #16
http://www.cyberforum.ru/cgi-bin/latex.cgi?{x}^{2} \geq 0 и http://www.cyberforum.ru/cgi-bin/latex.cgi?{e}^{l}, где http://www.cyberforum.ru/cgi-bin/latex.cgi? l \in  {-\propto ;\propto )

Добавлено через 1 минуту
с компилятором все нормально, просто исходный код у вас был не совсем правильный, а предыдущий компилятор просто брал значение из случайных ячеек не обнуляя их.
IvanovPRO
1 / 0 / 0
Регистрация: 16.08.2013
Сообщений: 38
16.08.2013, 11:46  [ТС]     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки #17
А преподаватель предпочел это за правильное решение)))

меня больше интересует точка минимума 5,81005

как мне ее то получить, в excell я ее нашел на графике, теперь вот нужно через программу
korep
 Аватар для korep
47 / 40 / 9
Регистрация: 06.01.2013
Сообщений: 566
16.08.2013, 11:59     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки #18
2 на 100 замените
IvanovPRO
1 / 0 / 0
Регистрация: 16.08.2013
Сообщений: 38
16.08.2013, 12:02  [ТС]     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки #19
Работает. Только получилось 3,7768

А должно быть 5,81005

Неужели и это неправильно О_о
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2013, 12:03     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки
Еще ссылки по теме:

C++ Найти и исправить ошибки в приведенном коде
Как ускорить данный алгоритм нахождения минимума на отрезке? C++
C++ Конструктор, деструктор, friend-функции. Исправить ошибки

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

Или воспользуйтесь поиском по форуму:
korep
 Аватар для korep
47 / 40 / 9
Регистрация: 06.01.2013
Сообщений: 566
16.08.2013, 12:03     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки #20
может быть точность как-то влияет. здесь я уже не в курсе.
Yandex
Объявления
16.08.2013, 12:03     Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки
Ответ Создать тему
Опции темы

Текущее время: 02:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru