А вот про нелинейные - не нашла ни слова...
Задана система:
cos(x+0.5)-y=2
siny-2x=1
Требуется решить систему методом итераций и методом Зейделя. Метод Зейделя нашла только для линейных систем. Про итерации вообще молчу...
Помогите, плз!
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.
|
|||
Jill Решение системы нелинейных уравнений 17.01.2006 20:26
klem4 у нас на форуме такого не припомню, а вот в интерн… 17.01.2006 20:32
Jill klem4, пересмотри ссылки - там везде ЛИНЕЙНЫЕ сист… 17.01.2006 20:37
klem4 Попробую что-нибуь поискать.
зы
Вот мне просто и… 17.01.2006 20:42
Jill оффф: самое интересное, что так оно и есть
учусь … 17.01.2006 20:48
klem4 Вот посмотри, только решение на basic-e
Pешение н… 17.01.2006 20:54
Jill не открывается: "Невозможно найти страницу… 17.01.2006 20:57
volvo Прикрепляю (это - то самое решение, которое нашел … 17.01.2006 20:58
Jill та да, ребятЫ...
если б я еще не в первый раз лист… 17.01.2006 21:03
klem4 Сейчас попробую перевести на паскаль, заняться неч… 17.01.2006 21:38
klem4 Хм вроде перевел с горем пополам, но что-то я не д… 18.01.2006 19:58
Jill :( выдавало ошибку 116 Must be in 8087 mode to co… 20.01.2006 15:25
volvo
выдавало ошибку 116 Must be in 8087 mode to comp… 20.01.2006 15:33
willhunting
Ну, а если система расходится - ничего сделать с… 30.04.2007 0:23
Jill согласна, что можно было просто Real
а вот только… 20.01.2006 15:40
volvo Приведи данные, которые ты вводишь в программу, и … 20.01.2006 15:42![]() ![]() |
|
Текстовая версия | 7.11.2025 4:53 |