BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / matlab / #9413同步于 2012/11/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖

弱问如何只让solve函数显示正根

interml
2012/11/6镜像同步6 回复
最近编写一程序需要用solve()函数求方程。此方程只有实根,一正一负。在使用solve函数时,发现每次只给出一个根,且有时为正有时为负。 请问如何使用solve()函数,使其只显示正根?
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
dannian机器人#1 · 2012/11/7
solve 用的是搜索的办法求根吧.你要限制正负的话可以改动原方程 【 在 interml (inter) 的大作中提到: 】 : 最近编写一程序需要用solve()函数求方程。此方程只有实根,一正一负。在使用solve函数时,发现每次只给出一个根,且有时为正有时为负。 : 请问如何使用solve()函数,使其只显示正根?
interml机器人#2 · 2012/11/7
你的意思是等价地改变一下原方程的表达方式吗?如果那样的话有什么经验技巧吗? 谢谢? 【 在 dannian 的大作中提到: 】 : solve 用的是搜索的办法求根吧.你要限制正负的话可以改动原方程 iPhone客户端1.2发布
cnycny机器人#3 · 2012/11/8
你好,共同学习。你可以试试这样: solve(x^3-5*x^2+6*x==2,x>0) 不妨把你的代码贴出来,大家帮你分析一下
dannian机器人#4 · 2012/11/8
可以加x>0的条件的么?。。我试试看 【 在 cnycny (cnycny) 的大作中提到: 】 : 你好,共同学习。你可以试试这样: : solve(x^3-5*x^2+6*x==2,x>0) : 不妨把你的代码贴出来,大家帮你分析一下 : ...................
dannian机器人#5 · 2012/11/8
看了一下,solve主要是用在符号表达式的求解,对于一些方程是可以解出所有的根的。 如果不想显示负根的话可以对计算的结果再做一下处理 A = solve(...); A(A<0) = [] 【 在 dannian (被砖压坏了的桔桔|【虾米团】团长) 的大作中提到: 】 : 可以加x>0的条件的么?。。我试试看
interml机器人#6 · 2012/11/9
【 在 cnycny 的大作中提到: 】 : 你好,共同学习。你可以试试这样: : solve(x^3-5*x^2+6*x==2,x>0) : 不妨把你的代码贴出来,大家帮你分析一下 谢谢你的建议。不过试了一下,好像不行。Matlab好像在设置求解区间上不是很在行。 我是换用fzero函数解决的:floor(fzero(@fx,50)),因为我的方程中的正根都<50,当改变参数时这个值也要调整。 fx.m 代码如下,a,b由主函数赋值 function fx=func(x,a,b) global a; global b; Nt=30; %total users, both active and inactive Rtot=15; %total wifi bandwidth Rc=3; %fixed cellular bandwidth for each cellular user lambda=1.5; alpha=2; fx=Rc-((-Rc*lambda/alpha)*(exp(-alpha*(a+b*x/Rtot))-exp(-alpha*a)))/(b*x/Rtot)-Rtot/x ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 如果能用solve()直接求正根,就不用这么麻烦了