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

ну очень интересно - C++

Восстановить пароль Регистрация
 
wanowin
0 / 0 / 0
Регистрация: 24.05.2011
Сообщений: 27
03.06.2011, 00:08     ну очень интересно #1
дана f(x).
дан отрезок [a,b] на котором расположены положительные корни
дана точность E
могу написать функцию, для нахождения одного корня на этом отрезке, а надо найти все.
использовать нужно метод половинного деления.

вот как выглядит эта функция


C++
1
2
3
4
5
6
7
8
9
10
int g(int a, int b, double E){
int c;
for(b-a>E){
c=(a+b)/2;
if(f(c)*f(a)>0)
a=c;
else b=c;
}
return a;
}





вотс. скажите пожалуйста, как выглядит функция для нахождения всех корней на указанном отрезке.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2011, 00:08     ну очень интересно
Посмотрите здесь:

Головоломка с матрицей. Очень интересно! C++
В чем интересно загвоздка???интересно разобраться! C++
C++ интересно
Матрица, очень интересно C++
C++ Просто интересно спросить
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Erwin
1 / 1 / 0
Регистрация: 12.03.2011
Сообщений: 8
03.06.2011, 00:37     ну очень интересно #2
Нужен отрезок на оси Х и оси Y, делишь отрезок на Y на определенное кол-во отрезков и получаешь массив Y[i]. Запускаешь цикл и подставляешь у и х в функцию, но это в случае F(x)=f(x,y).

Я делал когда-то

для теста XA бери -5, XB 5

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
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
void main()
{
    setlocale(LC_ALL,"Russian");
    int i, n, m;
    double a, b, fn, fs, fk, x0, *y, *x, h, xa, xb, xa1, xb1;
    double const eps = 0.001;
 
    cout << "Введите начало отрезка для Y "; cin >> a;
    cout << "Введите конец отрезка для Y "; cin >> b;
    cout << "На сколько частей резбить отрезок "; cin >> n;
    cout << "Введите начало интервала XA "; cin >> xa;
    cout << "Введите конец интервала XB "; cin >> xb; cout << "\n";
 
    m=n+1;
    h = (b-a)/n;
    y = new double [m];
    for (i=0;i<=n;i++)
    {
        y[i] = a + i*h;
    }
    x = new double [m];
    x0 = (xa+xb)/2.0;
    xa1 = xa; xb1 = xb;
 
    for(i=0;i<=n;i++)
    {
    while (fabs(xb-xa) > eps)
    {
        fn = cos(0.387*xa)-y[i]*sqrt(xa);
        fs = cos(0.387*x0)-y[i]*sqrt(x0);
        fk = cos(0.387*xb)-y[i]*sqrt(xb);
                
        if(fn*fs < 0)
        {
            xb = x0;
        }
        if (fk*fs < 0)
        {
            xa = x0;
        }
        x0 = (xa+xb)/2.0;
        x[i] = x0;
    }
    xa = xa1; xb = xb1;
    }
 
    for (i=0;i<=n;i++)
    {
 
        cout << "y" << i << " = " << y[i] <<"\t\tx" << i << " = " << x[i] << "\t\tF = " << cos(0.387*x[i])-y[i]*sqrt(x[i]) <<endl;
    }
    _getch();
}
wanowin
0 / 0 / 0
Регистрация: 24.05.2011
Сообщений: 27
03.06.2011, 00:43  [ТС]     ну очень интересно #3
для начала.
можно поинтересоваться для чего
C++
1
  cout << "На сколько частей резбить отрезок "; cin >> n;
???

то есть, для чего делить отрезок?
и для чего ось Y?
almazsr
232 / 169 / 7
Регистрация: 13.11.2010
Сообщений: 425
03.06.2011, 00:45     ну очень интересно #4
wanowin, а что значит "положительные корни"?
wanowin
0 / 0 / 0
Регистрация: 24.05.2011
Сообщений: 27
03.06.2011, 00:53  [ТС]     ну очень интересно #5
корни, значения которых > 0 )) то есть a=0 и b>0
Yandex
Объявления
03.06.2011, 00:53     ну очень интересно
Ответ Создать тему
Опции темы

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