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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2011, 17:43   #1
tapah4ik
Пользователь
 
Регистрация: 16.03.2011
Сообщений: 20
По умолчанию Найти решение нелинейных систем

Найти решение следующих систем с точностью Е. sinx-y-1.32=0
cosy-x+0.85=0
Методом простой итерации
Вот мои наработки

Код:
uses crt;
var
d,e,x,y,S1,S2:real;
c,k,p:integer;
ch:char;
function f1(x,y:real):real;
begin
f1:=sin(x)-y-1.32;
end;
function f2(x,y:real):real;
begin
f2:=cos(y)-x+0.85;
end;
procedure fun_S1_1_S2;
begin
S1:= x-f1(x,y)/2+f2(x,y)/8;
S2:= y+f1(S1,y)/2-f2(x,y)/2;
end;
procedure outputofresult;
begin
clrscr;
writeln('Korni uravnenia:');
writeln('x = ', S1:1:5);
writeln('y = ', S2:1:5);
writeln;
writeln('Kolichestwo iteraziy = ',k);
end;
begin
writeln('Vvedite nachalnoe priblegenie:');
write('x = ');
readln(x);
write('y = ');
readln(y);
repeat
fun_S1_1_S2;
d:= abs(S1-x);
if abs(S2-y)>d then d:= abs(s2-y);
outputofresult;
x:= S1; y:= S2;
until d<e;
end.
tapah4ik вне форума Ответить с цитированием
Старый 03.05.2011, 10:32   #2
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

А в чем суть метода?
Особенно смущает вызов
fun_S1_1_S2; где идет присваивание S1:= x-f1(x,y)/2+f2(x,y)/8; а затем сразу берется разность S1-x, т.е. если подставить S1 в развернутом виде получится, что иксы сокращаются и остается только f1(x,y)/2+f2(x,y)/8. С игриком и S2 та же история.
Результаты у тебя выводятся в цикле каждый раз, что не есть правильно.
Плюс ты нигде не задаешь е, и не считаешь количество итераций.
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Старый 03.05.2011, 16:18   #3
tapah4ik
Пользователь
 
Регистрация: 16.03.2011
Сообщений: 20
По умолчанию

Цитата:
Сообщение от KobolD Посмотреть сообщение
А в чем суть метода?
Особенно смущает вызов
fun_S1_1_S2; где идет присваивание S1:= x-f1(x,y)/2+f2(x,y)/8; а затем сразу берется разность S1-x, т.е. если подставить S1 в развернутом виде получится, что иксы сокращаются и остается только f1(x,y)/2+f2(x,y)/8. С игриком и S2 та же история.
Результаты у тебя выводятся в цикле каждый раз, что не есть правильно.
Плюс ты нигде не задаешь е, и не считаешь количество итераций.
Вот код посмотри

Код:
uses crt;
const e=0.001;
var
x,x1,y1,y:real;
function f1(x,y:real):real;
begin
f1:=sin(x)-y-1.32;
end;
function f2(x,y:real):real;
begin
f2:=cos(y)-x+0.85;
end;
procedure fun_S1_1_S2;
begin
x:=cos(y)+0.85;
y:=sin(x)-1.32;
end;
procedure korhy;
begin
clrscr;
writeln('Korni uravnenia:');
writeln('x = ', x:3:5);
writeln('y = ', y:3:5);
readln;
end;
begin
writeln('Vvedite nachalnoe priblegenie:');
write('x1 = ');
readln(x1);
write('y1 = ');
readln(y1);
begin
fun_S1_1_S2;
if abs(x1-x)<=e then
if abs(y1-y)<=e then
end;
korhy;
x:=x1; y:=y1;
end.
там в одном уравнении все получается,а в другом погрешность на 0,06.или это норм, ведь это ни один из самых точных методов?
tapah4ik вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi. Решение системы нелинейных уравнений методами Ньютона и простых итераций. Помогите найти ошибку! Sianessa Помощь студентам 8 13.04.2012 17:32
Алгоритмы решения систем нелинейных уравнений Fataller Помощь студентам 2 18.08.2010 02:52
Решение систем нелинейных уравнений. Си True_girl Помощь студентам 0 03.05.2010 11:46
решение нелинейных уравнений Жанна__90 Помощь студентам 21 22.07.2009 01:30