![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Jill |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 105 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Помогите, ребята! Про линейные системы информацию нашла.
А вот про нелинейные - не нашла ни слова... ![]() Задана система: cos(x+0.5)-y=2 siny-2x=1 Требуется решить систему методом итераций и методом Зейделя. Метод Зейделя нашла только для линейных систем. Про итерации вообще молчу... Помогите, плз! |
klem4 |
![]()
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
у нас на форуме такого не припомню, а вот в интернете полно, например вот или вот
и у нас нашел, тут : http://forum.pascalnet.ru/index.php?s=&sh...indpost&p=34479 Сообщение отредактировано: klem4 - 17.01.2006 16:34 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Jill |
![]()
Сообщение
#3
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 105 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
klem4, пересмотри ссылки - там везде ЛИНЕЙНЫЕ системы
![]() ...или разницы нет? и у нас и в инете я искала, и все эти исходники мне попадались но мне необходимы НЕЛИНЕЙНЫЕ |
klem4 |
![]()
Сообщение
#4
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Попробую что-нибуь поискать.
зы Вот мне просто интересно, извиняюсь за оффтоп конечено, ты такая уже не первая, приходят люди и говорят : Привет, мне надо решить уровнение методом Васи Пупкина, у вас на сайте его нету что мне делать ? А перед тем как выдать задание, вам в течении семестра не давали этот алгоритм ? Просто сказали вот тебе начальные условия, вот название метода ищи где хочешь ? -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Jill |
![]()
Сообщение
#5
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 105 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
оффф: самое интересное, что так оно и есть
учусь на заочном, препод дает конспект / одна из тем в конспекте - решение систем линейных уравнений / про нелинейные ни слова / а задание - сам видишь ![]() кроме того, конспектов зачастую оказывается ох как недостаточно, а времени преподам дается слишком мало - они и десятой части не вычитывают... вот так |
klem4 |
![]()
Сообщение
#6
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Вот посмотри, только решение на basic-e
Pешение нелинейной системы уpавнений методом Зейделя ps сочувствую ... Сообщение отредактировано: klem4 - 17.01.2006 16:54 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Jill |
![]()
Сообщение
#7
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 105 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
не открывается: "Невозможно найти страницу"
|
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Прикрепляю (это - то самое решение, которое нашел klem4):
Прикрепленные файлы ![]() |
Jill |
![]()
Сообщение
#9
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 105 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
та да, ребятЫ...
если б я еще не в первый раз листинг на бейсике видела.... ![]() |
klem4 |
![]()
Сообщение
#10
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Сейчас попробую перевести на паскаль, заняться нечем .. но мне почему-то кажется что это не совсем то, что тебе нужно.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
klem4 |
![]()
Сообщение
#11
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Хм вроде перевел с горем пополам, но что-то я не догоняю, программ практически при любых данных выдает один и тот-же результат, хотя возможно где-то я и ошибся :
Добавлено : гыгы надо просто ф-ю поменять ;) uses crt; Сообщение отредактировано: volvo - 5.11.2006 21:27 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Jill |
![]()
Сообщение
#12
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 105 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
![]() добавила {N+}, тип данных изменила на real я так поняла, что сами функции надо забивать так: Код f[1] := cos(x[1]+0.5)-x[2]-2; {перекидываю из правой части числа 2} f[2] := sin(x[2])-2*x[1]-1; {и 1} в результате работает, но: - считает неправильно - выдает большие числа - ругается, что система расходится... ![]() жах |
volvo |
![]()
Сообщение
#13
|
Гость ![]() |
|
Jill |
![]()
Сообщение
#14
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 105 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
согласна, что можно было просто Real
а вот только с {$N+} ошибка сохраняется... volvo, получается, что система нерешаемая? вот, блин ![]() хотя маткад решает... |
volvo |
![]()
Сообщение
#15
|
Гость ![]() |
Приведи данные, которые ты вводишь в программу, и у тебя возникает ошибка... Только не надо говорить "любые" - меня интересует, что ТЫ вводишь...
|
Jill |
![]()
Сообщение
#16
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 105 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
ок, volvo, я поняла
![]() погрешность 0,01 приближенные значения вводила 1 и 1 (потом еще -1 и -1 - маткад выдает решение -0.945 и -1.097) |
willhunting |
![]()
Сообщение
#17
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 52 Пол: Мужской Репутация: ![]() ![]() ![]() |
Если вдруг кто-то знает метод итераций, то подскажите, а то у меня не получается.
Один из главных вопросов который меня волнует--это приведение системы линейных уравнений к виду удобному для итераций. Т.е. если есть система АХ=В, то её надо привести к виду Х=GX+F. |
willhunting |
![]()
Сообщение
#18
|
|||
Пионер ![]() ![]() Группа: Пользователи Сообщений: 52 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я написал прогу, но она не работает.
Вот алгоритм: АХ=В- исходная система, Х=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.
|
|||
willhunting |
![]()
Сообщение
#19
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 52 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 15:35 |