Форум программистов, компьютерный форум CyberForum.ru
CyberForum.ru - форум программистов и сисадминов > > >
Восстановить пароль Регистрация
 
Prelest)
Форумчанин
2 / 2 / 0
Регистрация: 22.03.2010
Сообщений: 141
01.09.2010, 16:12     Решить систему уравнений методом перебора   #1
Решить систему уравнений методом перебора: y=3-sin(x)
_________________________________________x=2+0.5cos(y-2)
Помогите, пожалуйста. Ничего не смыслю в программировании.
AdAgent
Объявления
01.09.2010, 16:12    Решить систему уравнений методом перебора
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2010, 16:12    Решить систему уравнений методом перебора

Посмотрите здесь:

Delphi решить систему из 2-х линейных уравнений с 2-мя неизвесными

Delphi решить систему нелинейных уравнений методом простых итераций

Delphi решить с помощью перебора

Delphi Решить уравнение любым методом(методом половинного деления,методом простой интеграции,методом касательных)

Delphi как решить систему линейных уравнений

Delphi Как решить систему уравнений

D@rkD@iver
Форумчанин
109 / 109 / 1
Регистрация: 01.10.2008
Сообщений: 870
01.09.2010, 20:20     Решить систему уравнений методом перебора   #2
Prelest),

Код Delphi
1
2
3
4
x:= x0;{начальное значение}
repeat
       x:= x+0.001;
until (3-sin(x))<e;
где e- точность
Prelest)
Форумчанин
2 / 2 / 0
Регистрация: 22.03.2010
Сообщений: 141
01.09.2010, 21:12  [ТС]     Решить систему уравнений методом перебора   #3
Спасибо, D@rkD@iver. Но можно было бы поподробнее, из этого фрагмента программка у меня не выйдет
flatgad
geJI<|>eP
179 / 179 / 8
Регистрация: 22.07.2010
Сообщений: 685
02.09.2010, 00:37     Решить систему уравнений методом перебора   #4
Цитата Сообщение от D@rkD@iver Посмотреть сообщение
Prelest),

Код Delphi
1
2
3
4
x:= x0;{начальное значение}
repeat
       x:= x+0.001;
until (3-sin(x))<e;
где e- точность
не знаю по каким побуждениям вы так решали я тогда понять не могу зачем там нужно уравнение x=2+0.5cos(y-2).
Я думаю что надо так а именно алгоритм :
1. x-2-0.5cos(y-2)=0
2. Вместо у ставим 3-sin(x);
3. Получим x-2-0.5cos(1-sin(x))=0
после чего находим у=3-sin(x) подставивши найденій х;

Итого такая вот программка(пишу без делфи так как на работе):

Код Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var x,x0,y,e,reshenie1:real;
label reshenie;
begin
//так как на условие х и у наложены пределы от -1 до 1 то будем решать таким образом 
x0:=-1;
e:=0,001;
deltax:=0.01;
  while x0<=1 do begin 
    reshenie1:=x0-2-0.5*cos(1-sin(x0));
      if reshenie1<e then 
         begin
          x:=x0;
          goto reshenie;
        end;
     end;
reshenie: y:=3-sin(x);
showmessage('x='+strtofloat(x)+#13+'y='+strtofloat(y));
end;
Вроде что то так могут быть ошибки.
Prelest)
Форумчанин
2 / 2 / 0
Регистрация: 22.03.2010
Сообщений: 141
02.09.2010, 22:02  [ТС]     Решить систему уравнений методом перебора   #5
Спасибо, flatgad. Но ваша программа у меня не пошла. В программировании я разбираюсь плохо и причину найти не смогла. Пожалуйста, допишите программу целиком
AdAgent
Объявления
02.09.2010, 22:02    Решить систему уравнений методом перебора
flatgad
geJI<|>eP
179 / 179 / 8
Регистрация: 22.07.2010
Сообщений: 685
03.09.2010, 09:50     Решить систему уравнений методом перебора   #6
Цитата Сообщение от flatgad Посмотреть сообщение
не знаю по каким побуждениям вы так решали я тогда понять не могу зачем там нужно уравнение x=2+0.5cos(y-2).
Я думаю что надо так а именно алгоритм :
1. x-2-0.5cos(y-2)=0
2. Вместо у ставим 3-sin(x);
3. Получим x-2-0.5cos(1-sin(x))=0
после чего находим у=3-sin(x) подставивши найденій х;

