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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2014, 23:32   #1
now2
Форумчанин
 
Регистрация: 12.03.2014
Сообщений: 217
По умолчанию PascalABC.Net Метод итераций для решения систем линейных уравнений

Задания
I. Напишите программу решения системы линейных уравнений
методом итераций с наперед заданной точностью.
II. Приведите примеры таких систем с преобладающими
диагональными элементами, после приведения которых к
итерационному виду, при их решении методом итераций
используется первая метрика, вторая метрика, систем, к которым
метод итераций не применим. Решите эти системы линейных
уравнений методом итераций с наперед заданной точностью и
осуществите проверку найденного решения. Обоснуйте
правильность полученных результатов.

Последний раз редактировалось now2; 15.04.2014 в 23:36.
now2 вне форума Ответить с цитированием
Старый 15.04.2014, 23:33   #2
now2
Форумчанин
 
Регистрация: 12.03.2014
Сообщений: 217
По умолчанию

если честно то вот это задание в отличии от метода Жордана - Гаусса я вообще не знаю как делать (((((
now2 вне форума Ответить с цитированием
Старый 15.04.2014, 23:36   #3
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

ничего не отвечу, пока не вобьете в яндексе
Метод итераций для решения слау паскаль
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 15.04.2014, 23:37   #4
now2
Форумчанин
 
Регистрация: 12.03.2014
Сообщений: 217
По умолчанию

Цитата:
Сообщение от ZX Spectrum-128 Посмотреть сообщение
ничего не отвечу, пока не вобьете в яндексе
Метод итераций для решения слау паскаль
окей
now2 вне форума Ответить с цитированием
Старый 15.04.2014, 23:41   #5
now2
Форумчанин
 
Регистрация: 12.03.2014
Сообщений: 217
По умолчанию

еще условие : Цель работы. Разработка компьютерной программы для решения
систем линейных уравнений методом Жордана-Гаусса.
now2 вне форума Ответить с цитированием
Старый 15.04.2014, 23:45   #6
now2
Форумчанин
 
Регистрация: 12.03.2014
Сообщений: 217
По умолчанию

Код C++
1
2
3
4
5
6
7
8
9
10
11
//Сам метод Гаусса - матрица приводится к виду, когда под главной диаганалью нули
for (k=0 ; k < n ; k++)
{
if(usr_vedelm->isChecked()) vedElem(A,k); //если выбрана опция вызова процедуры выбора ведущего элемента
for ( i = k+1 ; i < n; i++ )
{
buf = A[i][k]/A[k][k];
for ( j = k ; j < n+1 ; j++)
A[i][j]=A[i][j]-buf*A[k][j];
}
}
Код C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//Ищем решение снизу вверх прямой подстановкой
void MyWidget::findSolution(double **A, double **B)
{
int n = usr_dim -> text().toInt();
int i,j;
double buf=0.0;
double* X = new double [n];
X[n-1]=A[n-1][n]/A[n-1][n-1];
for ( i = n-2; i >= 0; i-- )
{
buf =0;
for ( j = i+1 ; j < n ; j++)
buf=buf+A[i][j]*X[j];
X[i]=1.0/A[i][i]*(A[i][n]-buf);
}
newValue(X,1);
nevyazka(B,X); //ищем невязку
}
Процедура выбора ведущего (главного) элемента. Передается указатель на матрицу и номер итерации
Код 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
void MyWidget::vedElem(double **A, int k)
{
int n = usr_dim->text().toInt();
int kmax=k;
double det = 1.0;
double Amod;
double Amax=fabs(A[k][k]);
if (k<n)
{
for (int i = k+1 ; i < n ; i++)
{
Amod=fabs(A[i][k]);
if (Amod > Amax)
{
Amax=Amod;
kmax=i;
}
}
}
if (fabs(Amax)<=DBL_EPSILON) //DBL_EPSILON - машинный ноль, для типа double
{
det=0.0;
crash();
return;
}
if (kmax!=k)
{
for (int j = k; j < n+1 ; j++)
{
double buf=A[k][j];
A[k][j]=A[kmax][j];
A[kmax][j]=buf;
now2 вне форума Ответить с цитированием
Старый 15.04.2014, 23:45   #7
now2
Форумчанин
 
Регистрация: 12.03.2014
Сообщений: 217
По умолчанию

только вот на С++
now2 вне форума Ответить с цитированием
Старый 15.04.2014, 23:47   #8
now2
Форумчанин
 
Регистрация: 12.03.2014
Сообщений: 217
По умолчанию

или вот , но вообще ничего не понятно
uses crt;
program solvgj2;

const maxr = 8;
maxc = 8;

type ary = array[1..maxr] of real;
arys = array[1..maxc] of real;
ary2s = array[1..maxr,1..maxc] of real;

ary2 = ary2s;
var y : ary;
coef,yy : arys;
a,b : ary2s;
n,m,i,j : integer;
first,
error : boolean;

external procedure cls;

procedure get_data(var a: ary2s;
var y: ary;
var n,m: integer);



var i,j : integer;

begin
writeln;
repeat
write('How many unknowns? ');
readln(m);
if first then first:=false else cls;
until m<maxc;
if m>1 then
begin
repeat
write('How many equations? ');
readln(n)
until n>=m;
for i:=1 to n do
begin
writeln('Equation',i:3);
for j:=1 to m do
begin
write(j:3,':');
read(a[i,j])
end;
write(',C:');
readln(y[i]) { clear line }
end; { i-loop }
writeln;
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j]:7:4,' ');
writeln(':',y[i]:7:4)
end;
writeln
end { if n>1 }
end; { procedure get_data }

procedure write_data;



var i : integer;

begin
for i:=1 to m do
write(coef[i]:9:5);
writeln
end; { write_data }

{external procedure square
( y : ary;
var a : ary2s;
var g : arys;
nrow,ncol : integer);}





begin { MAIN program }
first:=true;
cls;
writeln;
writeln('Best fit to simultaneous equations');
writeln('By Gauss-Jordan');
repeat
get_data(a,y,n,m);
if m>1 then
begin
square(a,y,b,yy,n,m);
gaussj(b,yy,coef,m,error);
if not error then write_data
end
until m<2
end.
now2 вне форума Ответить с цитированием
Старый 15.04.2014, 23:49   #9
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
еще условие : Цель работы. Разработка компьютерной программы для решения
систем линейных уравнений методом Жордана-Гаусса.
Так эту программу Вам вроде бы уже сделали в Вашей предыдущей теме Решение системы методом Гаусса-Жордана / PascalABC.NET?
Streletz вне форума Ответить с цитированием
Старый 15.04.2014, 23:50   #10
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Метод простых итераций вроде как называется. Ищите по этим ключевым словам.
ZX Spectrum-128 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написать програму для решения системы линейных алгебраических уравнений Горянський Павло C++ Builder 11 16.11.2014 01:54
Метод итераций для систем serhan Паскаль, Turbo Pascal, PascalABC.NET 1 29.11.2011 18:20
Метод Холесского (Краута) для решения систем линейных уравнений (скрин с алгоритмом вложен)) Bogdand Помощь студентам 0 24.06.2011 07:54
Курсовой проект на тему решение систем линейных уравнений методом посл.итераций Ericnex Помощь студентам 1 11.05.2010 15:58
метод прогонки решения линейных уравнений Laplas Общие вопросы C/C++ 4 03.10.2009 12:13