Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2009, 00:41   #11
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

Код:
double start, double end
Я так понял,это для пределов, старт-нижний,энд - верхний.
но ошибку уже выдаёт log10: SING error, , если вставить log10 вместо log
а если вставить integral(&f2,0.001,8); при эпсилон = 0,001, как у меня в задании, выдаст 4 разных результата,и в нём фигурирует уже 4.00099 а мне нужно только 2 результата с одним корнем при выводе.

Последний раз редактировалось prikolist; 07.06.2009 в 00:46.
prikolist вне форума Ответить с цитированием
Старый 07.06.2009, 00:47   #12
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Я так понял,это для пределов, старт-нижний,энд - верхний.
Да.
Вы можете пояснить вот эту фразу:
Цитата:
выдаст 4 разных результата
Какие 4 результата?
И еще вот эту:
Цитата:
а мне нужно только 2 результата с одним корнем
Программа выдает ровно 2 значения. По одному для каждой функции.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 07.06.2009, 00:50   #13
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

Когда я написал вот так,код:
Код:
#include <vcl>
#include <iostream>
#include <cmath>
using namespace std;
const double epsilon = 1e-3;

double f1(double x);
double f2(double x);
void integral(double (*f) (double), double start, double end);

int main()
{
cout<<"   --------Metod polovinogo delenia---------"<<endl<<endl;
integral(&f1,0,2);
integral(&f2,0.001,8);
system("pause");

}

double f1(double x )
{
    return 9.25*pow(x,4)-3*x*x+6.25*x;
}

double f2(double x)
{
return 2*x-log10(x)-7;
}

void integral(double (*f) (double), double start, double end )
{
    double a, b, c;
    a = start;
    b = end;
    while (fabs(b - a) >= epsilon)
    {
        c = (a + b) / 2;
        if(f(a) * f(c) < 0)
            a = c;
        else
            b = c;
    }
    cout << (a + b) / 2 << endl;
    cout<<f((a+b)/2)<<endl;
}
Выдало такой непонятный результат без корня, вывело 4 результата
Изображения
Тип файла: jpg d.jpg (11.2 Кб, 46 просмотров)

Последний раз редактировалось prikolist; 07.06.2009 в 00:53.
prikolist вне форума Ответить с цитированием
Старый 07.06.2009, 00:53   #14
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Выдало такой непонятный результат без корня.
А что тут непонятного-то? И что значит без корня? А это, по-вашему, что?
Я просто добавил вывод значения самой функции
Код:
cout<<f((a+b)/2)<<endl;
можете удалить эту строчку, если она вам так мешает.

Вы на код смотрите и будет все понятно.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 07.06.2009, 01:01   #15
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

Спасибо Сазари,теперь вывело:
0,000488
4.00099
Корень,я так понял четвёрка,правда не до конца целая.
Теперь надо мне попытаться как-то сделать остальными в задании методами.
prikolist вне форума Ответить с цитированием
Старый 07.06.2009, 01:08   #16
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вообще, по идее, там должно быть что-то около 3.8.
Вот так запустите:
Код:
integral(&f2,0.1,7.5);
Будет более точно.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дифференциальные уравнения StudentPolitech Общие вопросы C/C++ 12 07.06.2009 17:48
Вычислить уравнения systemmind Общие вопросы C/C++ 3 26.02.2009 18:31
Решение уравнения Datrav Паскаль, Turbo Pascal, PascalABC.NET 2 06.06.2008 08:23
Рекуррентные уравнения RIO Помощь студентам 1 13.01.2008 15:27