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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2015, 13:17   #1
GalaiAnton
Пользователь
 
Регистрация: 07.03.2015
Сообщений: 37
По умолчанию Напечатать таблицу значений функции на отрезке [a, b] с шагом h. Найти корень функции на этом интервале.

Код:
function F(x:Real):Real;
begin
  F:=3*sin(Sqrt(x))+0.35*x-3.8;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='2';
Edit2.Text:='3';
Edit3.Text:='0,2';
Memo1.Clear;
Memo1.Lines.Add('Результат выполнения: ');
end;

procedure TForm1.Button1Click(Sender: TObject);
var a,b,h,x,c,y:Extended;
begin
a:=StrToFloat(Edit1.Text);
Memo1.Lines.Add('a='+Edit1.Text);
b:=StrToFloat(Edit2.Text);
Memo1.Lines.Add('b='+Edit2.Text);
h:=StrToFloat(Edit3.Text);
Memo1.Lines.Add('h='+Edit3.Text);
x:=a;
while x<=b do
begin
y:=3*sin(Sqrt(x))+0.35*x-3.8;
Memo1.Lines.Add('x='+FloatToStrF(x,ffFixed,6,2) +' y='+FloatToStrF(y,ffFixed,6,2));
x:=x+h;
end;
c:=sqrt(a+b);
if f(a)*f(c)<0 then b:=c else a:=c;
x:=sqrt(a+b);
Memo1.Lines.Add('Ответ: ='+FloatToStrF(x,ffFixed,5,4));
end;
end.
Не первый день пытаюсь разобрать...
Вычисления производит отлично,а вот корень функции на этом интервале не правильный ответ получается...
Получается ответ 2,2882,а должно быть 2,2985...
Подскажите пожалуйста,может я как - то неправильно вычисляю корень функции на интервале или еще что-то...

Последний раз редактировалось Stilet; 20.03.2015 в 13:43.
GalaiAnton вне форума Ответить с цитированием
Старый 20.03.2015, 13:27   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А что такое вообще корень функции на интервале?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.03.2015, 14:05   #3
GalaiAnton
Пользователь
 
Регистрация: 07.03.2015
Сообщений: 37
По умолчанию Все,я разобрался!

Готовая и рабочая программа,с правильным ответом...
Код:
function F(x:Real):Real;
begin
  F:=3*sin(Sqrt(x))+0.35*x-3.8;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='2';
Edit2.Text:='3';
Edit3.Text:='0,2';
Memo1.Clear;
Memo1.Lines.Add('Результат выполнения: ');
end;

procedure TForm1.Button1Click(Sender: TObject);
const e=0.0001;
var a,b,h,x,c,y:Extended;
begin
a:=StrToFloat(Edit1.Text);
Memo1.Lines.Add('a='+Edit1.Text);
b:=StrToFloat(Edit2.Text);
Memo1.Lines.Add('b='+Edit2.Text);
h:=StrToFloat(Edit3.Text);
Memo1.Lines.Add('h='+Edit3.Text);
x:=a;
while x<=b do
begin
y:=3*sin(Sqrt(x))+0.35*x-3.8;
Memo1.Lines.Add('x='+FloatToStrF(x,ffFixed,6,2) +' y='+FloatToStrF(y,ffFixed,6,2));
x:=x+h;
end;
repeat
  x:=(a+b)/2;
  if f(a)*f(x) < 0 then b:=x 
                   else a:=x;
until abs(b-a) <= E;
Memo1.Lines.Add('Ответ: ='+FloatToStrF(x,ffFixed,5,4));
end;
end.

Последний раз редактировалось Stilet; 20.03.2015 в 14:51.
GalaiAnton вне форума Ответить с цитированием
Старый 20.03.2015, 18:23   #4
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А что такое вообще корень функции на интервале?
точка пересечения с нулем на данном интервале.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 20.03.2015, 18:28   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
точка пересечения с нулем на данном интервале.
М-да, чет переклинило, сразу корни квадратные в голову полезли
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.03.2015, 21:53   #6
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
М-да, чет переклинило, сразу корни квадратные в голову полезли
у автора переодическая функция. Достаточно на бумаге вывести формулу корней и дальше выбрать корни принадлежащие промежутку. Шаг h должен быть взять 1*10^-n, где n-степень округления(или количество знаков после запятой после округления).
Мозгов же не хватает, взять лист бумаги, карандаш или ручку и решить уравнение сначала на бумаге, а потом перенасить его в программу.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для заданной функции Y=tgX: напечатать таблицу значений, изменяя Х от 0 до 80 с шагом 10 sasha_14-88 Помощь студентам 4 10.12.2014 13:15
Построить график функции F(x) на заданном интервале с заданным шагом и вывести значения х и функции F(x) в таблицу в графическом р Proskurina Паскаль, Turbo Pascal, PascalABC.NET 8 12.11.2012 21:57
Напечатать таблицу значений функции y=ln(x) при изменении x от 1 до 10 с шагом 0,3. zailyamov Помощь студентам 5 07.03.2011 09:51
Составить программу в delphi для вычисления значений функции на отрезке [a,b] с шагом h. Queen Помощь студентам 1 30.05.2010 15:39