Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Функция

Автор: Иван 26.10.2006 20:56

Пожалуйста помогите решить эту функцию!

Функция: y:=ax+sin(at)/sqrt(2t+Exp(-0,5x*Ln(e))
X: интервал: x [от 1; до 2]; шаг: 0,3
Y: интервал: t [от 1; до 2]; шаг: 0,3
Исходные данные: a:=0,7

Автор: мисс_граффити 26.10.2006 21:50

что значит "решить функцию"?
написать программу, вычисляющую ее? найти минимум/максимум из этих точек? найти, где функция равна нулю? построить график?....
в общем, я не ясновидящая sad.gif

Автор: Иван 26.10.2006 21:54

Составить программу, используя вложенные операторы цикла с предусловием.

Автор: klem4 26.10.2006 22:09

Поиск -> Табулирование функции, ну а условия, после ввода данных проверй это :

1) e >= 1 (для логарифма)
2) 2t+Exp(-0,5x*Ln(e) > 0 (чтобы не возникло деление на 0 + корень из отрицательного)

Второе суловие возможно придется проверять и в цикле ...

Автор: Иван 26.10.2006 22:12

Хотелось бы увидеть программу в готовом виде.

Автор: klem4 26.10.2006 22:13

Таких программ как ты выразился "в готовом виде" на форуме куча, и писать еще одну такуюже специально для тебя никто не собирается, читай предыдущий мой пост.

Поиск и еще раз поиск, что-то не получится ? Поможем.

Автор: Иван 26.10.2006 23:27

Умоляю подскажите что не так!!!

Program 1;
begin
y:=ax+sin(at)/sqrt(2t+Exp(-0,5x*Ln(e));
end;
Const
a:double = 1;
b:double = 2;
step:double = 0,3;
eps:double = 0.00001;
Var
x,r:double;
begin
x:=a;
while
(b-x)>eps do begin
r:=f1(x);
writeln®;
x:=x+step
end;
readln
end.

Автор: мисс_граффити 26.10.2006 23:34

начнем с того, что надо использовать теги!

по тексту программы - это что за новая структура:
1. тело программы
2. const,var
3. продолжение тела.

это не с++, а паскаль.
переменные объявляются до всех бегинов/эндов. или оформляй эту бяку как подпрограмму, используя зарезервированные слова "функция" или "процедура".

Автор: klem4 26.10.2006 23:42

В общем чувствуется тут опять может на 30 постов все дело разойтись, так подойдет ?

uses crt;
const

a = 0.7;
step = 0.3;

function F(x, t: Single): Single;
begin
F := a*x + sin(a*t) / sqrt(2*t + exp(-0.5*x * ln(exp(1))));
end;

var
x, t: Single;

begin
clrscr;

x := 1;

writeln('x':3, 't':9, 'F(x, t)':13);
while (x <= 2) do begin
t := 1;
while (t <= 2) do begin
if (2*t + exp(-0.5*x * ln(exp(1))) > 0) then
writeln(x:3:3, t:9:3, F(x, t):9:3);
t := t + step;
end;
x := x + step;
end;
readln;
end.


ps ln(exp(1) = 1, так что можно убрать ... Если в твоем задании е - это експонента.

Автор: Иван 27.10.2006 20:37

Пожалуйста подскажите где ошибка:

Program Sm;
uses crt;
var
x,t:Single;
const
a=0.7;
step=0.3;
Function F(x,t:Single):Single;
begin
F:=a*x+sin(a*t)/sqrt(2*t+exp(-0.5*x*ln(exp(1))));
end;
begin
clrscr;
x:=1;
writeln('x':3,'t':9,'F(x,t)':13);
while (x <= 2) do begin
t:= 1;
while (t <= 2) do begin
if (2*t+exp(-0.5*x*ln(exp(1)))>0) then
writeln(x:3:3, t:9:3, F(x,t):9:3);
t:=t+step;
end;
x:=x+step;
end;
readln;
end.

Автор: volvo 27.10.2006 20:53

Цитата
Пожалуйста подскажите где ошибка:
Где ты видишь ошибку? Все работает... Если ты про 8087 mode, то самой первой строкой программы поставь {$N+}

Автор: Иван 27.10.2006 21:26

Огромное спасибо за помощь. И огромная благодарность Андрею(klem4)!!!

Автор: Иван 29.10.2006 21:43

И последний вопрос. Что значит строчка Function F(x,t:Single):Single;

Автор: volvo 29.10.2006 21:49

Читай документацию:
http://zeus.sai.msu.ru:7000/programming/bp70_lr/lr1.shtml#6

Автор: Гость 1.11.2006 21:51

Уважаемые програмисты! Не могли бы вы из этой программы убрать функции. Очень надо!!!
P.S. Сам пытался - не получилось. Вся надежда на вас!

Автор: мисс_граффити 1.11.2006 21:58

ВСЕ? sin, exp,ln...?

Автор: volvo 1.11.2006 21:58

Тут нет функций... Она всего одна в программе.

Как пытался убрать, покажи...

Автор: Иван 1.11.2006 22:06

Пожалуйста :
{$N+}
Program Sm;
uses crt;
var
x,t,F:Single;
const
a=0.7;
step=0.3;
begin
F:=a*x+sin(a*t)/sqrt(2*t+exp(-0.5*x*ln(exp(1))));
end.
begin
clrscr;
x:=1;
writeln ('x':3,'t':9,'F(x,t)':13);
while (x <= 2) do begin
t:= 1;
while (t <= 2) do begin
if (2*t+exp(-0.5*x*ln(exp(1)))>0) then
writeln (x:3:3, t:9:3, F(x,t):9:3);
t:=t+step;
end;
x:=x+step;
end;
readln;
end.

Автор: мисс_граффити 1.11.2006 22:14

а ничего, что к моменту подсчета еще не заданы значения х и t?
поищи, где вызывается функция, и примерно в тот район вставь F:=a*x+sin(a*t)/sqrt(2*t+exp(-0.5*x*ln(exp(1))));

Автор: Иван 1.11.2006 22:54

Заработала! Вот только правильно ли?

{$N+}
Program Sm;
uses crt;
var
x,t,F:Single;
const
a=0.7;
step=0.3;
begin
clrscr;
x:=1;
writeln ('x':3,'t':9,'F(x,t)':13);
while (x <= 2) do begin
t:= 1;
F:=a*x+sin(a*t)/sqrt(2*t+exp(-0.5*x*ln(exp(1))));
while (t <= 2) do begin
writeln (x:3:3, t:9:3, F:9:3);
t:=t+step;
end;
x:=x+step;
end;
readln;
end.

Автор: volvo 1.11.2006 23:00

Юля, а ничего, что там после вычисления F и End-а стояла точка, т.е. все остальное в принципе не компилировалось? smile.gif

Цитата
Заработала! Вот только правильно ли?
Судя по результатам - не совсем...

Вот так правильнее будет:
{$N+}
Program Sm;
uses crt;
var x,t,F:Single;

const
a=0.7;
step=0.3;

begin
clrscr;
x:=1;
writeln ('x':3,'t':9,'F(x,t)':13);
while (x <= 2) do begin
t:= 1;

while (t <= 2) do begin
F:=a*x+sin(a*t)/sqrt(2*t+exp(-0.5*x*ln(exp(1))));
writeln (x:3:3, t:9:3, F:9:3);
t:=t+step;
end;
x:=x+step;
end;
readln;

end.

Автор: Иван 2.11.2006 0:44

Всё работает! И без функции! Как мне поставить тебе + к репутации?

Автор: мисс_граффити 2.11.2006 0:57

Цитата(volvo @ 1.11.2006 19:00) *

Юля, а ничего, что там после вычисления F и End-а стояла точка, т.е. все остальное в принципе не компилировалось? smile.gif

Это синтаксис... А я про смысл начала - что человек, собственно, хочет получить...