Показать сообщение отдельно
Старый 15.05.2011, 12:29   #1
GrandMaster
 
Регистрация: 09.07.2010
Сообщений: 16
Репутация: 0
По умолчанию Метод половинного деления (си++)

Всем привет. Делаю курсовую по вычислительной математике и надо написать программу. А именно "разработать алгоритм численного решения нелинейного уравнения методом половинного деления". Вроде как повезло с вариантом, тем легкая. Вот собственно код
Код:
#include <vcl.h>
#include <math.h>
#pragma hdrstop
#include "sourcecode.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
 
double f(double x)
{
    return pow(x,2)-4*x-10;
}
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::Button1Click(TObject *Sender)
{
double a,b,c,eps;
a = Edit1->Text.ToDouble();
b = Edit2->Text.ToDouble();
eps = Edit3->Text.ToDouble();
 
while (fabs(a-b)>=eps){
    c=(a+b)/2;
    if(f(b) * f(c) < 0)
    a = c;
    else
    b = c;
}
Edit4->Text = (a + b) / 2;
}
Но нужно добавить условие, чтоб когда юзер вводит a и b, то проверялось условия f(а)*f(b)<0, а потом уже выполнялась
Код:
 c=(a+b)/2;
    if(f(b) * f(c) < 0)
    a = c;
    else
    b = c;
Иначе выводить ошибку "В этом диапазоне нет корней или больше одного"Вот это и не получается. Не подскажите? спасибо
GrandMaster вне форума   Ответить с цитированием