Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2014, 17:29   #11
lin1tiv
Новичок
Джуниор
 
Регистрация: 22.05.2014
Сообщений: 1
По умолчанию

методом якоби(простой итерации)
Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "slar.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#include<math.h>
#include<stdlib.h>

TForm1 *Form1;
int n=0, prov=0, k=0;
const x=100;
float A[x] [x], B[x] [x];
float C[x], Y[x];
float *X;
bool fl1=false;
float e;
float v_sh;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm1::ButtonOkClick(TObject *Sender)
{
Memo1->Lines->Clear();
k=0;
TryStrToInt (Edit1->Text, n);
if (n>1)
{
StringGrid1->RowCount=n;
StringGrid1->ColCount=n+1;
ButtonClear->Enabled=true;
ButtonOk->Enabled=false;
StringGrid1->Color=clWindow;
Button1->Enabled=true;
X=new float[n];
for (int i=0; i<n; i++)
{
for (int j=0; j<n+1; j++)
{
A[i] [j]=NULL;
}
X[i]=NULL;
}
}
else
{
ShowMessage ("Число має бути цілого типу!(1, 2, 3...)");
}

}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonClearClick(TObject *Sender)
{
Edit1->Text="";
Edit2->Text="";
StringGrid1->RowCount=0;
StringGrid1->ColCount=0;
ButtonClear->Enabled=false;
ButtonOk->Enabled=true;
StringGrid1->Color=clBtnFace;
Button1->Enabled=false;
Memo1->Lines->Clear();

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Memo1->Lines->Clear();
e=StrToFloat (Edit2->Text);
for (int i=0; i<n; i++)
{
for (int j=0; j<n+1; j++)
{
TryStrToFloat (StringGrid1->Cells[j] [i], A[i] [j]);
}
}
for (int i=0; i<n; i++)
{
for (int j=0; j<n+1; j++)
{
if (A[i] [j]==NULL)
{
ShowMessage ("Ошибка! Присутні пусті комірки!");
fl1=true;
i=n;
break;
}
}
}
if(! fl1) {
for (int i=0; i<n; i++)
{
for (int j=0; j<n; j++)
{
if (i!=j) B[i] [j]=(-1)*A[i] [j]/A[i] [i];
else
{
B[i] [j]=0;
C[i]=A[i] [n]/A[i] [i];
}
}
}
for (int i=0; i<n; i++) X[i]=C[i];
float s=0;
k=0;
do
{
prov=0;
for (int i=0; i<n; i++)
{
Y[i]=X[i];
for (int j=0; j<n; j++)
{
s+=B[i] [j]*X[i];
}
X[i]=s+C[i];
s=0;
}
for (int i=0; i<n; i++)
{
if (fabs(X[i] - Y[i])<e) prov++;
}
k++;
}
while (prov!=n);
Memo1->Lines->Add (" МЕТОД ЯКОБІ");
Memo1->Lines->Add("");
String p="";
Memo1->Lines->Add ("Проміжна матриця:");
for (int i=0; i<n; i++)
{
p="";
for (int j=0; j<n+1; j++)
{
p+=FloatToStr (B[i] [j])+"";
  
}
Memo1->Lines->Add(p);
}
Memo1->Lines->Add("");
Memo1->Lines->Add ("Корені СЛАР дорівнюють:");
for (int i=0; i<n; i++)
{
if (X[i]!=NULL)
{
Memo1->Lines->Add ("x"+IntToStr (i+1)+" = "+FloatToStr (X[i]));
}
else
{
Memo1->Lines->Add ("Нема коренів!");
break;
}
}
Memo1->Lines->Add("");
Memo1->Lines->Add ("Кількість ітерацій = "+FloatToStr(k));
}

}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonExitClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N6Click(TObject *Sender)
{
if  (SaveDialog1->Execute() )

Memo1->Lines-> SaveToFile (SaveDialog1->FileName) ;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N2Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N5Click(TObject *Sender)
{
Edit1->Text="";
Edit2->Text="";
StringGrid1->RowCount=0;
StringGrid1->ColCount=0;
ButtonClear->Enabled=false;
ButtonOk->Enabled=true;
StringGrid1->Color=clBtnFace;
Button1->Enabled=false;
Memo1->Lines->Clear();       
}
//---------------------------------------------------------------------------






void __fastcall TForm1::N7Click(TObject *Sender)
{
Form2->Visible=true;
}
//---------------------------------------------------------------------------

Последний раз редактировалось Stilet; 16.11.2014 в 09:10.
lin1tiv вне форума Ответить с цитированием
Старый 16.11.2014, 01:54   #12
Катя Сойникова
Новичок
Джуниор
 
Регистрация: 22.10.2013
Сообщений: 1
По умолчанию

Не моги бы Вы немного прокомментировать этот алгоритм?
Катя Сойникова вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
система линейных алгебраических уравнений frol55 Помощь студентам 4 04.11.2013 21:39
Разработать программу для решения СЛАУ (системы линейных алгебраических уравнений) с нижней треугольной матрицей. Sergei/ Помощь студентам 0 19.05.2013 18:14
Итерация для решения системы линейно алгебраических уравнений Julja@ Помощь студентам 0 24.12.2011 08:32
Разработка программы решения системы линейных уравнений методом Гаусса. cor666 C# (си шарп) 5 11.12.2011 22:36
решение системы линейных алгебраических уравнений LediDashuta Помощь студентам 0 23.05.2010 18:40