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

Вычисление корней методом хорд - C++

Войти
Регистрация
Восстановить пароль
 
gyber
Сообщений: n/a
18.07.2012, 02:02     Вычисление корней методом хорд #1
Доброго времени суток. необходимо написать программу для нахождения корней ф-ции методом хорд. функция выбирается одна из 3х предложенных, точность,начало и конец функции вводятся с клавиатуры пользователем. вот код, подскажите если можете в чем ошибки.
Заранее спасибо
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <iostream>
#include <math.h>
#include <string>
 
using namespace  std;  
 
class F {
public:
 
    double nach; // начало ф-ции
    double kon; // конец
    double rez; // результат
    double eps; // точность
    int vib; // выбор ф-ции
 
    double get_nach()
    {return nach;}
 
    double get_kon()
    {return kon;}
 
    double get_rez()
    {return rez;}
 
    double get_eps()
    {return eps;}
 
    int get_vib()
    {return vib;}
 
    
    void set_nach(double nh)
    {nach=nh;}
 
    void set_kon(double kn)
    {kon=kn;}
 
    void set_eps(double es)
    {eps=es;}
 
    void set_vib(int vb)
    {vib=vb;}
 
F()
 
    {rez=0;}
 
    if (vib=1 )
    {   double f(double x){
        return pow(x,3)-48*x-53;}
    
    while (fabs(rez-kon)<eps){
        rez=f(kon)*(kon-nach)/(f(kon)-f(nach));
    double x=nach=rez;
    cout<<rez;}
    }//f1
    
    else if (vib=2)
    {double f2(double x){
        return pow(x,3)+15*x-18;}
    
    while (fabs(rez-kon)<eps){
        rez=f2(kon)*(kon-nach)/(f2(kon)-f2(nach));
    double x=nach=rez;
    cout<<rez;}
    }//f2
    
    else if (vib=3)
    {double f3(double x){
        return pow(x,3)-20*x+6;}
    
    while (fabs(rez-kon)<eps){
        rez=f3(kon)*(kon-nach)/(f3(kon)-f3(nach));
    double x=nach=rez;
    cout<<rez;}
    }//f3
    
 
};
 
int main() {
 
    cout<<"Vvedite nomer trebuemoi f-cii"<<endl;
    cout<<"pow(x,3)-48*x-53"<<endl;
    cout<<"pow(x,3)+15*x-18"<<endl;
    cout<<"pow(x,3)-20*x+6"<<endl;
    cout<<"№=";
    cin>>vib;
 
    cout<<"Vvedite nachalo f-cii"<<endl;
    cin>>nach>>endl;
 
    cout<<"Vvedite nachalo konec"<<endl;
    cin>>kon>>endl;
 
    cout<<"Vvedite tocost' "<<endl;
    cin>>eps>>endl;
 
    cout<<"Otvet"<<endl;
   cout << "x=" << rez <<endl;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2012, 02:02     Вычисление корней методом хорд
Посмотрите здесь:

найти корень функции методом хорд C++
Найти корень функции методом хорд C++
C++ Нахождение корня методом хорд
Решить нелинейное уравнение методом хорд и методом простой итерации C++
C++ Решение уравнений методом хорд на C++
Программа нахождения корней многочлена методом хорд C++
C++ Вычисление корней системы уравнений методом Крамера
Решение уравнений методом хорд C++
Нахождения корней уравнения: метод половинного деления (бисекции) или метод хорд C++
Найти корень уравнения методом хорд и методом касательных C++
Найти корни уравнения методом хорд C++
Решить уравнение по заданной формуле методом хорд и модифицированным методом Ньютона C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2012, 07:02     Вычисление корней методом хорд #2
В main() отсутствует объект класса F. Поэтому так:
cin>>vib;
неправильно. Нужно:
C++
1
2
F a;
cin>>a.vib;
Непонятно, что идёт после 45 строки. Если это всё конструктор, то забыты скобки. Если конструктор:
F()

{rez=0;}
, то что дальше за if(), else, while и пр.?

Если привести, хоть к какому-то осмысленному виду, то
Код
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include <iostream>
#include <math.h>
#include <string>
using namespace  std;
 
class F 
{
private:
    double nach; // начало ф-ции
    double kon; // конец
    double rez; // результат
    double eps; // точность
    int vib; // выбор ф-ции
    
public: 
    F() 
{
    rez = 0;
}
    
    double get_nach()
    {return nach;}
 
    double get_kon()
    {return kon;}
 
    double get_rez()
    {return rez;}
 
    double get_eps()
    {return eps;}
 
    int get_vib()
    {return vib;}
 
    void set_nach(double nh)
    {nach = nh;}
 
    void set_kon(double kn)
    {kon = kn;}
 
    void set_eps(double es)
    {eps = es;}
 
    void set_vib(int vb)
    {vib = vb;}
 
double f1(double x)
{
    return pow(x, 3) - 48 * x - 53;
}
 
double f2(double x)
{
    return pow(x , 3) + 15 * x - 18;
}
 
double f3(double x)
{
     return pow(x , 3) - 20 * x + 6;
}
    
void f()
{
    if (vib == 1) 
    while (fabs(rez - kon) > eps)
    {
        rez = f1(kon) * (kon - nach) / (f1(kon) - f1(nach));
        double x = nach = rez;
        cout << rez;
    }
    
    if (vib == 2)
    while (fabs(rez - kon) > eps)
    {
        rez = f2(kon) * (kon - nach) / (f2(kon) - f2(nach));
        double x = nach = rez;
        cout << rez;
    }
    
    if (vib == 3)
    while (fabs(rez - kon) > eps)
    {
        rez = f3(kon) * (kon - nach) / (f3(kon) - f3(nach));
        double x = nach = rez;
        cout << rez;
    }
}   
};
 
int main() 
{
    cout << "Vvedite nomer trebuemoi f-cii" << endl;
    cout << "1) pow(x, 3) - 48 * x - 53" << endl;
    cout << "2) pow(x, 3) + 15 * x - 18" << endl;
    cout << "3) pow(x, 3) - 20 * x + 6" << endl;
    cout << "namber = ";
    
    int vib;
    double nach, kon, eps;
    
    F a;
 
    cin >> vib;
    a.set_vib(vib);
 
    cout << "Vvedite nachalo f-cii" << endl;
    cin >> nach;
    a.set_nach(nach);
 
    cout << "Vvedite konec" << endl;
    cin >> kon;
    a.set_kon(kon);
 
    cout << "Vvedite tochnost' " << endl;
    cin >> eps;
    a.set_eps(eps);
    
    a.f();
    
    cout << "\nOtvet" << endl;
    cout << "x = " << a.get_rez() << endl;
 
cout << endl;
system("pause");
return 0;
}
gyber
Сообщений: n/a
18.07.2012, 09:18     Вычисление корней методом хорд #3
спасибо большое
Yandex
Объявления
18.07.2012, 09:18     Вычисление корней методом хорд
Ответ Создать тему
Опции темы

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