Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Балтийский Государственный
Технический Университет
«ВоенМех»
имени Д.Ф. Устинова
Отчет
к лабораторной работе по информатике №3
На тему
Использование циклов с предусловием
в языке Pascal
Отчет выполнил студент
Факультета «И»
Суханов Александр
Группа И433
Санкт-Петербург 2003
Лабораторная работа по информатике №3
Тема: Использование циклов с предусловием в языке Pascal
Цель: Ознакомиться с понятием цикла и научиться использовать циклы с предусловием в языке Pascal.
Исходная задача: Вычислить сумму ряда F(x) = (x-1)/x + … + (x-1)K/(k*xK). Вычисления продолжать до тех пор, пока очередной член не станет меньшим или равным e.
Пояснения к используемым данным:
X – исходное число
ZICL – обозначает номер элемента ряда
S – сумма ряда
CHLEN – вспомогательная переменная
Листинг программы, решающей данную задачу:
program lab3;
const eps = 0.0000001;
var x,chlen,s: real;
zicl: integer;
begin
write('введите X:'); readln(x);
if x<1 then
begin
writeln('Ошибка ввода');
halt;
end;
chlen:=(x-1)/x;
zicl:=1; s:=0;
while (abs(chlen)/zicl>eps) do
begin
s:=s+chlen/zicl;
inc(zicl);
chlen:=chlen*(x-1)/x;
end;
writeln('My log= ',s:15:9);
writeln('ln(x) = ',ln(x):15:9);
writeln('Погрешность: ', abs(s-ln(x)):10:9);
writeln('Точность: ',eps:10:9);
end.
Тестовые данные к программе:
X=2.71
My log = 0.996948404
ln(x) = 0.996948635
Погрешность 0.000000231
Точность 0.000000100
X=8
My log = 2.079440874
ln(x) = 2.079441542
Погрешность 0.000000668
Точность 0.000000100
X=12
My log = 2.484905603
ln(x) = 2.484906650
Погрешность 0.000001047
Точность 0.000000100
X=10000000
My log = 10.971134095
ln(x) = 16.118095651
Погрешность 5.146961556
Точность 0.000000100
Вывод: Написанная программа вычисляет сумму ряда. Эта сумма ряда является значением натурального логарифма числа x, поэтому мы сравниваем в программе полученный результат с ln(x). Погрешность при больших X появляется из-за того, что стандартная функция вычисляет натуральный логарифм немного по другой схеме: в памяти ЭВМ заложена таблица значений некоторых натуральных логарифмов (вернее экспонент, которые легко инвертировать в логарифмы), а ln(x) вычисляется следующим образом: берется X и определяется, к какому заложенному в память X0 он находится ближе. Найденный X0 сохраняется. Далее вычисление суммы ряда идет по следующей формуле: S= ln(X0) + (X-X0)/X + … + (X-X0)K/(K*XK). Причем ln(X0) – заданное число в таблице экспонент. Доказать вышесказанное можно путем замены единицы в формуле на некоторое число, допустим 10e7, а в конце цикла прибавлять к S ln(10e7):
-------------------chlen:=(x-10e7)/x;
zicl:=1; s:=0;
while (abs(chlen)/zicl>eps) do
begin
s:=s+chlen/zicl;
inc(zicl);
chlen:=chlen*(x-10e7)/x;
end;
s:=s+ln(10e7);
-------------------Тест этого алгоритма для X0=10e7:
X=10e8
My log = 20.723264960
ln(x) = 20.723265837
Погрешность 0.000000877
Точность 0.000000100
Вывод 2: В результате мы получили, что точность и погрешность имеют один порядок. Также погрешность можно уменьшить путем уменьшения eps, в принципе, мы можем сделать его равным нулю из-за того, что память компьютера конечна, то есть она не может хранить бесконечно малые числа, всегда существует предел. X может быть только положительным так как при X<0 этот ряд не будет сходится, то есть каждый член будет по модулю больше предыдущего.
Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.