1 Востаннє редагувалося Tovmach95 (07.10.2015 22:46:08)

Тема: Рекурентне співвідношення

Мова програмування Turbo Pascal 7.0
Умова на фото.
При ствренні програми   використати циклічні обчислення з використанням функцій ,
та  захист від «зациклювання».
Я написав програму, але результат незкдовільний, думаю труднощі виникли з введенням значення точності. Порадьте будь-ласка де і що виправити.

Program korin;

Var   a, xn1, xn,  p, e : real;
        n:integer;
Begin
    Write(' a>=0 a=:');
    Writeln(' Vvedit A :');
    Readln(a);
    Writeln(' Vvedit P :');
    Readln(p);
 Begin
  xn:=1;
  n:=0;
  Repeat
      n:=n+1;
      xn1:=xn;
      xn:=1/p*((p-1)*xn+a/exp(p-1*ln(xn)));
      until abs(xn1-xn) < 0.000001;
End;
     Writeln('xn=');
     Writeln('x=', sqrt(a));
     Readln
End.
Post's attachments

Новый рисунок (1).bmp 718.18 kb, 433 downloads since 2015-10-07 

2 Востаннє редагувалося koala (07.10.2015 23:01:48)

Re: Рекурентне співвідношення

Ви забули, по-перше, одні дужки в формулі, а по-друге, вивести результат :) Ну і корінь p-го ступеня - це те саме, що піднести в ступінь 1/p, а не sqrt. І очевидно, що малося на увазі обчислити xp-1 без функції exp.
На майбутнє - пишіть конкретно, що вас не задовольняє в програмі, ми не телепати.

3

Re: Рекурентне співвідношення

Програма вже справна,
але при її ствренні  мені потрібно  використати функції, підкажіть будь-ласка що і як записати у вигляді функції.

Program korin;

 Uses Crt;
Var    xn1, xn :real;
        a,p:integer;
Begin
 CLRSCR;
    Writeln(' Vvedit A :');
    Readln(a);
    Writeln(' Vvedit P :');
    Readln(p);
  xn1:=a;
  Repeat
      xn:=xn1;
      xn1:=1/p*((p-1)*xn+a/exp(p-1*ln(xn)));
      until abs(xn1-xn) < 0.000001;

     Writeln('xn1=',xn1);
     Readln
End.


[img](Якщо  потрібно, фото завдання у попередньму повідомленні).[/img]

4

Re: Рекурентне співвідношення

Уточнення:(функції користувача).

5

Re: Рекурентне співвідношення

І що ж не вдається?

6 Востаннє редагувалося Tovmach95 (11.10.2015 10:40:08)

Re: Рекурентне співвідношення

Моя мета подати форму  xn1:=1/p*((p-1)*xn+a/exp(p-1*ln(xn))); у вигляді xn1:=1/p*Viraz/Pow_n.

Function Viraz  - (маю наувазі частину формули (p-1)*xn+a).

Function Pow_n - (функція піднесення до степеня, ( exp(p-1*ln(xn)

Починаю складати функцію піднесення до степеня.

Function Pow_n(x:real, n:integer):real;
Var
i:integer; {допоміжні змінні функції}
P :real;
begin

Що робити далі і як правельно записати цю та іншу функцію, нерозумію.