QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 954|回复: 6
打印 上一主题 下一主题

线性/非线性方程(组)的MATLAB解法汇总

[复制链接]
字体大小: 正常 放大

2620

主题

162

听众

1万

积分

升级  0%

  • TA的每日心情
    开心
    2015-3-12 15:35
  • 签到天数: 207 天

    [LV.7]常住居民III

    社区QQ达人 发帖功臣 新人进步奖 优秀斑竹奖 金点子奖 原创写作奖 最具活力勋章 助人为乐奖 风雨历程奖

    群组第六届国赛赛前冲刺培

    群组国赛讨论

    群组2014美赛讨论

    群组2014研究生数学建模竞

    群组数学中国试看培训视频

    跳转到指定楼层
    1#
    发表于 2014-9-17 13:19 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    线性/非线性方程(组)的MATLAB解法汇总
    线性方程的MATLAB求解专题讲解,请参见http://www.madio.net/thread-223955-1-1.html
    1.roots求解多项式的根

    r=roots(c)
    注意:c为一维向量,者返回指定多项式的所有根(包括复根),poly和roots是互为反运算,还有就是roots只能求解多项式的解

    还有下面几个函数poly2sym、sym2poly、eig

    >>syms x
    >>y=x^5+3*x^3+3;
    >>c=sym2poly(y);%求解多项式系数
    >>r=roots(c);
    >>poly(r)

    2.residue求留数

    [r, p, k] = residue(b,a)
    >>b = [ 5 3 -2 7]
    >>a = [-4 0 8 3]
    >>[r, p, k] = residue(b,a)

    3.solve符号解方程(组)——使用最多的

    g = solve(eq1,eq2,...,eqn,var1,var2,...,varn)

    注意:eqn和varn可以是符号表达式,也可以是字符串表达式,但是使用符号表达式时不能有“=”号,假如说varn没有给出,使用findsym函数找出默认的求解变量。返回的g是一个结构体,以varn为字段。由于符号求解的局限性,好多情况下可能得到空矩阵,此时只能用数值解法

    解方程A=solve('a*x^2 + b*x + c')

    解方程组B=solve('a*u^2 + v^2', 'u - v = 1', 'a^2 - 5*a + 6')

    4.fzero数值求零点

    [x,fval,exitflag,output]=fzero(fun,x0,options,p1,p2...)

    fun是目标函数,可以是句柄(@)、inline函数或M文件名  
    x0是初值,可以是标量也可以是长度为2的向量,前者给定一个位置,后者是给定一个范围
    options是优化参数,通过optimset设置,optimget获取,一般使用默认的就可以了,具体参照帮助
    p1,p2...为需要传递的其它参数

    假如说(x/1446)^2+p/504.1+(t/330.9)*(log(1-x/1446)+(1-1/5.3)*x/1446)=0的根,其中p,t是已知参数,但是每次都改变

    那么目标函数如下三种书写格式,效果完全等效。注意参数列表中,未知数一定放第一位,其他参数放后面
    (1)objfun=@(x,p,t)(x/1446).^2+p/504.1+(t/330.9).*(log(1-x/1446)+(1-1/5.3).*x/1446);
    (2)objfun=inline('(x/1446).^2+p/504.1+(t/330.9).*(log(1-x/1446)+(1-1/5.3).*x/1446)','x','p','t')

    此时的调用格式如下
    fzero(objfun,x0,options,p,t)%如果options使用的默认的话,那直接使用[],p和t就是我们需要传递的参数
    fzero(@(x)objfun(x,p,t),x0,options)%这种格式与上面的等效
    区别就是前者,将参数p和t作为fzero的参数进行传递,而后者是将p和t作为objfun的参数进行传递,没有本质区别

    (3)function f=objfun(x,p,t)%以M文件格式书写目标函数
       f=(x/1446).^2+p/504.1+(t/330.9).*(log(1-x/1446)+(1-1/5.3).*x/1446);

    此时有三种调用格式
    fzero(@objfun,x0,options,p,t)
    fzero('objfun',x0,options,p,t)
    fzero(@(x)objfun(x,p,t),x0,options)

    注意:fzero只能求解单变量的方程,没法求解复数、多变量以及方程组等。在搜索过程中出现inf,nan,复数将会终止计算,也就是说不能求解复数解,并且每次子返回一个解

    5.fsolve数值解方程(组)——使用最多的数值解法

    [x,fval,exitflag,output,jacobian]=fsolve(fun,x0,options,p1,p2...)

    fsolve的参数意义大部分与fzero相同,只是优化参数更多了,使用更灵活另外一定注意x0的长度必须与变量的个数相等。它与fzero的区别是,首先当然算法不同,另外fsolve的功能强大多很多,它可以直接方便的求解多变量方程组,线性和非线性,超静定和静不定方程,还可求解复数方程

    fun同样可以是句柄、inline函数或M文件,但是一般M文件比较多,这是由于fsolve是解方程组的,目标函数一般比较烦,直接写比较困难

    比如解方程组x1+x2=8 x1-2*x2-2*p=0(当然可以求解非线性的)
    游客,如果您要查看本帖隐藏内容请回复

    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    鬼童子        

    0

    主题

    7

    听众

    85

    积分

    升级  84.21%

  • TA的每日心情
    无聊
    2014-9-22 19:52
  • 签到天数: 30 天

    [LV.5]常住居民I

    自我介绍

    群组数模专题强化培训

    群组建模思维养成培训

    回复

    使用道具 举报

    经典100 实名认证       

    1

    主题

    5

    听众

    46

    积分

    升级  43.16%

  • TA的每日心情
    奋斗
    2014-12-14 19:19
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    回复

    使用道具 举报

    深V礼        

    246

    主题

    24

    听众

    8718

    积分

  • TA的每日心情
    慵懒
    2014-11-8 19:08
  • 签到天数: 55 天

    [LV.5]常住居民I

    管理员

    超级版主

    版主

    发帖功臣 新人进步奖 优秀斑竹奖 金点子奖 原创写作奖 最具活力勋章 助人为乐奖 风雨历程奖

    回复

    使用道具 举报

    377

    主题

    148

    听众

    5936

    积分

    升级  18.72%

  • TA的每日心情
    奋斗
    2016-7-14 13:54
  • 签到天数: 219 天

    [LV.7]常住居民III

    社区QQ达人 元老勋章 发帖功臣 新人进步奖 优秀斑竹奖 金点子奖 原创写作奖 最具活力勋章 助人为乐奖 风雨历程奖

    群组2015年美赛冲刺

    群组高等数学串讲

    群组2014第三期英语写作

    群组SAS数据分析大赛冲刺

    群组2015美赛优秀论文解析

    回复

    使用道具 举报

    0

    主题

    4

    听众

    53

    积分

    升级  50.53%

  • TA的每日心情
    奋斗
    2014-9-21 13:23
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    回复

    使用道具 举报

    0

    主题

    4

    听众

    53

    积分

    升级  50.53%

  • TA的每日心情
    奋斗
    2014-9-21 13:23
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-5-23 00:09 , Processed in 0.566784 second(s), 85 queries .

    回顶部