Форум программистов, компьютерный форум CyberForum.ru Форум программистов | Компьютерный форум | Форум web-программистов | Форум по электронике и бытовой технике | Форум о софте | Научный форум | Карьера и бизнес
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
D@rkD@iver
Форумчанин
109 / 109 / 1
Регистрация: 01.10.2008
Сообщений: 867
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
178 / 178 / 8
Регистрация: 22.07.2010
Сообщений: 683
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. Но ваша программа у меня не пошла. В программировании я разбираюсь плохо и причину найти не смогла. Пожалуйста, допишите программу целиком
flatgad
geJI<|>eP
178 / 178 / 8
Регистрация: 22.07.2010
Сообщений: 683
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
Форумчанин
347 / 344 / 23
Регистрация: 21.06.2010
Сообщений: 1,139
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
178 / 178 / 8
Регистрация: 22.07.2010
Сообщений: 683
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
178 / 178 / 8
Регистрация: 22.07.2010
Сообщений: 683
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
178 / 178 / 8
Регистрация: 22.07.2010
Сообщений: 683
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
Форумчанин
347 / 344 / 23
Регистрация: 21.06.2010
Сообщений: 1,139
06.09.2010, 14:00
  #14
Цитата Сообщение от Prelest) Посмотреть сообщение
Выводит следующую ошибку: (ошибка во вложенном файле)

Не по теме:

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


код Unit1 в студию (особенно часть с uses), и тогда может определим где ошибка...
flatgad
geJI<|>eP
178 / 178 / 8
Регистрация: 22.07.2010
Сообщений: 683
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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Автор Дата
Решить систему уравнений методом итераций и методом Зейделя
1. Решить систему уравнений методом итераций и методом Зейделя проделав в каждом из методов по четыре итерации 12х1+х2+2х3=13, х1+11х2+х3=11, 2х1+х2+12х3=14. у иксов нижняя степень спасибо.
Численные методы Deman1986 15.10.2013 15:45
Delphi Решить систему уравнений
по заданным коэффициентам и правым частям уравнений системы a1x+b1y=c1 a2x+b2y=c2 найти ее решение в предположении, что определитель системы не равен нулю.
Delphi для начинающих nikita_nstu 23.02.2013 16:22
Delphi Как решить систему уравнений
Здравствуйте! У меня вот к Вам вопрос, как можно сделать такое задание: Нам дана система уравнений sinx+2, при x>0 sin(x+2), при x<=0 у меня как у человека более или менее изучавшего Си мыслей...
Delphi для начинающих Rikk 28.03.2012 17:06
C++ Решить систему уравнений матричным методом.
Решить систему уравнений матричным методом.
С++ для начинающих наташа ч 12.01.2012 12:18
Delphi как решить систему линейных уравнений
как решать систему на бумажке я знаю,но как написать это на паскале.. к примеру есть система 3=2k+b 3=2k+b (те первая точка(2;3) вторая(2;3)) если кто не помнит то линейная функция задается...
Delphi для начинающих spydark91 24.10.2011 20:55
C++ Решить систему уравнений методом Гаусса
Решить систему уравнений методом Гаусса ,вычислить Н=Е-Х*Хт 8,2х1-3,2х2+14,2х3+14,8х4=-8,4 5,6х1-12х2 +15х3 - 6,4х4=4,5 5,7х1+3,6х2-12,4х3-2,3х4=3,3 6,8х1+13,2х2-6,3х3-8,78х4=14,3
С++ для начинающих Milka. 24.12.2010 18:48
Delphi решить систему нелинейных уравнений методом простых итераций
НУжно решить систему нелинейных уравнений методом простых итераций Я тут писал но кода вгоняешь в цикл программа зависает((не знаю изза чего
Delphi для начинающих malir 10.10.2010 01:50
Delphi решить систему из 2-х линейных уравнений с 2-мя неизвесными
программы: 1.решить систему из 2-х линейных уравнений с 2-мя неизвесными 2.решить систему из 2-х линейных уравнений с 2-мя неизвесными, включая вырожденные случаи 3.решить систему из 3-х линейных...
Delphi для начинающих sypperkiller 30.01.2010 20:02
Опции темы

Текущее время: 22:50. Часовой пояс GMT +4.

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.