Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 18.05.2015, 18:17   #1 (permalink)
Dimafania
Member
 
Регистрация: 18.05.2015
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Интеграл и график в любой версии Pascal, Maple. Что-либо другое

Здравствуйте. Буду премного благодарен тем, кто решит поставленную передо мной задачу. Мне необходимо решить определенный интеграл вида A(x,y)B(x)dx и построить его график. Проблема заключается в том, что функция B(x) у меня задана в виде набора значений x(y). Справиться с подобным интегралом пока что не в состоянии. Заранее спасибо
Dimafania вне форума   Ответить с цитированием

Старый 18.05.2015, 18:17
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Разумеется, на нашем форуме так же нашлись и похожие темы

Помогите найти интеграл и задачу коши операционным методом
Виснет комп при запуске чего либо
Подвержены ли вы каким-либо фобиям?
Как задать число pi, e , определенный интеграл?

Старый 18.05.2015, 19:17   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Dimafania Посмотреть сообщение
Справиться с подобным интегралом пока что не в состоянии. Заранее спасибо
Вам просто посочувствовать, или как? Потому что для помощи в решении задачи нам бы увидеть её. Прям как есть целиком. С функциями, таблицами, полной формулировкой задания и всем таким прочим.
Ну а пока - сочувствуем. Душой с Вами.
Vladimir_S вне форума   Ответить с цитированием
Старый 18.05.2015, 21:13   #3 (permalink)
Dimafania
Member
 
Регистрация: 18.05.2015
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Вам просто посочувствовать, или как? Потому что для помощи в решении задачи нам бы увидеть её. Прям как есть целиком. С функциями, таблицами, полной формулировкой задания и всем таким прочим.
Ну а пока - сочувствуем. Душой с Вами.
Здравствуйте, Владимир.
Спасибо за ваш ответ.
К своему сообщению прикладываю два файла. В первом приведена формула с интегралом, во втором приведены значения функции g(w).
Могу привести вам значения различных констант из формулы (как например постоянная Больцмана Кв), но поскольку меня больше интересует алгоритм, а вам данные значения интереса не представляют (вы можете их заменить единицей например), приводить их, с вашего разрешения, не буду.
Суть задачи заключается в следующем. В прикрепленном файле .txt находятся значения плотности фононных состояний g(w), или, иными словами, количество фононов обладающих определенной энергией. Используя данную плотность состояния можно определить теплоемкость материала. Формула связи приведена на рисунке. Граничными значениями w являются соответственно граничные значения файла (w0 = 0.730, wmax = 8.487). Последовательно подставляя различные значения температуры Т можно получить график теплоемкости, либо просто набор значений. Если бы функция g(w) задавалась бы какой-нибудь функцией, то проблем бы не возникло. Однако в моей случае это набор значений. Понятно, что интеграл можно заменить суммой произведения всех значений функции на шаг дискретизации, однако в моей случае существует проблема понимания того, как написать код в котором часть интеграла задается функцией, а вторая часть - суммой.
Dimafania вне форума   Ответить с цитированием
Старый 18.05.2015, 21:14   #4 (permalink)
Dimafania
Member
 
Регистрация: 18.05.2015
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Приложения к сообщению
Миниатюры
eioaadhae.png  
Вложения
Тип файла: txt g(w) значения.txt (2.2 Кб, 8 просмотров)
Dimafania вне форума   Ответить с цитированием
Старый 19.05.2015, 10:49   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Dimafania Посмотреть сообщение
Здравствуйте, Владимир. Спасибо за ваш ответ.
Да не за что.
Цитата:
Сообщение от Dimafania Посмотреть сообщение
Могу привести вам значения различных констант из формулы (как например постоянная Больцмана Кв), но поскольку меня больше интересует алгоритм, а вам данные значения интереса не представляют (вы можете их заменить единицей например), приводить их, с вашего разрешения, не буду.
Вообще-то я сам физик, поэтому с постоянными Планка и Больцмана проблем нет. А вот значение величины V привести бы стоило.
Цитата:
Сообщение от Dimafania Посмотреть сообщение
Понятно, что интеграл можно заменить суммой произведения всех значений функции на шаг дискретизации, однако в моей случае существует проблема понимания того, как написать код в котором часть интеграла задается функцией, а вторая часть - суммой.
Ну... да, правильно - и при этом я напрочь не вижу проблем. Вот, расписал алгоритм:
iii.jpg
Программу сами напишете, или как?
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 19.05.2015, 13:44   #6 (permalink)
Dimafania
Member
 
