您的位置:首页 > 其它

求助一循环求解的问题,急

2009-12-19 11:23 113 查看
问题来源:http://www.ilovematlab.cn/thread-60022-1-1.html

问题描述:

http://hi.csdn.net/attachment/200912/19/37536_1261192846fTX3.png

Forcal求解代码:

//http://www.ilovematlab.cn/thread-60022-1-1.html
!SetRealStackMax(1000);
Rm(t,m_1:j,s,a,b,h:hVm)=
{
h=0.0001,
sys::call(2,hVm :t+h,m_1 : &a),  //计算s=Vm(t+h,m_1)
sys::call(2,hVm :t,m_1 : &b),    //计算s=Vm(t,m_1)
s=[a-b]/h,
j=0,(j<=m_1).while{
sys::call(2,hVm :t,j : &a), sys::call(2,hVm :t,m_1-j : &b),  //计算a=Vm(t,j),   b=Vm(t,m_1-j)
s=s+a*b,
j++
},
s-[1-which(m_1<1,0,1)] //最后返回这个值。看这句有没有问题:取m_1<1,而不是m_1<=1
};
//Fkappa将返回s的值。mm是模块变量,因调用Rm(t,mm-1)时mm将改变,故用a预先保存,函数返回前恢复mm的值
Fkappa(t:a,s,kappa:mm)= kappa=0, a=mm, s=t^(2*kappa)*Rm(t,mm-1), mm=a, s;
Vm(t,m:h,kappa:mm,hFkappa)=
{
h=-1, kappa=0,
if[m<=0,return(t)], if[m==1,return(1/3*h*t^3)],
which(m<=1,0,1)*Vm(t,m-1)+h*{mm=m, XSLSF::fpqg[hFkappa,0,t,1e-6]}  //XSLSF::fpqg即徐士良算法中的连分式积分法
};
main(t,m:k,s:hFkappa,hVm)=
{
hFkappa=HFor("Fkappa"), hVm=HFor("Vm"),  //预先获得函数Fkappa和Vm的句柄,函数调用时将用到
s=0,k=0,(k<=m).while{
s=s+Vm(t,k),
k++
},
s  //返回s
};
main[1,1];
main[1,2];
main[1,3];
main[3,1];
main[3,2];
main[3,3];


结果:

0.6666666666666667
0.8000500036352434
0.7460237331214614
-6.
26.4004500100092
-91.63284600184863
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: