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

нахождение корня на интервале - C++

Восстановить пароль Регистрация
 
cibertronic
 Аватар для cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
05.02.2010, 08:23     нахождение корня на интервале #1
дано x^2-4x-8,75. найти корень уравнения f(x)=0 на интервале (A,B) c точностью E. использовать метод хорд. где A=5,5 B=6,5 E=10^-4. Результат решения - "Корень уравнения X"

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

но имеется исходник подобной задачи, суть которой состоит в том что нужно найти корень, на том же интервале, с точностью Е, которая вводится с клавиатуры вместе с интервалом. функция монотонна(что собственно, монотонно, я так и не вспомнил)) ) и непрерывна, где f(x)=x-sin(x)/cos(x), a<b, e>0. исходник такой:
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
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float f(float fx)
{
return fx-sin(fx)-0.25;
}
void main()
{
float a,b,e,x,x1,x2;
printf("\n vvedite a,b,e");
scanf("%f%f%f",&a,&b,&e);
if(f(a)*f(b)>0)
printf("\n\n kornej net\n");
else
{
x1=a;
x2=b;
while(fabs(x2-x1)>e)
{
x=(x1+x2)/2;
if(f(x1)*f(x)>0)
x1=x;
else
x2=x;
}
printf("\n koren' uravneniya=%f\n f(x) v etoj to4ke=%f",x1,f(x1));
}
getch();
}
как выразить мою задачу я так и не понял

Добавлено через 3 минуты
забыл уточнить.... знак ^ - степень, например x^y, означает x в степени y

Добавлено через 12 часов 10 минут
никто не поможет?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cibertronic
 Аватар для cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
05.02.2010, 10:13  [ТС]     нахождение корня на интервале #2
нашел схему алгоритма нахождения корня методом хорд для какой точно формулы я так и не понял. но вот что она представляет из себя:
Миниатюры
нахождение корня на интервале  
cibertronic
 Аватар для cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
05.02.2010, 10:21  [ТС]     нахождение корня на интервале #3
еще вот
Миниатюры
нахождение корня на интервале  
JKeeJ1e30
12 / 12 / 0
Регистрация: 04.02.2010
Сообщений: 45
05.02.2010, 10:22     нахождение корня на интервале #4
единственное чем могу помочь:
монотонная функция-функция, для которой:
для всех x,y; x>y f(x)>f(y)(или же f(x)<f(y), f(x)>=f(y),f(x)<=f(y))
cibertronic
 Аватар для cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
05.02.2010, 14:12  [ТС]     нахождение корня на интервале #5
чес сказать ниче все равно не понимаю ))

Добавлено через 3 часа 45 минут
никто не поможет?
JKeeJ1e30
12 / 12 / 0
Регистрация: 04.02.2010
Сообщений: 45
05.02.2010, 17:40     нахождение корня на интервале #6
Цитата Сообщение от cibertronic Посмотреть сообщение
чес сказать ниче все равно не понимаю ))

Добавлено через 3 часа 45 минут
никто не поможет?
Короче если у тебя производная всегда одного знака-последовательность монотонная
cibertronic
 Аватар для cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
05.02.2010, 19:49  [ТС]     нахождение корня на интервале #7
ясно)) что ничего не ясно)
Dopler
3 / 3 / 1
Регистрация: 03.02.2010
Сообщений: 15
05.02.2010, 21:25     нахождение корня на интервале #8
оооо, его величество выч мат))) только сегодня экзамен сдавал, вот тебе программа, проверенно работает:
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
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
 
float F (float x)
{
    return x*x-4*x-8.75;
}
void main()
{
    float a,b,E,c,x,t;
    int n=0;
    float F2=2;//2я производная для выбора неподвижного отрезка
    cout<<"Vvedite tochnost: ";
    cin>>E;
    cout<<"\nVvedite otrezok [a,b]: ";
    cin>>a>>b;
    if(F(a)*F(b)>0)//проверка, что корень сушествует и единственный на данном интервале
           {
        cout<<"\nKorney net!";
                      _getch();
        exit(0);
           }
    if(F(a)*F2>0)//выбор неподвижной точки
    {
        c=a;
        x=b;
    }
    else
    {
        c=b;
        x=a;
    }
    do{
        t=x;//сохраняем предыдущее приближения для вычисления погрешности
        x=x-(F(x)*(x-c))/(F(x)-F(c));//формула для вычисления следующего приближения к корню
        n++;
        cout<<"\nPribligenie k kornu na "<<n<<" iteracii: "<<x;
    }while(fabs(x-t)>E);//проверка условия окончания процесса, как только погрешность стала <= точности, то заканчиваем процесс
    cout<<"\n\nKoren: "<<x;
    cout<<"\nZnachenie v korne: "<<F(x);
    cout<<"\nKolichestvo iteraciy: "<<n;
    _getch();
}
cibertronic
 Аватар для cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
10.02.2010, 17:31  [ТС]     нахождение корня на интервале #9
спаисбо огромное)только потом надо будет все ент переделать)) мы cin и cout не используем) впалит что не я делал сразу))

Добавлено через 3 минуты
да....как преподу проще сказать шо такое интерации....я так понял что это количество хорд, так?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2010, 21:54     нахождение корня на интервале
Еще ссылки по теме:

Нахождение корня в заданном отрезке C++
Нахождение квадратного корня C++
C++ Найти значение корня на заданном интервале с заданной точностью

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

Или воспользуйтесь поиском по форуму:
Dopler
3 / 3 / 1
Регистрация: 03.02.2010
Сообщений: 15
11.02.2010, 21:54     нахождение корня на интервале #10
кол-во итераций - это за сколько шагов была достигнута требуемая точность, т.е. в данном случае кол-во хорд. cin и cout, я думаю, сам сделаешь (я просто не дружу с printf())
Yandex
Объявления
11.02.2010, 21:54     нахождение корня на интервале
Ответ Создать тему
Опции темы

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