Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 23.11.2012
Сообщений: 44
1

Нахождение корней многочлена методом хорд

09.05.2013, 15:54. Показов 2535. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
есть код программы на dev c++ помогите мне сделать ее на builder c++. Или дайте рекомендации как сделать Программу нахождения корней многочлена методом хорд на билдере . Очень надо курсовая горит
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
#include<math.h>
using namespace std;
double  f (double x)
{return tan(0.5*x+0.1)-x*x; } //твоя функция
double f2(double x)
{return 0.5*sin(0.5*x)/pow(cos(0.5*x),4)-2;}    //ее производная
int main()
{double a,b,xs,xm,xn;
 double eps=0.001;
 cout<<"Nacalo:";
 cin>>a;
 cout<<"conec:";
 cin>>b;
 if ((f(a)*f2(a)) < 0) {xm=a; xs=b;}
 else {xm=b; xs=a; }
 xn=xm;
 do{ xm=xn;
xn=xm-(f(xm)*(xs-xm)/(f(xs)-f(xm)));  }
 while (fabs(xn-xm)>eps);
 cout<<"x="<<xn;}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2013, 15:54
Ответы с готовыми решениями:

Нахождение корней функции f(x)=0 методом Ньютона
Нужно написать программу нахождения корней функции f(x)=0 методом Ньютона. Функция должна...

Программа нахождения корней многочлена методом хорд
СРОЧНО! Программа нахождения корней многочлена методом хорд. Функции sinx,cosx,tgx,ctgx,lnx должны...

Нахождение всех действительных корней методом хорд
Нужно составить программу для нахождения всех действительных корней уравнения F(x)=0 методом хорд...

Нахождение целых корней многочлена методом Горнера
Здравствуйте, помогите мне разобраться с одной проблемой. Мне надо написать программу, которая...

17
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
09.05.2013, 16:33 2
А чего не так? Вроде все работает.
0
1 / 1 / 0
Регистрация: 23.11.2012
Сообщений: 44
09.05.2013, 16:45  [ТС] 3
Цитата Сообщение от BRcr Посмотреть сообщение
А чего не так? Вроде все работает.
Работает в dev c++ a в builderе как эти функции задать? с return что делать? и т.д.
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
09.05.2013, 17:03 4
Какое-такое т.д.? Вроде русским по белому написал, что все работает в билдере.
Миниатюры
Нахождение корней многочлена методом хорд  
0
1 / 1 / 0
Регистрация: 23.11.2012
Сообщений: 44
09.05.2013, 17:11  [ТС] 5
Цитата Сообщение от BRcr Посмотреть сообщение
Какое-такое т.д.? Вроде русским по белому написал, что все работает в билдере.
Стой ты просто вкинул все в билдер?
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
09.05.2013, 17:21 6
Ну, да. Что тебе мешает сделать то же самое?
0
1 / 1 / 0
Регистрация: 23.11.2012
Сообщений: 44
09.05.2013, 17:23  [ТС] 7
Да то что у меня выдает ошибку о неправильности синтаксиса, сделай скрин своего кода в билдере.
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
09.05.2013, 17:39 8
Создаешь консольный проект и копируешь куски кода в соответствующие места. Название и аргументы функции main лучше оставить те, что сгенерируются билдером. У меня юникодный билдер, поэтому объявление main выглядит несколько иначе.
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
// #include <algorithm>
// #include <boost/regex.hpp>
// #include <boost/thread/thread.hpp>
// #include <boost/variant.hpp>
// #include <cmath.h>
// #include <ctype.h>
// #include <float.h>
#include <fstream>
// #include <iomanip.h>
#include <iostream>
// #include <limits.h>
// #include <locale.h>
// #include <malloc.h>
#include <math.h>
// #include <numeric>
// #include <queue>
#include <sstream>
// #include <stack>
// #include <stdarg.h>
// #include <stdlib.h>
// #include <stdio.h>
#include <string>
// #include <System.hpp>
// #include <SysUtils.hpp>
#include <tchar.h>
// #include <time.h>
// #include <vector>
// #include <Windows.h>
// #include <limits>
// #include <iterator>
// #include <functional>
// #include <list>
// #include <Cfgmgr32.h>
 
#pragma hdrstop
 
// ---------------------------------------------------------------------------
double f( double x )
{
    return tan( 0.5 * x + 0.1 ) - x * x;
} // твоя функция
double f2( double x )
{
    return 0.5 * sin( 0.5 * x ) / pow( cos( 0.5 * x ), 4 ) - 2;
} // ее производная
// ---------------------------------------------------------------------------
int _tmain( int argc, _TCHAR * argv[] )
{
    system( "color 2e" ); // желтый текст на зеленом фоне
    // system( "chcp 1251" );
    system( "cls" );
    //////////////////////////////////////
    using namespace std;
    // using namespace boost;
    //////////////////////////////////////
    double a, b, xs, xm, xn;
    double eps = 0.001;
    cout << "Nacalo:";
    cin >> a;
    cout << "conec:";
    cin >> b;
    if ( ( f( a ) * f2( a ) ) < 0 )
    {
        xm = a;
        xs = b;
    }
    else
    {
        xm = b;
        xs = a;
    }
    xn = xm;
    do
    {
        xm = xn;
        xn = xm - ( f( xm ) * ( xs - xm ) / ( f( xs ) - f( xm ) ) );
    }
    while ( fabs( xn - xm ) > eps );
    cout << "x=" << xn;
    //////////////////////////////////////
    cout << "\n\n";
    system( "pause" );
    return 0;
}
0
1 / 1 / 0
Регистрация: 23.11.2012
Сообщений: 44
09.05.2013, 17:49  [ТС] 9
А в графическом проекте как?
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
09.05.2013, 18:06 10
А сразу написать, что нужно на формах, не судьба?

