Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Формулировка задания:
Вычислить ax = e x*ln(a) = 1 + x * ln(a) / 1! + (x * ln(a))2 / 2! + (x * ln(a))3 / 3!… для заданного диапазона изменения аргумента x. Значение а и точность вычисления вводятся с клавиатуры. Результаты представить в виде таблицы:
аргумент, сумма, количество слагаемых, контрольное значение.
Program SummaRiada;
{Вычислить a^x=e^(x*ln(a))=1+x*ln(a)/1!+(x*ln(a))^2/2!+...
Результаты представить в виде таблицы:
аргумент, сумма, кол. слагаемых, контрольное значение.}
USES Crt; {подключение модуля}
{Процедура вывода пользовательского окна на экран}
PROCEDURE Okno(xv,yv,xn,yn,colfona,colbukv:BYTE;zag:STRING);
VAR
i:INTEGER;
BEGIN
Window(xv,yv,xn,yn); {Установка размеров окна}
TextColor(colbukv); {Установка цвета шрифта}
TextBackGround(colfona); {Установка цвета фона}
ClrScr; {переводит курсор в левый верхний угол окна и
очищает окно, заливая его цветом установленного фона}
GoToXY((xn-xv) DIV 2 - Length(zag) DIV 2,1);
Write(zag);
Window(xv+1,yv+1,xn-1,yn);
END;
Var
eps:Real; {точность вычисления}
a:Real; {значение основания}
x,xn,xk:Real; {текущее, начальное и конечное значение степени}
h:Real; {шаг изменения степени}
rez:Real; {результат вычисления}
pr:Real; {значение текущего слагаемого}
n:Longint; {текущий номер слагаемого}
Begin
TextBackGround(BLACK);
TextColor(15);
clrscr;
{Окно формулировки задания. Белый текст на синем фоне.}
Okno(8,20,72,25,BLUE,15,'Формулировка задания');
WriteLn('Вычисление предела произведения (1+1/a(1))*..*(1+1/a(n))');
WriteLn('с заданной точностью 0 <eps<= 0.1');
WriteLn('Значение a(1)=0.5; a(n)=n*(a(n-1)+0.5)');
Write('Вычисления закончить при (1/a(n))<eps');
{Окно ввода. Белый текст на зеленом фоне.}
Okno(9,2,71,8,2,15,'Ввод');
Write('Введите значение точности вычисления: ');
ReadLn(eps);
If (eps>0.1)Or(eps<=0)
Then Begin
{Окно вывода сообщения об ошибке. Красный текст на зеленом фоне.}
Okno(10,11,70,13,GREEN,RED,'Сообщение об ошибке');
Write('Ошибка ввода! Значение eps должно быть <=0.1 и >0');
ReadLn;
Exit;
End;
Write('Введите значение числа a: ');
ReadLn(a);
Write('Введите начальное значение степени: ');
ReadLn(xn);
Write('Введите конечное значение степени: ');
ReadLn(xk);
If xk<xn
Then Begin
{Окно вывода сообщения об ошибке. Красный текст на зеленом фоне.}
Okno(10,11,70,13,GREEN,RED,'Сообщение об ошибке');
Write('Ошибка ввода! xk д.б. >=xn');
ReadLn;
Exit;
End;
Write('Введите значение шага изменения степени: ');
ReadLn(h);
If (h<=0)
Then Begin
{Окно вывода сообщения об ошибке. Красный текст на зеленом фоне.}
Okno(10,11,70,13,GREEN,RED,'Сообщение об ошибке');
Write('Ошибка ввода! Значение должно быть >0.');
ReadLn;
Exit;
End;
{Окно вывода результата. Белый текст на краснном фоне.}
Okno(10,10,70,18,4,15,'Вывод');
WriteLn('Степень | Сумма |Кол.слаг.|Контрольное значение');
x:=xn;
Repeat
rez:=0;
n:=0;
pr:=1;
While abs(pr)>eps Do
Begin
rez:=rez+pr;
Inc(n);
pr:=pr*x*ln(a)/n;
End;
WriteLn(x:6:2,rez:15:4,n:6,exp(x*ln(a)):17:4);
x:=x+h;
Until x>xk;
End.
Дата публикования: 2014-11-03; Прочитано: 223 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!