Итого такая вот программка(пишу без делфи так как на работе):

Код Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var x,x0,y,e,reshenie1:real;
label reshenie;
begin
//так как на условие х и у наложены пределы от -1 до 1 то будем решать таким образом 
x0:=-1;
e:=0,001;
deltax:=0.01;
  while x0<=1 do begin 
    reshenie1:=x0-2-0.5*cos(1-sin(x0));
      if reshenie1<e then 
         begin
          x:=x0;
          goto reshenie;
        end;
     end;
reshenie: y:=3-sin(x);
showmessage('x='+strtofloat(x)+#13+'y='+strtofloat(y));
end;
Вроде что то так могут быть ошибки.
немного я тут натупил без делфи решил все таки сделать ету прогу. Нчал с того что узнал приделы х и у:
х=[1.5 - 2.5]
y=[2 - 4]

Вот подправил получилось такое :
Код Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm1.Button1Click(Sender: TObject);
var x0,deltax,reshenie,e,x,y:real;
label exit;
begin
x0:=1.5;
deltax:=0.01;
e:=0.01;
while x0<2.5 do begin
 reshenie:=x0-2-0.5*cos(1-sin(x0));
 Memo1.Lines.Add(FloatToStr(reshenie));
 if  abs(reshenie)<e then begin
   x:=x0;
   y:=3-sin(x);
   goto exit;
   end;
   x0:=x0+deltax;
end;
exit: ShowMessage(FloatToStr(x)+'   '+FloatToStr(y));
end;
reshenie.rar

Но один минус такого решения х и у в косинус и синус надо ставить в радианах иначе не заработает.
ну соответственно точность чем больше точность тем значения х и у будут бешеные.
Vas-e-na
Форумчанин
370 / 367 / 32
Регистрация: 21.06.2010
Сообщений: 1,232
03.09.2010, 11:09     Решить систему уравнений методом перебора   #7
Цитата Сообщение от Prelest) Посмотреть сообщение
методом перебора
люди, метод перебора значит что обе переменные перебираются, вот набросал правильный алгоритм (насколько все правильно написал хз)
Код Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure perebor(sx,ex,sy,ey,e:real); // передаются: начальные значения,
                                       // конечные значения и точность
var z1,z2,y: real;
begin
  while sx<=ex do
  begin
    y:=sy;
    while y<=ey do
    begin
      z1:=3-sin(sx)-y;
      z2:=2+0.5*cos(y-2)-sx;
      if (z1<e)and(z2<e) then
      begin
        // здесь делаете вывод или сохранение полученных значений
        exit;
      end;
      y:=y+e;
    end;
  sx:=sx+e;
  end;
