IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Программа вычисление золотого сечения, Циклы
сообщение
Сообщение #1


Гость






Здраствуйте. Помогите решить след. задачу:
Составить программу вычисления золотого сечения q с точностью Е=0.00001, используя представление q в виде:
Программа строится на вычислении предыдущего z1 и нового значения z2. Итерационный
Код

q=1 + ______1_________
      2 + ____1_______
           2 + ___1___
               2 + ...

цикл заканчивается, если |z2-z1|<=E
Z1 начальное =2+2/5
Z2=2+1/z1
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Ну, по твоему же алгоритму - вот так:
var
  z1, z2: real;
  eps: real;
  done: boolean;

begin
  eps := 0.00001;
  z1 := 2 + 2/5;
  repeat
    z2 := 2 + 1/z1;
    done := (abs(z2 - z1) < eps);
    z1 := z2;
  until done;
  writeln(z1:10:6);
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Огромное спасибо ;)
Я вот только не пойму зачем дана формула q? Она ведь не используется?
У меня вот еще одна проблема. Задача:
Составить таблицу ступенчатой функции
1.5<=a<=3; da=0.3; 6<x<=10; dx=2. Найти wmax и определить a, x, при которых оно определяется. Дана система (так как там много символов я запишу уравнения в другом виде)
Код

     x*sqrt(x-a)
W=   x*sinx(a*x)
                          Exp(x*Ln(a))
    ------------------------------------------------------
      cos(sqr(a*x-1))*cos(sqr(a*x-1))*cos(sqr(a*x-1))

P.S В системе 3 уравнения ^^. Я реализовал программу таким способом:
Код

program sistema;
uses crt;
const
da=0.3;                                      
dx=2;                                                                    
var                                                                        
a,p,w,w1,w2,w3,maximum,max: real;                                          
i,x: word;                                                                  
begin                                                                      
clrscr;                                                                  
a:=1.5;                                                                  
repeat {cikl po a}                                                    
x:=8;                                                                
repeat {cikl po x}                                                  
w1:=x*sqrt(x-a);                                                  
w2:=x*sin(a*x);                                                    
w3:= Exp(x*Ln(a))/cos(sqr(a*x-1))*cos(sqr(a*x-1))*cos(sqr(a*x-1));            
if w1>w2 then max:=w1 else max:=w2;                            
if max>w3 then maximum:=max else maximum:=w3;                  
if maximum>max then                                            
begin                                                          
maximum:=maximum;                                              
writeln('W max = ',maximum:2:1);                                
write(' a = ',a:2:0);                                          
writeln('; x = ',x);                                            
end;                                                            
x:=x+dx;                                                          
until(x>10);                                                        
a:=a+da;                                                            
until(a>3);                                                          
readln;                                                                  
end.    

Вообщем. Wmax я нашел. По условию надо найти "Найти wmax и определить a, x, при которых оно определяется.". Выше указанным моим кодом выдается несколько вариантов:
Код

W max = 356.9
a =  2; x = 10
W max = 2223.8
a =  2; x = 10
W max = 2301.2
a =  3; x = 8
W max = 34499.8
a =  3; x = 10

Где верный вариант только
W max = 34499.8
a = 3; x = 10
Как видно он находит и max и при каких a и x. Но мне мешают остальные три варианта при выводе. Собственно, помогите подправить программу. Возможно, где то условие не верно в цикле.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
Я вот только не пойму зачем дана формула q? Она ведь не используется?

Формула q - это для рекурсивного вычисления "золотого сечения"... Посмотри, как она представлена: там итерацией даже и не пахнет no1.gif

Теперь по поводу второй программы:
Цитата
Дана система (так как там много символов я запишу уравнения в другом виде)

Ты бы как-то объяснил по-другому, т.к. то, что ты написал - полный бред с математической точки зрения... Это значит, что
Цитата
        x*sqrt(x-a)
W=  x*sinx(a*x)
        ...
Одновременно??? Или все-таки так:
Цитата
W = x*sqrt(x-a) , если { 1-е дополнительное условие }
W = x*sinx(a*x) , если { 2-е дополнительное условие }
...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Цитата
Ты бы как-то объяснил по-другому, т.к. то, что ты написал - полный бред с математической точки зрения... Это значит, что

Вообщем одновременно.
Цитата
        x*sqrt(x-a)
W=  x*sinx(a*x)
        ...

После W= идет фигурная скобка и 3 уравнения
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Ну, так что есть предложения? sad.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Так пойдет?
program sistema;
uses crt;
const
  da=0.3;
  dx=2;

function max(a, b: real): real;
begin
  max := a;
  if b > a then max := b;
end;

var
  a, max_a,
  p, w1, w2, w3, maximum, next: real;
  i, x, max_x: word;
begin
  clrscr;
  a:=1.5;

  maximum := -maxint;
  repeat

    x:=8;
    repeat

      w1:=x*sqrt(x-a);
      w2:=x*sin(a*x);
      w3:= Exp(x*Ln(a))/cos(sqr(a*x-1))*cos(sqr(a*x-1))*cos(sqr(a*x-1));

      next := max(max(w1, w2), w3);

      if maximum < next then begin
        maximum := next;
        max_a := a; max_x := x
      end;

      x:=x+dx;

    until(x>10);

    a:=a+da;
  until(a>3);

  writeln('W max = ',maximum:2:1);
  writeln(' a = ', max_a:2:0, '; x = ',max_x);
  readln;
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Да. Огромное спасибо.
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 22.04.2025 17:22
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name