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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2012, 15:52   #1
Camelot_2012
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 90
По умолчанию Написать программу табулирования сложной функции

Код:
uses crt;
var a,b,y,n,E: integer;
begin Clrscr;
x:=-1;
if x<0,5 then y:=((sqr(x)+3*x+4)/(5*x+1))*((4*n-3)*sqr(x))/(4*n+1)); 
else 
for n:=1 to 10 do
then y:=(x/3)*(exp(n*ln(x)/n);
if x>1 then 
writeln(y);
end.
решил рекуррентное соотношение,но написал программу не правильно.
Изображения
Тип файла: jpg 1.jpg (11.9 Кб, 89 просмотров)
Camelot_2012 вне форума Ответить с цитированием
Старый 13.04.2012, 20:43   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
uses
  crt;

const
  e = 0.0001;

var
  x, t, s, n, c: real; 

begin
  write('Input x: '); 
  readln(x); 
  if x < 0.5 then begin
    s := 0; 
    n := 0; 
    c := 1; 
    t := 1; 
    while (t / c) > e do 
    begin
      n := n + 1; 
      s := s + t / c; 
      t := t * x * x; 
      c := 1 + 4 * n; 
    end; 
    s := (x * x + 3 * x + 4) * s / (5 * x + 1);	 
  end
	 else
  begin
    s := 0; 
    n := 1; 
    t := x; 
    while n <= 10 do 
    begin
      s := s + t / n; 
      t := t * x; 
      n := n + 1; 
    end; 
    s := x * s / 3;    
  end;
  writeln('Function is equal: ', s:0:3);
  readln;
end.
Я не знаю, как решить первую сумму
Поэтому сделал вычисление ряда с точностью е.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 13.04.2012, 20:54   #3
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

как то так...
Код:
uses crt;
var n: integer;
x,y : real;
begin Clrscr;
x:=0.2;
y := 0;

if x < 0.5 then
  begin 
  for n := 0 to 10 do  
    y:= y + power(x, 2*n)/(4*n+1); 
    y := y * ((sqr(x)+3*x+4)/(5*x+1));
  end
else 
  for n:=1 to 10 do
    y:= y + (x/3)*(exp(n*ln(x))/n);

writeln(y);
end.
p.s. в первом тоже n до 10... но видимо с точностью нужно...
обогнали... )
если не фрипаскаль то нужно подключить математическую библиотеку... для возведения отрицательных Х в степень... или же через цикл возводить...
пишу код не только за печеньки

Последний раз редактировалось VIK_aka_TOR; 13.04.2012 в 20:58.
VIK_aka_TOR вне форума Ответить с цитированием
Старый 15.04.2012, 16:00   #4
Camelot_2012
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 90
По умолчанию

Цитата:
Сообщение от VIK_aka_TOR Посмотреть сообщение
как то так...
Код:
uses crt;
var n: integer;
x,y : real;
begin Clrscr;
x:=0.2;
y := 0;

if x < 0.5 then
  begin 
  for n := 0 to 10 do  
    y:= y + power(x, 2*n)/(4*n+1); 
    y := y * ((sqr(x)+3*x+4)/(5*x+1));
  end
else 
  for n:=1 to 10 do
    y:= y + (x/3)*(exp(n*ln(x))/n);

writeln(y);
end.
p.s. в первом тоже n до 10... но видимо с точностью нужно...
обогнали... )
если не фрипаскаль то нужно подключить математическую библиотеку... для возведения отрицательных Х в степень... или же через цикл возводить...
Некоторые изменения: на отрезке [-1,1] с шагом 0,1
Camelot_2012 вне форума Ответить с цитированием
Старый 15.04.2012, 16:07   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
uses
  crt;

const
  e = 0.0001;

var
  x, t, s, n, c: real; 

begin
  x:=-1;
  while x<=1 do
  begin
  if x < 0.5 then begin
    s := 0; 
    n := 0; 
    c := 1; 
    t := 1; 
    while (t / c) > e do 
    begin
      n := n + 1; 
      s := s + t / c; 
      t := t * x * x; 
      c := 1 + 4 * n; 
    end; 
    s := (x * x + 3 * x + 4) * s / (5 * x + 1);	 
  end
	 else
  begin
    s := 0; 
    n := 1; 
    t := x; 
    while n <= 10 do 
    begin
      s := s + t / n; 
      t := t * x; 
      n := n + 1; 
    end; 
    s := x * s / 3;    
  end;
  writeln('x= ',x:0:3,' Function is equal: ', s:0:3);
  x:=x+0.1;
  end;
  readln;
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработать программу табулирования функции Olejas Помощь студентам 1 30.01.2012 18:24
Табулирования функции. pokerg Microsoft Office Excel 2 25.01.2012 17:53
Программа табулирования функции...так ли!? gree Помощь студентам 7 24.12.2008 23:14