24小时热门版块排行榜    

查看: 467  |  回复: 2
【奖励】 本帖被评价1次,作者fspdlh增加金币 0.5
当前主题已经存档。

fspdlh

金虫 (正式写手)


[资源] 【原创】二分法求解多解方程

看到小木虫里有些人问过求方程某个区间内解的问题,在此,发一个自编的原代码供大家用
参数中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 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fspdlh

金虫 (正式写手)


应用实例

求解正弦函数

>> 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
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shinevip

木虫 (正式写手)


★★★ 三星级,支持鼓励

лл
3楼2009-05-08 22:43:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 fspdlh 的主题更新
☆ 无星级 ★ 一星级 ★★★ 三星级 ★★★★★ 五星级
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] FileCode能看出啥? +7 要乐观耀哥 2026-08-10 19/950 2026-08-12 10:55 by 要乐观耀哥
[基金申请] 2019年青年基金涵评意见,大家看看几个A,几个B? +5 Tide man 2026-08-11 5/250 2026-08-12 09:24 by kangban
[论文投稿] 职称评审,求友友推荐见刊最快的期刊 +4 工厂打螺丝 2026-08-08 4/200 2026-08-12 09:18 by hansi2025
[基金申请] 奇怪,两个人的filecode固定段从头到尾一模一样 +7 布布和一二 2026-08-10 10/500 2026-08-12 09:12 by 布布和一二
[基金申请] 帮忙看看fileCode +7 wwncly 2026-08-10 13/650 2026-08-11 19:36 by 冰心玉壶晴
[基金申请] 为什么网上很多人说本周 12号出结果 +6 瞬息宇宙 2026-08-10 7/350 2026-08-11 19:25 by Tide man
[硕博家园] 读博的好处 +3 lnee 2026-08-11 3/150 2026-08-11 18:10 by 希望我好好的
[基金申请] 听说今天filecode变了 +26 布布和一二 2026-08-06 49/2450 2026-08-11 13:18 by WH3796
[基金申请] 我的国基提前知道中了,可是同事的操作让我实在接受不了,怎么会有这样的人 +8 家与远方 2026-08-10 13/650 2026-08-11 09:49 by 家与远方
[基金申请] 关于代码变化问题,想知道的进来 +17 且听虎啸 2026-08-07 24/1200 2026-08-10 18:35 by zhangduo2008
[基金申请] 静等基金结果 +5 gjjjzhong 2026-08-10 16/800 2026-08-10 17:19 by Tide man
[基金申请] 国自然结果 +4 Vierhys 2026-08-10 8/400 2026-08-10 15:06 by Vierhys
[基金申请] 2026国自然放榜时间 +9 布布和一二 2026-08-08 9/450 2026-08-10 11:22 by xxxx2020
[基金申请] 这样的filecode谁见过 +11 布布和一二 2026-08-08 22/1100 2026-08-10 11:10 by wmfsnow
[基金申请] fileCode有新解读? +10 Tide man 2026-08-08 18/900 2026-08-09 12:55 by 仁砚薪传
[基金申请] 关于filecode,很负责任的告诉大家 +6 爱看书的可乐 2026-08-08 7/350 2026-08-08 22:13 by a_niu
[基金申请] 关于filecode +4 布布和一二 2026-08-07 7/350 2026-08-07 22:55 by zhanghaozhu
[基金申请] filecode变化情况 +6 布布和一二 2026-08-07 22/1100 2026-08-07 14:45 by 且听虎啸
[基金申请] filecode +14 等待解的谜 2026-08-06 19/950 2026-08-07 12:20 by wlwhappy
[基金申请] filecode +8 布布和一二 2026-08-06 11/550 2026-08-06 20:41 by tangpu318
信息提示
请填处理意见