21

Re: оператори циклу

Odin88 написав:

Так,ніби,вже все правильно :

const n=8; x=0.6;
var  s,a: real; fact:longint;
i:integer;
begin
s:=1;  fact:=1;
for i:=1 to n do
begin
fact:=fact*i;
a:=((sqr(i)+1)/fact)*(exp(i*ln(x/2)));
s:=s+a;
end;
writeln('s=',s:4:2);
readln;
end.

велике дякую вам за допомогу!!!  а з кодом уже розібрався з попередніх повідомлень) дякую!

22

Re: оператори циклу

quez написав:
lichmanmaksim написав:
quez написав:

Або просто додати в кінці одиничку.

Проблема не лише в цьому. Вольфрам нарахував 1.88, а код 2.01. Це ж не може бути похибкою округлень?

хочете сказати що відповідь  1.88 ? а то я зовсім заплутався..

Якщо тут https://www.wolframalpha.com/input/?i=s … n%3D0+to+8 правильна формула, то так.

а можете написати таку ж формулу тільки для 2-го завдання? а там спробую самим розібратися в написанні програми

23 Востаннє редагувалося Odin88 (02.05.2014 14:36:49)

Re: оператори циклу

lichmanmaksim написав:
quez написав:
lichmanmaksim написав:

хочете сказати що відповідь  1.88 ? а то я зовсім заплутався..

Якщо тут https://www.wolframalpha.com/input/?i=s … n%3D0+to+8 правильна формула, то так.

а можете написати таку ж формулу тільки для 2-го завдання? а там спробую самим розібратися в написанні програми

http://tinyurl.com/qz9m6qn

Подякували: lichmanmaksim1

24

Re: оператори циклу

Odin88 написав:
lichmanmaksim написав:
quez написав:

Якщо тут https://www.wolframalpha.com/input/?i=s … n%3D0+to+8 правильна формула, то так.

а можете написати таку ж формулу тільки для 2-го завдання? а там спробую самим розібратися в написанні програми

http://tinyurl.com/qz9m6qn

ну для вас це смішно і легко для мене - ні.

25 Востаннє редагувалося Odin88 (02.05.2014 15:19:32)

Re: оператори циклу

lichmanmaksim написав:
Odin88 написав:
lichmanmaksim написав:

а можете написати таку ж формулу тільки для 2-го завдання? а там спробую самим розібратися в написанні програми

http://tinyurl.com/qz9m6qn

ну для вас це смішно і легко для мене - ні.

Ви це про що?
Формулу,що Ви просили я скинув,правда для першого завдання.Вам потрібно лише поміняти значення x яке задане в умові,і згодом протабулювати вашу суму по x.

Подякували: lichmanmaksim1

26 Востаннє редагувалося Odin88 (02.05.2014 15:10:22)

Re: оператори циклу

На псевдокоді це приблизно виглядатиме так :
[code=pseudocode]
поки (a по модулю більше eps) do
begin
    обчислюємо факторіал;
    обчислюємо значення a за формулою a:=((sqr(i)+1)/fact)*(exp(i*ln(x/2)));
    додаємо значення a до нашої суми s;
    збільшуємо i на одиницю;       
end;
[/code]

Подякували: lichmanmaksim1

27 Востаннє редагувалося koala (02.05.2014 18:57:31)

Re: оператори циклу

(exp(i*ln(x/2)))

- це в новіших компіляторах паскалю позначається

power( x/2, i )

В старих бібліотеках такої функції не було, тому доводилося користуватися тотожністю
a^b ≡ e^ln( a^b ) ≡ e^( b * ln( a ) )
(знаком ^ тут я позначаю піднесення до степеня).

Але в конкретно цьому прикладі не має сенсу використовувати ці функції, можна скористатися тим самим прийомом, що й з факторіалом (тобто акумулятором):

sum := 1;
fact := 1;
stepin := 1;
for i:=1 to n do
begin
  fact := fact * i;
  stepin := stepin * x / 2;
  sum := sum + ( ( sqr( i ) + 1 ) / fact ) * stepin;
end;
Або, з урахуванням того, що fact і stepin завжди множаться (тобто діляться...)
sum := 1;
mult := 1;
for i:=1 to n do
begin
  mult := mult * x / (2 * i);
  sum := sum + ( sqr( i ) + 1 ) * mult;
end;

А завдання 2 - те саме в циклі по x.

Подякували: lichmanmaksim1