[问题]关于int积分问题

楼主: nago (低调的奢华!)   2016-09-02 23:03:07
大家好!
小弟我是matlab的新手,
最近在撰写程式过程中遇到一点问题,
曾试着先爬文或从相关教学书籍甚至google网站寻找解答,
但一直无法解决,
因此来PO文,希望有好心大大可以帮忙解惑!
其实我主要要求解的程式如下列网址
http://imgur.com/a/mval1
而我的程式码(M档案)如下:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [result,minimalvalue,Tvalue] = project20160901RFP(q)
format long g
T = 1:1:10 ;
Cp = 100 ;
Cf = 500 ;
result = zeros(1,length(T)) ;
for i = 1:length(T)
syms y x
result(1,i) = int(( ( Cp + int(fun3(x,q)*q*fun2(x),x,0,y) ) / y ) *
fun1(y,q) * fun5(y),y,0,T(i)) + ( ( Cp + int(fun3(x,q)*q*fun2(x),x,0,T(i)) )
/ T(i) ) * fun1(T(i),q) * fun6(T(i)) + int(( ( Cf +
int(fun3(x,q)*q*fun2(x),x,0,y) ) / y ) * fun6(y) * fun1(y,q) * (1-q) *
fun2(y),y,0,T(i)) ;
end
[minimalvalue, I] = min(result(:)) ;
[order] = ind2sub(size(result), I) ;
Tvalue = T(order) ;
function Fpbary = fun1(y,q)
syms t
Fpbary = exp( (-1) * int((1-q)*fun2(t),t,0,y) ) ;
function rofy = fun2(y)
beta = 2 ;
theta = 5 ;
rofy = (beta/theta)*((y/theta)^(beta-1)) ;
function hofy = fun3(y,q)
syms t
mean = 100 ;
sigma = 20 ;
cinf = 1000 ;
constant = 0.2 ;
delta = ( ( icdf('norm',(cdf('norm',0,mean,sigma) + q),mean,sigma) ) / cinf )
;
hofy = ( ((1/q)*int(t*fun4(t),t,0,delta*cinf)) + constant*y ) ;
function aoft = fun4(t)
mean = 100 ;
sigma = 20 ;
aoft = (1/(sigma*((2*pi)^(1/2))))*exp((-1)*((t-mean)^2)/(2*(sigma^2))) ;
function gofy = fun5(y)
k = 2 ;
lamda = 5 ;
gofy = ( k / (lamda^k) ) * ( y^(k-1) ) * exp(-1 * ( (y/lamda)^k ) ) ;
function Gbarofy = fun6(y)
k = 2 ;
lamda = 5 ;
Gbarofy = exp(-1 * ( (y/lamda)^k ) ) ;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
跑完程式后,会有计算出来的相关数值,也会有下列的讯息:
Warning: Explicit integral could not be found.
我知道这讯息的意思是积分无 close-form solution,但我的问题如下:
1. 这样的话 matlab所算出来的值是否正确?
(我知道可以徒手再去计算检验,但计算式真的不容易徒手去算)
2. 如果所算出来的值正确,那怎会出现上述Waring的讯息?
3. 承2.,如果算出来的值不正确,那我该如何修改此程式码?
我的程式码有点冗长,或许不易阅读,真的很不好意思!
希望有好心的大大愿意帮忙解惑,由衷感谢!
作者: sunev (Veritas)   2016-09-03 01:09:00
请不要用symbolic integration

Links booklink

Contact Us: admin [ a t ] ucptt.com