Регистрация: 18.05.2015
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Большое вам спасибо, Владимир.
Программированием, по правде говоря, начал заниматься буквально пару дней назад, но программу постараюсь написать самостоятельно (в дальнейшем это, не сомневаюсь, пригодится). В случае если где-то опять встряну в тупик, то напишу вам.
За объем я буду брать единицу.
В приведенном вами алгоритме все понятно, лишь один момент попрошу прокомментировать:
Почему в итоговом интеграле в конце дельта w вы берете вычитанием (w[i+1]-w[i]) без деления на 2, а в функциях F и g идет суммирование с делением на 2? Судя по моей логике везде должна быть такая форма (w[i+1]-w[i])
Dimafania вне форума   Ответить с цитированием
Старый 19.05.2015, 16:26   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Dimafania Посмотреть сообщение
Большое вам спасибо, Владимир.
Программированием, по правде говоря, начал заниматься буквально пару дней назад, но программу постараюсь написать самостоятельно (в дальнейшем это, не сомневаюсь, пригодится). В случае если где-то опять встряну в тупик, то напишу вам.
За объем я буду брать единицу.
В приведенном вами алгоритме все понятно, лишь один момент попрошу прокомментировать:
Почему в итоговом интеграле в конце дельта w вы берете вычитанием (w[i+1]-w[i]) без деления на 2, а в функциях F и g идет суммирование с делением на 2? Судя по моей логике везде должна быть такая форма (w[i+1]-w[i])
Дык - геометрия требует. Площадь трапеции, знаете ли. Вот:
Миниатюры
iiii.jpg  
Vladimir_S вне форума   Ответить с цитированием
Старый 19.05.2015, 17:02   #8 (permalink)
Dimafania
Member
 
Регистрация: 18.05.2015
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо еще раз, Владимир. Ваша помощь бесценна)
Насчет аппроксимации я думал использовать не трапецию,а обычные прямоугольники (хотя понятно, что точность при этом будет ниже).
Dimafania вне форума   Ответить с цитированием
Старый 20.05.2015, 13:45   #9 (permalink)
Dimafania
Member
 
Регистрация: 18.05.2015
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Владимир, вынужден снова обратиться к вам за помощью.
К сожалению написанная мною программа выдает какую-то ерунду.
Ниже приведу вам текст, может быть вы увидите какую-нибудь глупость.
Перед тем как приведу вам текст, хочу обратить внимание, что файл я переименовал в Zr.txt, а также оставил там только значения g(w), удалив значения w. Значения хотел подсчитать от 1 до 10К (для начала). Текст программы:
program Specific_Heat;
const
dE : Comp = 0.033E12;
h : Comp = 6.582119E-16;
K : Real =8.6173324E-5;
var
t : text;
x:array [1..239] of real;
i, Tem, j :integer;
F,s,Ei : Comp;
begin
assign(t, 'Zr.txt');
reset(t);
i:=0;
while not eof (t) do
begin
i:=i+1;
readln(t,x[i]);
writeln(x[i]);
end;
s:=0;
for i:=1 to 239 do
begin
Ei:=0.730E12+(i*dE-dE/2);
F:=Ei*Ei/sqr((exp(h*Ei/2*K*Tem)-exp(-h*Ei/2*K*Tem))/2);
s:=s+F*x[i];
end;
s:=(dE*s*h*h)/(4*K*Tem*Tem);
j:=1;
for j:=1 to 10 do
begin
Tem:=j;
writeln(s);
end;
end.
Dimafania вне форума   Ответить с цитированием
Старый 20.05.2015, 13:57   #10 (permalink)
Dimafania
Member
 
Регистрация: 18.05.2015
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Comp изменил на Extended - не помогло...
Dimafania вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 08:44.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.