Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 25.04.2012
Сообщений: 15
1

Решение нелинейных уравнений. Метод половинного деления

12.07.2012, 03:04. Просмотров 1394. Ответов 2
Метки нет (Все метки)

Здравствуйте,
помогите, пожалуйста, найти ошибку в программе. Программа выдает верное значение корня, но сильно округляя его.
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
 float a,b,e,c,x;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{ a=1;                     //ïðèñâàèâàíèå ïåðâîíî÷àëüíûõ çíà÷åíèé êîìïîíåíòàì Edit
  b=2;
  c=3;
  Edit1->Text="1";        
  Edit2->Text="2";
  Edit3->Text="3";
}
 
//---------------------------------------------------------------------------
  #include <iostream>
   #include <conio.h>
#include <math.h>
  using namespace std;
  double f(float x) {       //îáúÿâëåíèå ôóíêèè f(x)=sin(x)+x-1
 
    return   (sin(x))+x-1;}
      int main() {
        // êîðåíü óðàâíåíèÿ
       float x;
       // ëåâàÿ ãðàíèöà îòðåçêà
       float a;
       // ïðàâàÿ ãðàíèöà îòðåçêà
       float b;
       // òî÷êà ïîñåðåäèíå îòðåçêà
       float c;
       // òî÷íîñòü
       float e;
          }
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        a=StrToFloat(Edit1->Text);   // ïåðåâîä äàííûõ ñòðîêîâîãî òèïà â äåéñòâèòåëüíûå ÷èñëà
        b=StrToFloat(Edit2->Text);
        e=StrToFloat(Edit3->Text);
        while  (abs(f(a)-f(b))>e)    {    //îïåðàòîð öèêëà while, íàêëàäûâàþùèé óñëîâèå, ÷òîáû ìîäóëü ðàçíîñòè ôóíêöèè ñ çíà÷åíèÿìè à è b áûë ìåíüøå òî÷íîñòè
          c=(a+b)/2;                   // îïðåäåëåíèå òî÷êè, äåëÿùåé îòðåçîê ïîïàëàì
           if (f(a)*f(c)<0)           //îïåðàòîð öèêëà if, íàêëàäûâàþùèé óñëîâèå, ÷òîáû ïðîèçâåäåèå ôóíêöèè ñ çíà÷åíèÿìè à è ñ áûëî ìåíüøå íóëÿ
                  b=c;               //ïðèñâàèâàíèå ïðàâîé ãðàíèöû îòðåçêà òî÷êè ñ
                else                // êëþ÷åâîå ñëîâî else, ïåðåäàþùåå óïðàâëåíèå ñëåäóþùåìó ïîñëå íåãî îïåðàòîðó
                  a=c;}             // ïðèñâàèâàíèå ëåâîé ãðàíèöû îòðåçêà òî÷êè ñ
            x=c;                    //ïðèñâàèâàíèå çíà÷åíèþ êîðíÿ òî÷êè ñ
            Edit4->Text=FloatToStr(x);     //ïîäà÷à çíà÷åíèÿ êîðíÿ íà ôîðìó
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.07.2012, 03:04
Ответы с готовыми решениями:

Методом половинного деления найти решение нелинейных уравнений
Методом половинного деления найти решение следующих нелинейных

Метод деления отрезка пополам для решения нелинейных уравнений (метод дихотомии)
Здравствуйте. Помогите пожалуйста дописать программу. Вот что вымучал, но на сдаче завалили, типо...

Решение нелинейных уравнений методом деления пополам
Окажите помощь в переписи программы с языка паскаль на с++ для курсовой работы. Программа решает...

Решение нелинейных уравнений методом деления отрезков пополам
Здравствуйте ! Пытаюсь решить задачку на тему Решение нелинейных уравнений Методом деления...

2
193 / 173 / 30
Регистрация: 10.07.2012
Сообщений: 799
12.07.2012, 05:40 2
если "руками" установить требуемую точность вывода и выводить ответ как число?
0
0 / 0 / 0
Регистрация: 25.04.2012
Сообщений: 15
12.07.2012, 08:19  [ТС] 3
да, при любой точности ответ выдается 0,5
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.07.2012, 08:19

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Нахождения корней уравнения: метод половинного деления (бисекции) или метод хорд
Разработать программу нахождения корней уравнения f(x) =0 на интервале с точностью e = 0,001...

Метод половинного деления
Дана функция с промежутком. Нужно найти все корни на этом промежутке методом половинного деления...

Метод половинного деления в си++
Листинг программы метода половинного деления на си++ для функции:tgx-1/3(tgx)^3+1/5(tgx)^5-1/3=0?

Метод половинного деления
Привет всем:) Помогите, пожалуйста, с программой для решения нелинейного уравнения методом...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.