end;
PS
Цитата Сообщение от flatgad Посмотреть сообщение
label reshenie;
Цитата Сообщение от flatgad Посмотреть сообщение
label exit;
flatgad, позор, не пишут уже программы используя goto!!!
PPS ксатати в обоих процедурах у тебя goto можно просто заменить на break, рузультат будет тот же...
flatgad
geJI<|>eP
179 / 179 / 8
Регистрация: 22.07.2010
Сообщений: 685
03.09.2010, 11:19     Решить систему уравнений методом перебора   #8
ну пускай не пишут, я просто не пойму если оно работает почему им не пользоваться да не спорю может это и не удобно но иногда бывает очень полезно когда приходится скакать по программе как черт вот и написал goto. А break если мне память не изменяет то это выход из цыкла. Но всеравно спасибки за критику )
Prelest)
Форумчанин
2 / 2 / 0
Регистрация: 22.03.2010
Сообщений: 141
03.09.2010, 18:53  [ТС]     Решить систему уравнений методом перебора   #9
flatgad, а как вы нашли, что
х=[1.5 - 2.5]
y=[2 - 4]
Разве не
х=[-1 - 1]
y=[1 - 3]?
И программа, если её запустить через делфи, не пашет, выдаёт ошибку почти в самом начале программы. И могли бы вы объяснить, что за цифры программа перебирает при нажатии на кнопку?
flatgad
geJI<|>eP
179 / 179 / 8
Регистрация: 22.07.2010
Сообщений: 685
03.09.2010, 19:17     Решить систему уравнений методом перебора   #10
Цитата Сообщение от Prelest) Посмотреть сообщение
flatgad, а как вы нашли, что
х=[1.5 - 2.5]
y=[2 - 4]
Разве не
х=[-1 - 1]
y=[1 - 3]?
И программа, если её запустить через делфи, не пашет, выдаёт ошибку почти в самом начале программы. И могли бы вы объяснить, что за цифры программа перебирает при нажатии на кнопку?
y=3-sin(x) => здесь sin(x) может быть от -1 до 1 а значит у будет лежать в пределах от 2 до 4
x=2+0.5cos(y-2) => здесь cos(y-2) также не может выходить за интервал от -1 до 1 тогда х лежит в пределах от 1.5 до 2.5
Но если мы имеем дело с комплексными величинами то тогда такое утверждение будет не верно.
Prelest)
Форумчанин
2 / 2 / 0
Регистрация: 22.03.2010
Сообщений: 141
03.09.2010, 22:35  [ТС]     Решить систему уравнений методом перебора   #11
Да, это больше похоже на правду, чем мои вычисления. Спасибо.
А на эту часть сообщения ответьте, пожалуйста, тоже:
Цитата Сообщение от flatgad Посмотреть сообщение
И программа, если её запустить через делфи, не пашет, выдаёт ошибку почти в самом начале программы. И могли бы вы объяснить, что за цифры программа перебирает при нажатии на кнопку?
flatgad
geJI<|>eP
179 / 179 / 8
Регистрация: 22.07.2010
Сообщений: 685
04.09.2010, 00:46     Решить систему уравнений методом перебора   #12
Цитата Сообщение от Prelest) Посмотреть сообщение
Да, это больше похоже на правду, чем мои вычисления. Спасибо.
А на эту часть сообщения ответьте, пожалуйста, тоже:
Что за ошибка по конкретнее!! А по поводу цифр которые бегут при нажатии на кнопку показывают на точность вычисления равенства x0-2-0.5*cos(1-sin(x0))=0 , то есть мы перебором находим тот х при катором равенство будет равнятся 0 при определенной точности у меня эта точность равна 0,001.
Prelest)
Форумчанин
2 / 2 / 0
Регистрация: 22.03.2010
Сообщений: 141
06.09.2010, 13:49  [ТС]     Решить систему уравнений методом перебора   #13
Выводит следующую ошибку: (ошибка во вложенном файле)
Вложения
Тип файла: doc Документ Microsoft Office Word.doc (49.0 Кб, 22 просмотров)
Vas-e-na
Форумчанин
370 / 367 / 32
Регистрация: 21.06.2010
Сообщений: 1,232
06.09.2010, 14:00     Решить систему уравнений методом перебора   #14
Цитата Сообщение от Prelest) Посмотреть сообщение
Выводит следующую ошибку: (ошибка во вложенном файле)

Не по теме:

вы б еще в архив запихнули и дважды заархивировали...


код Unit1 в студию (особенно часть с uses), и тогда может определим где ошибка...
flatgad
geJI<|>eP
179 / 179 / 8
Регистрация: 22.07.2010
Сообщений: 685
06.09.2010, 14:03     Решить систему уравнений методом перебора   #15
Цитата Сообщение от Prelest) Посмотреть сообщение
Выводит следующую ошибку: (ошибка во вложенном файле)
Тм где uses должно быть так лишнее поудаляй !! и всё.
Код Delphi
1
2
3
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
Prelest)
Форумчанин
2 / 2 / 0
Регистрация: 22.03.2010
Сообщений: 141
06.09.2010, 21:10  [ТС]     Решить систему уравнений методом перебора   #16
Да, так заработало. Спасибо

 Комментарий модератора Puporev
Оскорбление и нецензурное выражение.
Yandex
Объявления
06.09.2010, 21:10    Решить систему уравнений методом перебора
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему
Опции темы

Текущее время: 03:59. Часовой пояс GMT +4.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.