Metoda Gaussa - Seidla
Ostatnio zmodyfikowano 2010-01-03 09:03
Macius700 Temat założony przez niniejszego użytkownika |
Metoda Gaussa - Seidla » 2010-01-02 11:39:18
#include <vcl.h> #pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init) #pragma resource "*.dfm" TForm1 * Form1;
__fastcall TForm1::TForm1( TComponent * Owner ) : TForm( Owner ) { }
void __fastcall TForm1::Button1Click( TObject * Sender ) { int n, iter; try { n = StrToInt( Edit1->Text ); iter = StrToInt( Edit2->Text ); } catch( Exception * e ) { Edit1->Text = ""; Edit2->Text = ""; return; } W->ColCount = n; W->RowCount = n; X0->RowCount = n; Z->RowCount = n; X->RowCount = n; X->ColCount = iter; }
void __fastcall TForm1::Button3Click( TObject * Sender ) { Application->Terminate(); }
void __fastcall TForm1::Button2Click( TObject * Sender ) { int n, iter, i, j, k; double ** Ws, * X0s, * Xs, * Zs, suma; try { n = StrToInt( Edit1->Text ); iter = StrToInt( Edit2->Text ); } catch( Exception * e ) { Edit1->Text = ""; Edit2->Text = ""; return; } Ws = new double *[ n ]; for( i = 0; i < n; i++ ) Ws[ i ] = new double[ n ]; X0s = new double[ n ]; Zs = new double[ n ]; Xs = new double[ n ]; for( i = 0; i < n; i++ ) { for( j = 0; j < n; j++ ) Ws[ i ][ j ] = StrToFloat( W->Cells[ j ][ i ] ); X0s[ i ] = StrToFloat( X0->Cells[ 0 ][ i ] ); Zs[ i ] = StrToFloat( Z->Cells[ 0 ][ i ] ); } for( k = 0; k < iter; k++ ) { for( i = 0; i < n; i++ ) { X0s[ i ] = Xs[ i ]; suma = 0; for( j = 0; j < i; j++ ) suma -= Ws[ i ][ j ] * X0s[ j ]; Xs[ i ] = suma + Zs[ i ]; } for( j = i + 1ji < n; j++ ) { X->Cells[ k ][ i ] = FloatToStr( Xs[ i ] ); } } }
for( k = 0; k < iter; k++ ) for( i = 0; i < n; i++ ) { x[ i ] = b[ i ]; for( j = 0; j < i; j++ ) x[ i ] -= L[ i ][ j ] * x[ j ]; for( j = i + 1; j < n; j++ ) x[ i ] -= U[ i ][ j ] * x[ j ];
Dobrze zrobiłem metode Gaussa seidla zgodnie z materiałem http://www.algorytm.org/index.php?option=com_content &task=view&id=160&Itemid=28 |
|
GoldWolf |
» 2010-01-03 09:03:26 Używasz środowiska Embarcadero (CodeGear/Borland) mało ludzi tutaj coś takiego używa. Trudno się sprawdza coś takiego. Zajrzyj na forum - Cyfrowego. |
|
« 1 » |