| 查看: 398 | 回复: 2 | |||
| 【奖励】 本帖被评价1次,作者fspdlh增加金币 0.5 个 | |||
| 当前主题已经存档。 | |||
[资源]
【原创】二分法求解多解方程
|
|||
|
看到小木虫里有些人问过求方程某个区间内解的问题,在此,发一个自编的原代码供大家用 参数中fun为方程的字符串,a,b和d分别为搜索解的初值终值和最小区间,tol为精度,如果大家发现程序有什么问题,回帖讨论交流,谢谢。 function x=solvefun(fun,a,b,d,tol) %-------------------------------------------------------------------------- fun=inline(fun); %-------------------------------------------------------------------------- range=a:d:b; if range(end) range=[range,b]; end n=length(range); temp=zeros(1,n); for i=1:n temp(i)=fun(range(i)); end x0=temp(find(temp==0))'; tag=[abs(diff(sign(temp))) 0]; range=range(find(tag==2))'; range=[range range+1]; %-------------------------------------------------------------------------- n=size(range,1); tol=tol/10; x=zeros(n,1); for i=1:n xmin=range(i,1); xmax=range(i,2); xcur=(xmin+xmax)/2; while xmax-xmin>tol if sign(fun(xmin))*sign(fun(xcur))>0 xmin=xcur; else xmax=xcur; end xcur=(xmin+xmax)/2; end x(i)=xcur; end %-------------------------------------------------------------------------- x=sort([x;x0]); [ Last edited by fspdlh on 2009-5-7 at 08:33 ] |
» 猜你喜欢
有没有人能给点建议
已经有5人回复
假如你的研究生提出不合理要求
已经有12人回复
实验室接单子
已经有7人回复
全日制(定向)博士
已经有5人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
参与限项
已经有3人回复
对氯苯硼酸纯化
已经有3人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
应用实例
|
求解正弦函数 >> solvefun('sin(x)',-30,30,1,1e-5) ans = -28.2743 -25.1327 -21.9911 -18.8496 -15.7080 -12.5664 -9.4248 -6.2832 -3.1416 0 3.1416 6.2832 9.4248 12.5664 15.7080 18.8496 21.9911 25.1327 28.2743 问题来源:http://muchong.com/bbs/viewthread.php?tid=1251344 >> solvefun('x.*bessel(1,x)-bessel(0,x)',0,100,1,1e-5) ans = 1.2558 4.0795 7.1558 10.2710 13.3984 16.5312 19.6667 22.8040 25.9422 29.0812 32.2207 35.3606 38.5007 41.6411 44.7817 47.9223 51.0631 54.2040 57.3450 60.4860 63.6271 66.7682 69.9094 73.0506 76.1918 79.3331 82.4744 85.6157 88.7570 91.8984 95.0398 98.1811 问题来源:http://muchong.com/bbs/viewthread.php?tid=1313419 >> solvefun('cos(x)*cosh(x)-1',0,100,1,1e-5) ans = 0 4.7300 7.8532 10.9956 14.1372 17.2788 20.4204 23.5619 26.7035 29.8451 32.9867 36.1283 39.2699 42.4115 45.5531 48.6947 51.8363 54.9779 58.1195 61.2611 64.4026 67.5442 70.6858 73.8274 76.9690 80.1106 83.2522 86.3938 89.5354 92.6770 95.8186 98.9602 [ Last edited by fspdlh on 2009-5-7 at 08:38 ] |
2楼2009-05-07 08:34:59
3楼2009-05-08 22:43:53












回复此楼