Кидаешь на форму пару эдитов и кнопку. Вспомогательные функции объявляются просто в глобальном пространстве. Создаешь обработчик клика кнопки. Пишешь все это примерно так:
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
double f( double x )
{
    return tan( 0.5 * x + 0.1 ) - x * x;
} // твоя функция
double f2( double x )
{
    return 0.5 * sin( 0.5 * x ) / pow( cos( 0.5 * x ), 4 ) - 2;
} // ее производная
// ---------------------------------------------------------------------------
void __fastcall TForm1::btn1Click( TObject * Sender )
{
    double a, b, xs, xm, xn;
    double eps = 0.001;
 
    if ( TryStrToFloat( edit_a->Text, a ) && TryStrToFloat( edit_b->Text, b ) )
    {
        if ( ( f( a ) * f2( a ) ) < 0 )
        {
            xm = a;
            xs = b;
        }
        else
        {
            xm = b;
            xs = a;
        }
        xn = xm;
        do
        {
            xm = xn;
            xn = xm - ( f( xm ) * ( xs - xm ) / ( f( xs ) - f( xm ) ) );
        }
        while ( fabs( xn - xm ) > eps );
        ShowMessage( "x = " + FloatToStr( xn ) );
    }
    else
    {
        ShowMessage( "Введите верные границы интервала." );
    }
}
Миниатюры
Нахождение корней многочлена методом хорд  
1
1 / 1 / 0
Регистрация: 23.11.2012
Сообщений: 44
09.05.2013, 18:42  [ТС] 11
спасибо большое!! но у меня вот что "E2034 Cannot convert 'AnsiString' to 'float'" что за ошибка?
Миниатюры
Нахождение корней многочлена методом хорд  
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
09.05.2013, 19:27 12
Ну, дык, не надо было добавлять от себя того, чего не понимаешь. Это редко работает. "а=" - это лишнее.
1
1 / 1 / 0
Регистрация: 23.11.2012
Сообщений: 44
09.05.2013, 19:38  [ТС] 13
Послушайте очень неудобно вас просить, но задача вроде такая же, делаю так же но все равно ошибки не знаю в чем дело. Поможете мне еще раз из dev на builder с графическими компонентами программу переделать так чтобы можно было вводить с клавиатуры границу?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <math.h>
 
using namespace std;
float m_ch(float, float, float);
float your_function(float);
int main()
{
    cout << m_ch(1,12,0.001) << endl;// задаем начальные точки и точность
    return 0;
}
float m_ch(float x1, float x2, float e){
    if (fabs(x2-x1)<e) return x2;
    return m_ch((x1-((your_function(x1))*(x2-x1))/(your_function(x2)-your_function(x1))),x1,e);
}
float your_function(float x){
    return sin(x);
}
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
09.05.2013, 19:47 14
Не вроде такая же, а один в один. Где тут ошибки ловить? С эдитов получаешь данные точно так же, отдаешь их функции m_ch() и забираешь с нее результат, результат отображаешь таким же макаром с помощью ShowMessage().

Приводи свои попытки и тексты ошибок, если хочешь разобраться.
0
1 / 1 / 0
Регистрация: 23.11.2012
Сообщений: 44
09.05.2013, 19:59  [ТС] 15
вот вроде все так же первую часть пихнул в основу формы стер сout<< и все
Миниатюры
Нахождение корней многочлена методом хорд  
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
09.05.2013, 20:14 16
Объявление функции m_ch() ты засунул внутрь тела функции Button1Click(). Так делать не след не только в билдере, но и в упомянутом dev c++. Объяви ее в глобальном пространстве, так же как функцию your_function(). В обработчике должно остаться нечто вроде:
C++
1
ShowMessage( "result = " + FloatToStr( m_ch( 1, 12, 0.001 ) ) );
0
LK
Заблокирован
09.05.2013, 20:22 17
а непосредственно ошибка в том, что после
C++
1
m_ch(чего-то-там)
отсутствует ;
0
1 / 1 / 0
Регистрация: 23.11.2012
Сообщений: 44
09.05.2013, 21:02  [ТС] 18
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
float m_ch(float, float, float);
float your_function(float);
 
float m_ch(float x1, float x2, float e){
    if (fabs(x2-x1)<e) return x2;
    return m_ch((x1-((your_function(x1))*(x2-x1))/(your_function(x2)-your_function(x1))),x1,e);
}
float your_function(float x){
    return sin(x);
    }
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::sButton1Click(TObject *Sender)
{
ShowMessage( "result = " + FloatToStr(m_ch( StrToFloat(Edit1->Text), StrToFloat(Edit2->Text), 0.001))) ;
}
//---------------------------------------------------------------------------
все получилось спасибо огромное
Миниатюры
Нахождение корней многочлена методом хорд  
0
09.05.2013, 21:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2013, 21:02
Помогаю со студенческими работами здесь

Графическим методом выполнить локализацию корней уравнения и решить его методом хорд и касательных.
Привет=) Помогите плиз!) Задание: Графическим методом выполнить локализацию корней нелинейного...

Небольшая задачка. Нахождение корней многочлена.
Здравствуйте скажу сразу в области javascript не силен, есть набросок скрипта для нахождения корней...

Вычисление корней методом хорд
Доброго времени суток. необходимо написать программу для нахождения корней ф-ции методом хорд....

Определение корней уравнения методом хорд
Доброго времени суток) Помогите, пожалуйста, скорректировать код программы для вычисления корней...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru