全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
1697 2
2014-06-05
gs.png 现在有个定积分的隐函数求解,r为积分变量,a=0.99,b=5,pe=10,pw=4,rw=0.1,re=100,要求pe*,请教各位高手matlab 的fsolve 可以直接求解吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-6-6 07:37:28
为什么要用fsolve那么复杂?这个积分可以自己手算的诶……

把所有p和r带下标的玩意统统视为常数,也就是被积分函数是
\[\frac{2b - ar + r + \sqrt{ar - r - C + 4abrD}}{2br}\]
然后,将分子拆开,从而变成
\[\frac{1}{r} + \frac{1 - a}{2b} + \frac{\sqrt{(a - 1 + 4abD) r - C}}{2br}\]
前两项都可以求出积分来,下面考虑第三项

那么记常数\[\\k = a - 1 + 4 abD\\\],并做变量代换得\[\\t = \sqrt{(a - 1 + 4abD)r - C}\\\]
因此
\[r = \frac{t^2 + C}{k}\]
\[dr = 2ktdt\]
上面被积函数第三项变成\[\int 2k^2 \frac{t^3}{t^2 + C} dt\]
这个积分你要是算不出我也没办法了……

BTW,有时候多算一点,matlab毕竟是数值运算,直接解误差一般比较大~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-6-6 07:52:17
非常感谢!你这个处理方法对我的文章非常有借鉴之处!我准备使用!!
程序昨晚做出来了
function ff=djf(p1)
pe=10;pw=4;la=0.001;lc=0.2;a=(la-lc)/la;b=1/la;re=100;rw=0.1;

  g=@(r,p1)((2*b-a*r+r+sqrt((a*r-r-b*(p1-pw)/log(re/rw)).^2+4*a*b*r*(p1-pw)/log(re/rw)))./(2*b*r));
   ff=pe-pw-quadl(@(r)g(r,p1),0.1,100);
end

   
   

%主程序调用文件
% [x,feval]=fsolve(@djf,6,optimset('Display','off','TolX',1e-8,'TolFun',1e-8))
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群