Форум программистов и сисадминов CyberForum.ru
Вернуться   Форум программистов и сисадминов CyberForum.ru > Форум Форум программистов > Форум Delphi > Форум Delphi для начинающих
Восстановить пароль Регистрация

Ответ Создать новую тему
 
Старый 01.09.2010, 16:12   #1
Prelest)
Форумчанин
 
Регистрация: 22.03.2010
Сообщений: 141
Репутация: 2 (2)
Решить систему уравнений методом перебора / Delphi для начинающих

Решить систему уравнений методом перебора: y=3-sin(x)
_________________________________________x=2+0.5cos(y-2)
Помогите, пожалуйста. Ничего не смыслю в программировании.
Старый 01.09.2010, 20:20   #2
D@rkD@iver
Форумчанин
 
Регистрация: 01.10.2008
Сообщений: 853
Репутация: 108 (108)
Лучшие ответы: 1
Решить систему уравнений методом перебора

Prelest),

Код Delphi
1
2
3
4
x:= x0;{начальное значение}
repeat
       x:= x+0.001;
until (3-sin(x))<e;
где e- точность
Другие темы раздела Форум начинающих программистов Delphi. Вопросы начинающих по Delphi. Помощь студентам и школьникам в решении задач.
Delphi Найти кратчайшее расстояние между двумя вершинами в графе
Найти кратчайшее расстояние между двумя вершинами в графе. Найти все возможные пути между этими двумя вершинами в графе не пересекающиеся по рёбрам и вершинам. Очень нужна программа в течение этой недели. Помогите, пожалуйста.
Delphi Irc
нужна информация про работу с IRC, какой компонент лучше использовать, где его взять. PS IdHttp не хочет коннектиться к серверам.
Старый 01.09.2010, 21:12  [ТС]   #3
Prelest)
Форумчанин
 
Регистрация: 22.03.2010
Сообщений: 141
Репутация: 2 (2)
Решить систему уравнений методом перебора

Спасибо, D@rkD@iver. Но можно было бы поподробнее, из этого фрагмента программка у меня не выйдет
Старый 02.09.2010, 00:37   #4
flatgad
geJI<|>eP
 
Аватар для flatgad
 
Регистрация: 22.07.2010
Сообщений: 683
Репутация: 177 (177)
Лучшие ответы: 8
Решить систему уравнений методом перебора

Цитата Сообщение от 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;
Вроде что то так могут быть ошибки.
Старый 02.09.2010, 00:37
Google
Объявления
Старый 02.09.2010, 22:02  [ТС]   #5
Prelest)
Форумчанин
 
Регистрация: 22.03.2010
Сообщений: 141
Репутация: 2 (2)
Решить систему уравнений методом перебора

Спасибо, flatgad. Но ваша программа у меня не пошла. В программировании я разбираюсь плохо и причину найти не смогла. Пожалуйста, допишите программу целиком
Старый 03.09.2010, 09:50   #6
flatgad
geJI<|>eP
 
Аватар для flatgad
 
Регистрация: 22.07.2010
Сообщений: 683
Репутация: 177 (177)
Лучшие ответы: 8
Решить систему уравнений методом перебора

Цитата Сообщение от 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

Но один минус такого решения х и у в косинус и синус надо ставить в радианах иначе не заработает.
ну соответственно точность чем больше точность тем значения х и у будут бешеные.
Старый 03.09.2010, 11:09   #7
Vas-e-na
Форумчанин
 
Аватар для Vas-e-na
 
Регистрация: 21.06.2010
Сообщений: 896
Репутация: 283 (280)
Лучшие ответы: 1
Решить систему уравнений методом перебора

Цитата Сообщение от 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, рузультат будет тот же...
Старый 03.09.2010, 11:19   #8
flatgad
geJI<|>eP
 
Аватар для flatgad
 
Регистрация: 22.07.2010
Сообщений: 683
Репутация: 177 (177)
Лучшие ответы: 8
Решить систему уравнений методом перебора

ну пускай не пишут, я просто не пойму если оно работает почему им не пользоваться да не спорю может это и не удобно но иногда бывает очень полезно когда приходится скакать по программе как черт вот и написал goto. А break если мне память не изменяет то это выход из цыкла. Но всеравно спасибки за критику )
Старый 03.09.2010, 18:53  [ТС]   #9
Prelest)
Форумчанин
 
Регистрация: 22.03.2010
Сообщений: 141
Репутация: 2 (2)
Решить систему уравнений методом перебора

flatgad, а как вы нашли, что
х=[1.5 - 2.5]
y=[2 - 4]
Разве не
х=[-1 - 1]
y=[1 - 3]?
И программа, если её запустить через делфи, не пашет, выдаёт ошибку почти в самом начале программы. И могли бы вы объяснить, что за цифры программа перебирает при нажатии на кнопку?
Старый 03.09.2010, 19:17   #10
flatgad
geJI<|>eP
 
Аватар для flatgad
 
Регистрация: 22.07.2010
Сообщений: 683
Репутация: 177 (177)
Лучшие ответы: 8
Решить систему уравнений методом перебора / Delphi для начинающих

Цитата Сообщение от 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
Но если мы имеем дело с комплексными величинами то тогда такое утверждение будет не верно.
Старый 03.09.2010, 19:17
Yandex
Объявления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Автор
С++ для начинающих Решить систему уравнений матричным методом.
Решить систему уравнений матричным методом.
наташа ч
Численные методы решить систему линейных уравнений методом Ньютона
Скажите можно решить систему линейных уравнений методом Ньютона? Мне задали задание к курсовой работе по информатике, а я никак немогу найти КАК ЖЕ РЕШИТЬ ЭТО МЕТОДОМ НЬЮТОНА? Гугл выводит на решение всяких привсяких заданий методом Ньютона, но систем линейных уравнений подобно моей нету. Кто...
reyn90
С++ для начинающих Решить систему уравнений методом Крамера
Ненавижу математику!!! Нужно написать программу на чистом C для решения системы уравнений методом Крамера. Помню там нужно подставлять правый столбец (числа которые после знака равно) вместо каждого, находить определители и делить их на основной определитель, но его я умею искать только для...
AlexSun
С++ для начинающих Решить систему уравнений методом подстановки
Решить систему уравнений методом подстановки ax+bx=c dx+ly=f Переменные это a,b,c,d,l.
ImmortalGlory
С++ для начинающих Решить систему уравнений методом Гаусса
Решить систему уравнений методом Гаусса ,вычислить Н=Е-Х*Хт 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.
Опции темы

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

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