24小时热门版块排行榜    

查看: 461  |  回复: 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能看出啥? +4 要乐观耀哥 2026-08-10 8/400 2026-08-10 15:02 by 天神眷顾
[基金申请] 应该是93bebmhtak前后十一个字符比较关键 +14 Lanmanbaby 2026-08-09 22/1100 2026-08-10 14:57 by wwncly
[基金申请] 奇怪,两个人的filecode固定段从头到尾一模一样 +4 布布和一二 2026-08-10 4/200 2026-08-10 14:50 by 医学老男孩
[基金申请] 我的国基提前知道中了,可是同事的操作让我实在接受不了,怎么会有这样的人 +6 家与远方 2026-08-10 9/450 2026-08-10 14:29 by 爱看书的可乐
[基金申请] 综述论文作为代表作会不会影响评审专家的印象分? +10 yufeiwaner 2026-08-09 10/500 2026-08-10 13:44 by cdutwml
[基金申请] 据悉今年马上要出结果了 +7 瞬息宇宙 2026-08-10 8/400 2026-08-10 12:42 by Vivilian
[基金申请] 关于代码变化问题,想知道的进来 +16 且听虎啸 2026-08-07 23/1150 2026-08-10 12:35 by majunge000
[基金申请] 这样的filecode谁见过 +11 布布和一二 2026-08-08 22/1100 2026-08-10 11:10 by wmfsnow
[基金申请] 面上项目filecode邪修 +5 西山十月 2026-08-09 7/350 2026-08-10 07:32 by 仁砚薪传
[基金申请] filecode与中标关系的预测 +5 布布和一二 2026-08-07 5/250 2026-08-09 16:15 by 袁向阳007
[基金申请] fileCode有新解读? +10 Tide man 2026-08-08 18/900 2026-08-09 12:55 by 仁砚薪传
[基金申请] 国基金的申报应该改成非等额制,评价高的钱多评价低的钱少,但是增加资助率 +7 a089 2026-08-07 7/350 2026-08-08 18:05 by gltch
[基金申请] 基金中了 +14 laoda193707 2026-08-06 14/700 2026-08-08 00:23 by 实验小白ha
[基金申请] 关于filecode +4 布布和一二 2026-08-07 7/350 2026-08-07 22:55 by zhanghaozhu
[基金申请] 娱乐 +6 Tide man 2026-08-03 6/300 2026-08-07 22:40 by 铁帽子农民
[基金申请] 大家散了吧,后缀研究没有意义,别浪费时间了,过好目前的每一天,不要焦虑 +5 Tide man 2026-08-06 7/350 2026-08-07 13:11 by 医学老男孩
[基金申请] 求各位大神看下 100+6 hpkpkpkp 2026-08-05 33/1650 2026-08-06 14:49 by zhiyanjiang
[基金申请] 影响面上的因素 +8 布布和一二 2026-08-05 11/550 2026-08-06 10:41 by 宝贝虫子
[基金申请] 好消息?这个有何含义??? +8 Tide man 2026-08-05 10/500 2026-08-05 16:14 by xmuxiaoyu
[基金申请] 纯娱乐,不喜欢勿喷 +7 Tide man 2026-08-04 10/500 2026-08-04 15:10 by loufangrui
信息提示
请填处理意见