Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 14.09.2011
Сообщений: 26
1

Цикл с предусловием: протабулировать функцию и нарисовать график

19.10.2012, 23:39. Показов 1333. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В общем дано функцию, ее нужно протабулировать , и нарисовать график. Но вот в чем проблема, проблема в самой функции, дано функцию Название: 6.jpg
Просмотров: 228

Размер: 4.7 Кб , в Делфи я записываю ее так :
Delphi
1
y := exp((1/3)*ln(cos(4*x) + (1/2)));
Программа запускаеться, но когда вводиш значения, то выдает ошибку, но если убрать косинус, все роботает, далее, если написать косинус, но убрать корень кубический, то тоже все работает, но вместе никак не работает все.

Вот код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
procedure TForm1.N2Click(Sender: TObject);
var x, a, b, h, y, k, v: real;
begin
a := StrToFloat(Edit1.Text);
b := StrToFloat(Edit2.Text);
h := StrToFloat(Edit3.Text);
x := a;
k := 0;
v := 0;
 
Memo1.Lines.Add('Табулювання функції');
Memo1.Lines.Add('x             y');
While x < b+h/2 do
begin
y := exp((1/3)*ln(cos(4*x) + (1/2)));
if y>0 then begin k := k + 1;
if y<0 then begin v := v + 1;
end;
end;
 
Chart1.Series[0].Add(y,FloatToStr(x),clGreen) ;
 
Memo1.Lines.Add(FloatToStr(x)+'          '+FloatToStr(y));
x:=x+h;
v := v + 1 ;
k := k + 1;
end;
 
Edit4.Text := FloatToStr(k);
Edit5.Text := FloatToStr(v);
 
end;
Proga3.rar
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.10.2012, 23:39
Ответы с готовыми решениями:

цикл с предусловием While
Кто может помогите!

цикл с предусловием
помогите пожалуйста правильно оформить цикл вида: while (пользователь не нажал пробел) do ...

Итеративный цикл с предусловием.
Помогите пожалуйста решить задачу. Вычислить cos 0.6 с точностью ε = 0.00001, ...

Цикл с предусловием: убрать лишние пробелы
Доброго дня всем. Задали написать программу, которая убирает лишние пробелы (то есть 2 пробела...

3
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
20.10.2012, 20:14 2
Какие границы задаются для X? Конкретнее: значение, которое передается в функцию Ln, не является ли нулевым или отрицательным? Да, я знаю, что можно извлекать кубический корень из отрицательного числа. Можно... А вот брать логарифм от неположительного аргумента - нельзя.
0
1 / 1 / 0
Регистрация: 14.09.2011
Сообщений: 26
20.10.2012, 22:01  [ТС] 3
Цитата Сообщение от UI Посмотреть сообщение
Какие границы задаются для X? Конкретнее: значение, которое передается в функцию Ln, не является ли нулевым или отрицательным? Да, я знаю, что можно извлекать кубический корень из отрицательного числа. Можно... А вот брать логарифм от неположительного аргумента - нельзя.
Данные такие:
а = 2
b = 5
h = 0.1
Все вроде положительное!
Но вот почему то не работает, я пробовал и без логарифма писать, но все равно ничего.
Delphi
1
Power(cos(4*x) + (1/2),  1/3)
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
11.11.2012, 00:24 4
Вот сделал так. И вставил, заодно поиск минимального и максимального значений:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
procedure TForm1.N2Click(Sender: TObject);
var x, a, b, h, y, t, MinY, MaxY: real;
    k, v: Integer;
begin
  a := StrToFloat(Edit1.Text);
  b := StrToFloat(Edit2.Text);
  h := StrToFloat(Edit3.Text);
  x := a;
  k := 0;
  v := 0;
  MinY := MaxInt;
  MaxY := -MaxInt;
 
  Memo1.Lines.Add('Табулювання функції');
  Memo1.Lines.Add('x             y');
  While x < b+h/2 do
  begin
//    y := exp((1/3)*ln(cos(4*x) + (1/2)));
    t := cos(4*x) + (1/2);
    y := Power(Abs(t),  1/3);
    If t<0 Then y := -y;
    //Найдём минимальное и максимальное значения
    If MinY > y Then MinY := y;
    If MaxY < y Then MaxY := y;
 
    if y>0 then
    Inc(k) Else
    if y<0 then Inc(v);
 
    Chart1.Series[0].Add(y,FloatToStr(x),clGreen) ;
 
    Memo1.Lines.Add(FloatToStr(x)+'          '+FloatToStr(y));
    x:=x+h;
  end;
  Edit4.Text := IntToStr(k);
  Edit5.Text := IntToStr(v);
end;
Функция Power при отрицательном значении тоже не хочет работать.
0
11.11.2012, 00:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.11.2012, 00:24
Помогаю со студенческими работами здесь

Рассчитать сумму всех чисел от 1 до 10 (цикл с предусловием/постусловием)
1.Рассчитать сумму всех чисел от 1 до 10 надо решить с Цикл с предусловием, и Цикл с постусловием...

Цикл с предусловием: Ввести с клавиатуры и напечатать квадраты N чисел
Ввести с клавиатуры и напечатать квадраты N чисел, если введено кpатное 3-м положительное число,...

Протабулировать функцию, использовав цикл с предусловием
Помогите написать. И посоветуйте какие-нибудь книги по Visual C++ или сайты с обучением. ...

Цикл While. Протабулировать функцию
Помогите решить пример в Mathcad с помощью цикла While. Заранее спасибо!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru