Помощь - Поиск - Пользователи - Календарь
Полная версия: Табулирование функции
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
РЕЗИНОВАЯ ЗИНА
помоги составить программу табылирования функции

Цитата
    Ln^2|x-2|+sqrt(x+3) , x<=2

y=
 
    E^(6-2x)+2cos^3(x-3), x>2

на отрезке [1,3] c шагом 0.2
чето я совсем запутался.
Altair
Цитата
Ln^2|x-2|

не понял.
sqr(Ln(abs(x-2))) или что-то другое ?

Цитата
2cos^3(x-3)

аналогично. что во что возводим ?



Function F1(x:double):double;
begin
 f1:=sqr(ln(abs(x-2)))+sqrt(x+3);
end;

Function F2(x:double):double;
begin
 f2:=exp(6-2*x)+2*sqr(cos(x-3))*cos(x-3);
end;

Const
 a:double = 1;
 b:double = 3;
 step:double = 0.1;
 eps:double = 0.00001;
var
 x,r:double;
begin
 x:=a;
 while abs (b-x)>eps do begin
  if x<=2 then r:=f1(x) else r:=f2(x);
  writeln(x:10, r:10);
  x:=x+step
 end;
 readln
end.

функции можешь подправить сама (f1 f2)
...
Guest
Ln^2|x-2|
логорифм квадратный от х-2 по модулю
2cos^3(x-3)
2 сos куб(х-3)
а без функций никак нельзя?
step:double = 0.1;
а почему step=0,1? или если double, то оно удваивается?
пасиб большое!! wink.gif
Altair
Цитата
Ln^2|x-2|
логорифм квадратный от х-2 по модулю
2cos^3(x-3)
2 сos куб(х-3)

тебье повезло я так и подумал.
Цитата
а без функций никак нельзя?

можно.

Const
 a:double = 1;
 b:double = 3;
 step:double = 0.1;
 eps:double = 0.00001;
var
 x,r:double;
begin
 x:=a;
 while abs (b-x)>eps do begin
  if x<=2 then r:=sqr(ln(abs(x-2)))+sqrt(x+3)
  else r:=exp(6-2*x)+2*sqr(cos(x-3))*cos(x-3);
  writeln(x:10, r:10);
  x:=x+step
 end;
 readln
end.


Цитата
а почему step=0,1?

"c шагом 0.2"
прости, ошибся, исправь на 0.2
Цитата
или если double, то оно удваивается?

нет, double протсо вещесвенный тип, "двойной точности" smile.gif
не люблю real.. (причина )
РЕЗИНОВАЯ ЗИНА
пасиб огромное! give_rose.gif
Guest
program labwork2_2;
uses crt;
const
step:double=0.2;
a:double=1;
b:double=3;
eps:double=0.00001;
var
x,y:double;
BEGIN
x:=a;
while abs(b-x)>eps do
 begin

 if x<=2 then y:=sqr(ln(abs(x-2)))+sqrt(x+3);
 if x>2 then y:=Exp(6-2*x)+2*sqr(cos(x-3))*cos(x-3);
writeln(x:10,y:10);
x:=x+step;
    readln;


readkey;
END.


у меня почему выдает ошибку
вот тут: x:=a;
volvo
Во-первых, пользуйся тегами CODE, а во вторых - какую именно ошибку выдает?

Кстати, у тебя End перед ReadLn пропущен, программа не будет компилироваться...
Guest
пишет на x:=a следующее
Must be in 8087mode to compile this
volvo
Самой первой строкой программы добавь:
{$N+}
Guest
а что это значит?
volvo
FAQ: Директивы компилятора
Цитата
{$N-} - Использование сопроцессора. (Глобальная директива). При указании режима {$N-} генерируется код для программного выполнения всех вещественных вычислений. При режиме {$N+} генерируется код для выполнения таких вычислений аппаратно с помощью сопроцессора.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.