Решение системы нелинейных уравнений, Метод итераций и метод Зейделя... |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Решение системы нелинейных уравнений, Метод итераций и метод Зейделя... |
Jill |
Сообщение
#1
|
Пионер Группа: Пользователи Сообщений: 105 Пол: Женский Реальное имя: Юлия Репутация: 0 |
Помогите, ребята! Про линейные системы информацию нашла.
А вот про нелинейные - не нашла ни слова... Задана система: cos(x+0.5)-y=2 siny-2x=1 Требуется решить систему методом итераций и методом Зейделя. Метод Зейделя нашла только для линейных систем. Про итерации вообще молчу... Помогите, плз! |
Jill |
Сообщение
#2
|
Пионер Группа: Пользователи Сообщений: 105 Пол: Женский Реальное имя: Юлия Репутация: 0 |
ок, volvo, я поняла
погрешность 0,01 приближенные значения вводила 1 и 1 (потом еще -1 и -1 - маткад выдает решение -0.945 и -1.097) |
willhunting |
Сообщение
#3
|
Пионер Группа: Пользователи Сообщений: 52 Пол: Мужской Репутация: 0 |
Если вдруг кто-то знает метод итераций, то подскажите, а то у меня не получается.
Один из главных вопросов который меня волнует--это приведение системы линейных уравнений к виду удобному для итераций. Т.е. если есть система АХ=В, то её надо привести к виду Х=GX+F. |
willhunting |
Сообщение
#4
|
|||
Пионер Группа: Пользователи Сообщений: 52 Пол: Мужской Репутация: 0 |
Я написал прогу, но она не работает.
Вот алгоритм: АХ=В- исходная система, Х=GX+F- эквивалентная ей система, где G=E-(A^t*A)/нормуA^t*A . F=A^t*B/норуA^t*A нормаA^t*A=максимальная сумма элементов строки. A^t- транспонированая матрица X1=GX0+F {X0=F} X1-X0—невязка(точность) X2=GX1+F X2-X1 X3=GX2+F X3-X2 И т.д. Код program metod_iteracii; Uses CRT; type matrica=array [1..4,1..4] of extended; matrica1=array [1..4,1..1] of real; var R,G,G1,w,a,at,ata,e:matrica; t,i,j,m,n,l,k:byte; x,d,raz,c,b,b1,f,f1:matrica1; max,max1,s:real; procedure udo;{privedenie sistemi k vidu udobnomu dli iteracii} begin for i:=1 to n do for j:=1 to m do begin s:=0; at[j,i]:=s+a[i,j]; {tranponirue matricu} end; writeln('matrica a '); for i:=1 to n do begin for j:=1 to m do write(a[i,j]:2:2,' '); readln; end; writeln('matrica яtranponirovanay'); for i:=1 to n do begin for j:=1 to m do write(at[i,j]:2:2,' '); readln; end; {------------------------------} for i:=1 to n do for j:=1 to l do begin s:=0; for k:=1 to m do s:=s+a[i,k]*at[k,j]; {matrica=A*A tranponirovanai} ata[i,j]:=s; end; writeln('matrica at*a '); for i:=1 to n do begin for j:=1 to m do write(ata[i,j]:2:2,' '); readln; end; {-----------------------} for i:=1 to n do begin s:=0; begin for j:=1 to m do s:=s+abs(ata[i,j]); { vichislenie normirovanoi matrici} w[i,1]:=s; end; end; {--------------------------} { writeln('normirovanay matrica '); for i:=1 to n do begin write(w[i,1]:2:2,' '); writeln; end;} {-----------------------} max:=0; for i:=1 to n do begin for j:=1 to m do if w[i,j]>max then max:=w[i,j]; end; writeln('norma=', max:2:4); {-----------------------------} for i:=1 to n do begin for j:=1 to m do G[i,j]:=e[i,j]-(1/max)*ata[i,j]; {vichislenie matrici G} end; {-----------------} writeln('G '); for i:=1 to n do begin for j:=1 to m do write(G[i,j]:2:5,' '); readln; end; {---------------------} for i:=1 to n do begin s:=0; for k:=1 to m do s:=s+at[i,k]*b[k,1]*(1/max); {vichislenie matrico F} f[i,1]:=s; end; writeln('matrica f '); for i:=1 to n do begin write(f[i,1]:2:5,' '); writeln; end; f1:=f; end; {-------------------------} {----------------------} procedure iterac(f:matrica1); begin for i:=1 to n do for j:=1 to l do begin s:=0; for k:=1 to m do s:=s+G[i,k]*f[k,1];{G*X} c[i,j]:=s; end; {------------------------------------------------------} writeln ('matrica c=G*f'); for i:=1 to n do write(c[i,1]:2:2,' '); writeln; {-------------------------------------------------} begin for i:=1 to m do for j:=1 to n do x[i,j]:=c[i,j]+f1[i,j]; end; writeln('matrica x'); for i:=1 to l do write('x[',i,'1]=', x[i,1]:2:4,' '); writeln; {---------------------------------------------------} begin for i:=1 to m do for j:=1 to n do raz[i,j]:=(x[i,j])-(f[i,j]); {nevyzca} end; writeln('matrica raz'); for i:=1 to l do write( raz[i,1]:2:4,' '); writeln; {--------------------------------------} begin max:=abs(raz[1,1]); {nahodim max nevyzcu} for i:=1 to m do if abs(raz[i,1])>max then max:=abs(raz[i,1]); end; write('max=',max:2:4,' ' ); readln; begin if Abs(max)>0.00001 then begin f[i,j]:=x[i,j]; iterac(x); end else begin writeln('matrica x '); for i:=1 to l do write(x[i,1]:2:4,' '); writeln; end; end; end; procedure proverca; begin for i:=1 to n do begin R[i,m]:=A[i,1]*x[1,1]+A[i,2]*x[2,1]+A[i,3]*x[3,1]+A[i,4]*x[4,1]; writeln('b[',i,m,']=',R[i,m]:2:2); end; end; BEGIN n:=4;l:=4; m:=4; a[1,1]:=3.51; a[1,2]:=0.17; a[1,3]:=3.68; a[1,4]:=-0.28; a[2,1]:=4.52; a[2,2]:=2.11; a[2,3]:=6.63; a[2,4]:=-0.12; a[3,1]:=-2.11; a[3,2]:=3.17; a[3,3]:=1.06; a[3,4]:=-0.15; a[4,1]:=3.17; a[4,2]:=1.81; a[4,3]:=-3.17; a[4,4]:=0.22; e[1,1]:=1; e[1,2]:=0; e[1,3]:=0; e[1,4]:=0; e[2,1]:=0; e[2,2]:=1; e[2,3]:=0; e[2,4]:=0; e[3,1]:=0; e[3,2]:=0; e[3,3]:=1; e[3,4]:=0; e[4,1]:=0; e[4,2]:=0; e[4,3]:=0; e[4,4]:=1; b[1,1]:=0.75; b[2,1]:=1.11; b[3,1]:=0.21; b[4,1]:=0.05; { a[1,1]:=0.63; a[1,2]:=1.00; a[1,3]:=0.71; a[1,4]:=0.34; a[2,1]:=1.17; a[2,2]:=0.18; a[2,3]:=0.65; a[2,4]:=0.71; a[3,1]:=1.80; a[3,2]:=1.18; a[3,3]:=1.36; a[3,4]:=-2.35; a[4,1]:=3.58; a[4,2]:=0.21; a[4,3]:=3.45; a[4,4]:=-1.18; b[1,1]:=2.08; b[2,1]:=0.17; b[3,1]:=1.28; b[4,1]:=0.05;} udo; iterac(f); proverca; END.
|
|||
Текстовая версия | 23.04.2024 16:03 |