Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2018, 17:50   #1
Lapiss
Новичок
Джуниор
 
Регистрация: 29.01.2018
Сообщений: 1
По умолчанию Использования циклов

Приведите примеры использования циклов для следующей задачи: вывести таблицу значений функции y=ln(1+x) для x, изменяющихся в интервале от x1 до x2 с шагом h формула в картинке
Код:
var a,b,h,y,x:real;
begin
  writeln('a, b, h');readln(a,b,h);
  x:=a;
  while x<b do
    begin
      if x-1<1 then writeln(x:0:6,' undefined')
      else writeln(x:0:6,ln(1+x):10:6);
      x:=x+h;
    end;
  readln;
end.
Изображения
Тип файла: png 2.png (2.8 Кб, 101 просмотров)
Lapiss вне форума Ответить с цитированием
Старый 30.01.2018, 12:23   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Я так понял, требуется вывести табуляцию функции, не используя стандартную функцию Ln, иначе зачем приводится ее разложение в ряд? Если так, то требуется задание точности вычисления ряда, и прожка будет немножно длиннее; а если нет - то это задачка для моего кота Мурзика между двумя глотками сметаны.
В первом случае придется во внутреннем цикле этот ряд хошь-не-хошь вычислять.
Тогда оно выглядело бы приблизно так (точность по умолчанию принял 0,001) :
Код:
program N2 ;
var a,b,h,x:real;

function Ln_x(arg,eps:real):real ;
var x1,d,y,xp,ix: real ;
begin
  d := 1 ;
  x1 := -arg ;
  ix := 2 ;
  xp := arg ;
  y := arg ;
  while Abs(d)>eps do
   begin
    xp := xp*x1 ;
    d := xp / ix ;
    ix := ix + 1.0 ;
    y := y + d ;
   end ;
  Ln_x := y 
end ;

begin
  writeln('a, b, h');readln(a,b,h);
  x:=a;
  while x<b do
    begin
      if x<-0.999 then writeln(x:0:6,' undefined')
      else writeln (x:8:6,'  ',Ln_x(x,0.001):8:6) ;
      x:=x+h;
    end;
  readln;
end.
Поскольку члены ряда знакопеременные, точнее было бы в качестве результата взять сумму последней и предпоследней иттерации, поделенную на 2, но тут точно получишь 2 от препода: "не мог быть ты сам таким вумным!"

Последний раз редактировалось digitalis; 30.01.2018 в 13:22.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить код без использования циклов.. Predator199 PHP 17 13.11.2014 15:37
Организация циклов Alesia_Lesia Помощь студентам 0 17.11.2013 21:30
Использование циклов xopbka Visual C++ 0 13.12.2012 21:01
ОРГАНИЗАЦИЯ ЦИКЛОВ M@ri Помощь студентам 2 18.12.2011 17:37
Выбор циклов turtles Общие вопросы по Java, Java SE, Kotlin 1 18.05.2011 11:05