Помощь - Поиск - Пользователи - Календарь
Полная версия: Функция
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Иван
Пожалуйста помогите решить эту функцию!

Функция: 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
мисс_граффити
что значит "решить функцию"?
написать программу, вычисляющую ее? найти минимум/максимум из этих точек? найти, где функция равна нулю? построить график?....
в общем, я не ясновидящая sad.gif
Иван
Составить программу, используя вложенные операторы цикла с предусловием.
klem4
Поиск -> Табулирование функции, ну а условия, после ввода данных проверй это :

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

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

Поиск и еще раз поиск, что-то не получится ? Поможем.
Иван
Умоляю подскажите что не так!!!

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.
мисс_граффити
начнем с того, что надо использовать теги!

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

это не с++, а паскаль.
переменные объявляются до всех бегинов/эндов. или оформляй эту бяку как подпрограмму, используя зарезервированные слова "функция" или "процедура".
klem4
В общем чувствуется тут опять может на 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, так что можно убрать ... Если в твоем задании е - это експонента.
Иван
Пожалуйста подскажите где ошибка:

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
Цитата
Пожалуйста подскажите где ошибка:
Где ты видишь ошибку? Все работает... Если ты про 8087 mode, то самой первой строкой программы поставь {$N+}
Иван
Огромное спасибо за помощь. И огромная благодарность Андрею(klem4)!!!
Иван
И последний вопрос. Что значит строчка Function F(x,t:Single):Single;
Гость
Уважаемые програмисты! Не могли бы вы из этой программы убрать функции. Очень надо!!!
P.S. Сам пытался - не получилось. Вся надежда на вас!
мисс_граффити
ВСЕ? sin, exp,ln...?
volvo
Тут нет функций... Она всего одна в программе.

Как пытался убрать, покажи...
Иван
Пожалуйста :
{$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.
мисс_граффити
а ничего, что к моменту подсчета еще не заданы значения х и t?
поищи, где вызывается функция, и примерно в тот район вставь F:=a*x+sin(a*t)/sqrt(2*t+exp(-0.5*x*ln(exp(1))));
Иван
Заработала! Вот только правильно ли?
{$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
Юля, а ничего, что там после вычисления 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.
Иван
Всё работает! И без функции! Как мне поставить тебе + к репутации?
мисс_граффити
Цитата(volvo @ 1.11.2006 19:00) *

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

Это синтаксис... А я про смысл начала - что человек, собственно, хочет получить...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.