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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2013, 04:19   #21
Ayamy
Новичок
Джуниор
 
Регистрация: 28.12.2013
Сообщений: 11
По умолчанию

все правильно.
Ayamy вне форума Ответить с цитированием
Старый 29.12.2013, 04:56   #22
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Сейчас начал считать, но порядки - уж слишком..
Вот значения функции на нижнем пределе интегрирования

(c1)exp(-m*x)/(L^5*(exp(c2/L)-1) =
= (3.75e-16)exp(-250*1.18)/((0.6e-6)^5*(exp(2.56e-6/0.9e-6)-1) =
= 2.865e-144 / 9.56e-30 = 3.00e-115
10 в минус 115. Что-то не то. Интеграл соответственно - примерно 1.5e-121

Наверное, иза exp(-m*x) . e в степени минус 295
type_Oleg вне форума Ответить с цитированием
Старый 29.12.2013, 05:41   #23
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Ну, вообщем разбирайесь с формулой и параметрами. А я сделал интеграл " до бесконечности ".
Код:
program Integral;

var y,x,L,c1,c2,m, tin,dL : Double;
const 
  NINT=2000;  // число трапеций разбиения
  EPS=0.0001;  // относительная погрешность

// функция, которую нужно проинтегрировать 
function fun(ll:Double):Double;
begin
 fun:=c1*Exp(-m*x)/(ll*ll*ll*ll*ll*(Exp(c2/ll)-1));  
end;

// функция для расчета интеграла от L1 до L2 методом трапеций
function IntegrTrap(L1,L2:Double;n:Integer):Double;
var i:Integer;
    dl,s:Double;
begin
  s:=0;
  dl:=(L2-L1)/n;
  for i:=1 to n do
     s:=s+dl*(fun(L1+i*dl)+fun(L1+(i-1)*dl))/2;
  IntegrTrap:=s;
end;

// сама программа

begin
 x:=1.18;
 c1:=3.75e-16;
 c2:=2.56e-6;
 m:=250;
 L:=0.9e-6;
 y:=0;
 dL:=L;  // шаги приближения к  " бесконечности "
 repeat 
  tin:=IntegrTrap(L,L+dL,NINT);	
  y:=y+tin;
  L:=L+dL;
 until Abs(tin)<Abs((EPS*y));
 Writeln(y);
 Readln;	
end .
Принцип такой. Задаемся относительной погрешностью EPS (в данном случае 0,0001) .Выбыраем шаг приближения к бесконечности ( в данном случае L ).
Вычисляем интеграл от L до 2L, суммируем, затем от 2L до 3L, суммируем , и т.д. До тех пор, пока очередной " маленький " интеграл не станет меньше 0,0001 от уже накопленного.
Проверил на других функциях, нормально интегрирует " до бесконечности ".

Последний раз редактировалось type_Oleg; 29.12.2013 в 05:50.
type_Oleg вне форума Ответить с цитированием
Старый 30.12.2013, 05:03   #24
Ayamy
Новичок
Джуниор
 
Регистрация: 28.12.2013
Сообщений: 11
По умолчанию

там единственная проблема с х-толщиной поглощающего слоя..мне просто дано что это толщина атмосферы (из-за нее экспонента становится нулем).

Спасибо большое Вам за помощь))) Очень помогла Ваша программа.
Ayamy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение интеграла методом трапеции Тёма777 Общие вопросы C/C++ 11 20.05.2013 20:38
решение интеграла метод симпсона Ruslan4iK Общие вопросы C/C++ 0 02.10.2011 19:17
Решение определенного интеграла!!! Ислам Помощь студентам 4 12.03.2011 21:09
Решение интеграла A_r_r_a_y Помощь студентам 2 09.03.2010 22:02
Решение интеграла на ПАСКАЛЕ 34882 Паскаль, Turbo Pascal, PascalABC.NET 2 08.03.2008 13:13