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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2007, 11:50   #1
Raz0r
Пользователь
 
Регистрация: 06.11.2007
Сообщений: 47
По умолчанию Формула Симпсона

Подскажите пожалуйста, как по формуле Симпсона вычислить площадь фигуры, заключенной между функциями? Саму формулу я нашёл, но как её применить к данным функциям, ума не приложу.
Функции:
y=-x^2+2x+2
y=-x^2-4x-1
y=3
Формула Симпсона
Raz0r вне форума Ответить с цитированием
Старый 20.11.2007, 12:54   #2
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Кто-нить помнит, как интегралы в паскале считать? Хых, сессия скоро, "а моя совсем отупела однако"
пыщь
JTG вне форума Ответить с цитированием
Старый 20.11.2007, 13:48   #3
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Нужно вычислить площадь заштрихованной фигуры. Я бы сделал так: спустил параболу вниз на 3, перевернул ее, вычислил площадь желтого треугольника и умножил на 2, т.к. красная линия - ось симметрии.
Вот код с контролем точности, написан давно, сейчас заменил только функцию.
В данной задаче, контроль точности не нужен, т.к. для квадратной параболы формула Симпсона дает точное значение. Поэтому цикл repeat until можно убрать.
Код:
var
  i,n: integer;
  d,S0,S,x_min,x_max,eps: real;

function F(x: real): real;
begin
  F:=x*x+4*x+4;
end;

begin
  eps:=0.0001;
  x_min:=-2; x_max:=-0.5;
  n:=1; S:=0;
  repeat
    n:=n*2; d:=(x_max-x_min)/n; S0:=S;
    S:=F(x_min)+F(x_max);
    for i:=1 to n-1 do
      if odd(i) then S:=S+4*F(x_min+i*d)
                else S:=S+2*F(x_min+i*d);
    S:=S*(x_max-x_min)/3/n;
  until abs(S-S0) <= eps;
  S:=2*S;
  writeln(S:1:4);
  readln;
end.
Изображения
Тип файла: jpg ris6.jpg (11.6 Кб, 162 просмотров)
_Dmitry вне форума Ответить с цитированием
Старый 21.11.2007, 13:10   #4
Raz0r
Пользователь
 
Регистрация: 06.11.2007
Сообщений: 47
По умолчанию

Спасибо, только я совсем забыл написать, что надо под BС...
Raz0r вне форума Ответить с цитированием
Старый 21.11.2007, 20:49   #5
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

На C будет так
Код:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

float F(float x)
{return x*x+4*x+4;}

main()
{ int n;
  float d,S0,S,x_min,x_max,eps;
  eps=0.0001;
  x_min=-2; x_max=-0.5;
  n=1; S=0;
  do {
    n=n*2; d=(x_max-x_min)/n; S0=S;
    S=F(x_min)+F(x_max);
    for (int i=1; i<n; i++)
      if (i%2 != 0) {S=S+4*F(x_min+i*d);}
               else {S=S+2*F(x_min+i*d);}
    S=S*(x_max-x_min)/3/n;}
  while (abs(S-S0) <= eps);
  S=2*S;
  printf("%f",S);
  getch();
}
_Dmitry вне форума Ответить с цитированием
Старый 22.11.2007, 15:50   #6
Raz0r
Пользователь
 
Регистрация: 06.11.2007
Сообщений: 47
По умолчанию

Спасибо, будем разбираться.
Raz0r вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна формула!!! SergeyKor Microsoft Office Excel 6 15.10.2009 13:59
Формула Танечка Microsoft Office Excel 3 26.06.2008 09:11
Формула Holodok Помощь студентам 3 19.05.2008 08:19
Формула Daniil2 Microsoft Office Excel 5 13.12.2007 18:33
Формула Галина Microsoft Office Excel 2 20.09.2007 15:48