18.05.2015, 18:17 | #1 (permalink) |
Member
Регистрация: 18.05.2015
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Интеграл и график в любой версии Pascal, Maple. Что-либо другое
|
18.05.2015, 18:17 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Разумеется, на нашем форуме так же нашлись и похожие темы Помогите найти интеграл и задачу коши операционным методом Виснет комп при запуске чего либо Подвержены ли вы каким-либо фобиям? Как задать число pi, e , определенный интеграл? |
18.05.2015, 19:17 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Ну а пока - сочувствуем. Душой с Вами. |
|
18.05.2015, 21:13 | #3 (permalink) | |
Member
Регистрация: 18.05.2015
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
Спасибо за ваш ответ. К своему сообщению прикладываю два файла. В первом приведена формула с интегралом, во втором приведены значения функции g(w). Могу привести вам значения различных констант из формулы (как например постоянная Больцмана Кв), но поскольку меня больше интересует алгоритм, а вам данные значения интереса не представляют (вы можете их заменить единицей например), приводить их, с вашего разрешения, не буду. Суть задачи заключается в следующем. В прикрепленном файле .txt находятся значения плотности фононных состояний g(w), или, иными словами, количество фононов обладающих определенной энергией. Используя данную плотность состояния можно определить теплоемкость материала. Формула связи приведена на рисунке. Граничными значениями w являются соответственно граничные значения файла (w0 = 0.730, wmax = 8.487). Последовательно подставляя различные значения температуры Т можно получить график теплоемкости, либо просто набор значений. Если бы функция g(w) задавалась бы какой-нибудь функцией, то проблем бы не возникло. Однако в моей случае это набор значений. Понятно, что интеграл можно заменить суммой произведения всех значений функции на шаг дискретизации, однако в моей случае существует проблема понимания того, как написать код в котором часть интеграла задается функцией, а вторая часть - суммой. |
|
19.05.2015, 10:49 | #5 (permalink) | ||
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Да не за что.
Цитата:
Цитата:
Программу сами напишете, или как? |
||
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
19.05.2015, 13:44 | #6 (permalink) |
Member
Регистрация: 18.05.2015
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Большое вам спасибо, Владимир.
Программированием, по правде говоря, начал заниматься буквально пару дней назад, но программу постараюсь написать самостоятельно (в дальнейшем это, не сомневаюсь, пригодится). В случае если где-то опять встряну в тупик, то напишу вам. За объем я буду брать единицу. В приведенном вами алгоритме все понятно, лишь один момент попрошу прокомментировать: Почему в итоговом интеграле в конце дельта w вы берете вычитанием (w[i+1]-w[i]) без деления на 2, а в функциях F и g идет суммирование с делением на 2? Судя по моей логике везде должна быть такая форма (w[i+1]-w[i]) |
19.05.2015, 16:26 | #7 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
|
|
19.05.2015, 17:02 | #8 (permalink) |
Member
Регистрация: 18.05.2015
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Спасибо еще раз, Владимир. Ваша помощь бесценна)
Насчет аппроксимации я думал использовать не трапецию,а обычные прямоугольники (хотя понятно, что точность при этом будет ниже). |
20.05.2015, 13:45 | #9 (permalink) |
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. |
20.05.2015, 13:57 | #10 (permalink) |
Member
Регистрация: 18.05.2015
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Comp изменил на Extended - не помогло...
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|