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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2011, 00:59   #1
kuy
Форумчанин
 
Аватар для kuy
 
Регистрация: 05.09.2011
Сообщений: 109
Восклицание площадь замкнутого контура.

Здравствуйте, помогите решить задачу на Делфи:
Замкнутый контур образуется графиком функции У = Х^2 и осью Y, определить его площадь, предельное значение Y ввести с клавиатуры.
kuy вне форума Ответить с цитированием
Старый 17.11.2011, 05:06   #2
IT-man
АльTRUEи$т
Форумчанин
 
Аватар для IT-man
 
Регистрация: 19.03.2009
Сообщений: 784
По умолчанию

Цитата:
определить его площадь
это интеграл от функции у=sqrt(x) на промежутке от 0 до maxY
Цитата:
«Никто не войдет в Рай, имея хотя бы крупицу гордыни в своем сердце». «Аллах Красив и любит красоту. Гордыня означает отказ от истины и высокомерие»
IT-man вне форума Ответить с цитированием
Старый 17.11.2011, 09:45   #3
kuy
Форумчанин
 
Аватар для kuy
 
Регистрация: 05.09.2011
Сообщений: 109
По умолчанию

IT-man, maxY вводится с клавиатуры, правильно понял??
kuy вне форума Ответить с цитированием
Старый 17.11.2011, 10:19   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от kuy
предельное значение Y ввести с клавиатуры.
Цитата:
Сообщение от kuy
IT-man, maxY вводится с клавиатуры, правильно понял??
Точно. Вы правильно поняли.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.11.2011, 19:10   #5
kuy
Форумчанин
 
Аватар для kuy
 
Регистрация: 05.09.2011
Сообщений: 109
По умолчанию

Вот что получилось:
Код:
program Project2;
{$APPTYPE CONSOLE}
uses
  SysUtils;
const Ymin=0;
      n=1000000;
Var i:integer;
    Ymax, h, x, m, s :real;
function f(x :real):real;
 begin
     f:=sqrt(x);
 end;
begin
write('Ymax:'); readln(Ymax);
h:=(Ymax-Ymin)/n; s:=0; m:=Ymin;
 for i:=0 to n do
  begin
   x:=m+i*h;
   s:=s+f(x)*h;
 end;
writeln('S: ',s:3:3); readln;
end.
Это правильное решение этой задачи??
kuy вне форума Ответить с цитированием
Старый 17.11.2011, 23:42   #6
val_nnm
Форумчанин
 
Регистрация: 18.10.2009
Сообщений: 185
По умолчанию

Для начала: в условии есть неточность. Т.к. x^2 симметрична относительно оси y. Но положим, что в условии предполагается, что нужно брать область графика для положительных значений x. Т,е. область ограниченна 3 графиками. x=0 , y=Y и y=x^2 для x>=0. (но это лучше уточните у препода, потомучто, строго говоря, ваше задание слишком расплывчатое)
Тогда эту задачу можно решить 3 способами. (хотя возможно их и больше).
Всё зависит от того можем ли мы аналитически вычислить обратную функцию и интеграл обратной функции.
1) Известна обратная функция и известен интеграл. (вывод смотри на рисунке)
Код:
const Ymin=0;
function FIntegr(x :real):real;
begin
  FIntegr := x*sqrt(x)/(3/2);
end;

var Ymax:real;
begin
  write('Ymax='); readln(Ymax);
  writeln('S=',(FIntegr(Ymax)-FIntegr(Ymin)):5:4); readln;
end.
2)Известна только обратная функция, но неизвестен интеграл. Это ваш метод, единственное исправление цикл for i:=0 to n-1 do

3)Если обратная функция неизвестна. То я бы написал примерно следующее.
Код:
const Xmin=0;
      dx = 0.00001;
function f(x :real):real;
 begin
     f:=x*x;
 end;

var x:real;
    y:real;
    Ymax:real;
    s:real;
begin
  write('Ymax='); readln(Ymax);
  x := Xmin;
  s := 0;
  while (y<Ymax) do Begin
    s := s +  (Ymax - y)*dx;
    x := x + dx;
    y := f(x);
  end;
  writeln('S=',s:5:4); readln;
end.
или как вариант для общего развития можно и так

Код:
const Xmin=0;
      dx = 0.00001;
function f(x :real):real;
 begin
     f:=x*x;
 end;

var x:real;
    y:real;
    yold:real;
    dy:real;
    Ymax:real;
    s:real;
begin
  write('Ymax='); readln(Ymax);
  x := Xmin;
  yold := f(x);
  x := x + dx;
  y := f(x);
  s := 0;
  while (y<=Ymax) do Begin
    s := s + x*(y-yold);
    x := x + dx;
    yold := y;
    y := f(x);
  end;

  writeln('S=',s:5:4); readln;
end.
Изображения
Тип файла: jpg 124.JPG (9.4 Кб, 55 просмотров)
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает."

Последний раз редактировалось val_nnm; 18.11.2011 в 00:00.
val_nnm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны площадь круга и площадь квадрата Joker<777> Паскаль, Turbo Pascal, PascalABC.NET 10 17.01.2012 07:00
Анализ замкнутого кеширования Igor92 Помощь студентам 0 18.05.2011 01:15
ООП (паскаль) - дан ромб. найти площадь. построить пирамиду, найти её площадь Rfn.if Помощь студентам 0 27.04.2011 16:10
Реализация замкнутого контура в игре Точки Berszet Помощь студентам 0 28.11.2010 19:46
Площадь контура и ценр мас... OmgA Помощь студентам 2 12.11.2010 11:27