| 查看: 2854 | 回复: 14 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
[求助]
MATLAB求解一个比较复杂的方程
|
|||
|
a/(1.0+exp(-b*(0.003-c)))-a/(1.0+exp(b*c))=1.460; a/(1.0+exp(-b*(0.012-c)))-a/(1.0+exp(b*c))=4.388; a/(1.0+exp(-b*(0.030-c)))-a/(1.0+exp(b*c))=5.455; 有谁知道上面的三个方程怎么解,初学MATLAB,还不会求解这种方程,谁能指导下我,谢谢~ 实际我是想用一个函数去拟合我的三个点。最后转化成上面的求解。 |
» 本帖已获得的红花(最新10朵)
» 猜你喜欢
三无产品还有机会吗
已经有4人回复
投稿返修后收到这样的回复,还有希望吗
已经有7人回复
压汞仪和BET测气凝胶孔隙率
已经有4人回复
博士申请都是内定的吗?
已经有14人回复
谈谈两天一夜的“延安行”
已经有13人回复
氨基封端PDMS和HDI反应快速固化
已经有11人回复
之前让一硕士生水了7个发明专利,现在这7个获批发明专利的维护费可从哪儿支出哈?
已经有11人回复
论文投稿求助
已经有4人回复
Applied Surface Science 这个期刊。有哪位虫友投过的能把word模板发给我参考一下嘛
已经有3人回复
投稿精细化工
已经有6人回复
|
请问这样的问题怎么解决呀?谢谢 函数是: function f=myhs1(x) f=[(2*x(1)+3*x(2)+x(3))^2*(x(1)+x(2)-x(3))/((0.4125-x(1)-x(2))*(0.21*0.825-0.5*x(1))^0.5*(1.65+1.5*x(1)+2*x(2))^1.5)-3.389*exp(11);(2*x(1)+3*x(2)+x(3))^3*(x(1)+x(2)-x(3))/((0.4125-x(1)-x(2))*(0.4125-x(2)-x(3))*(1.65+1.5*x(1)+2*x(2))^2)-1.155;(2*x(1)+3*x(2)+x(3))*x(3)/((x(1)+x(2)-x(3))*(0.4125-x(2)-x(3)))-8.469]; 运行如下: >> x0=[0.1 0.1 0.1]; >> [r,val]=fsolve(@myhs1,x0,opt) 结果为: Solver stopped prematurely. r = 0.3465 0.0658 0.2101 val = 1.0e+003 * 0.4843 1.8293 -0.0001 我试了好多组初值都不行,要么出现上面的情况,要么是“No solution found.” 请问这是怎么回事呀?还是哪儿出问题了? 不胜感激! |

14楼2011-12-19 22:01:00
snowwinter10
木虫 (正式写手)
- 应助: 1 (幼儿园)
- 金币: 4180.3
- 散金: 2012
- 红花: 1
- 帖子: 607
- 在线: 155.6小时
- 虫号: 930945
- 注册: 2009-12-20
- 性别: GG
- 专业: 教学论
★ ★
xiegangmai(金币+2): 谢谢参与!鼓励讨论交流! 2011-06-30 11:04:10
xiegangmai(金币+2): 谢谢参与!鼓励讨论交流! 2011-06-30 11:04:10
|
试着写了一下,但是求解的结果很奇怪,不知道是数值参数还是方法的问题。希望有所参考价值。本人对matlab也是新手,我用的是非线性方程组求解函数solve,源码和结果如下。 clc clear all s1='a/(1.0+exp(-b*(0.003-c)))-a/(1.0+exp(b*c))=1.460'; s2='a/(1.0+exp(-b*(0.012-c)))-a/(1.0+exp(b*c))=4.388'; s3='a/(1.0+exp(-b*(0.030-c)))-a/(1.0+exp(b*c))=5.455'; [a b c]=solve(s1,s2,s3) 结果 a = 0. -0. b = (NaN)+(NaN)*i (NaN)+(NaN)*i c = (NaN)+(NaN)*i (NaN)+(NaN)*i |
2楼2011-06-30 10:53:22
【答案】应助回帖
★ ★ ★ ★ ★
臭水沟(金币+5): 谢谢应助~~ 2011-07-01 19:55:02
臭水沟(金币+5): 谢谢应助~~ 2011-07-01 19:55:02
|
尝试了一下用符号求解,找不到解析解。 得到: Warning: Explicit solution could not be found. > In solve at 81 ans = [ empty sym ] 改用数值解: (1)先写方程函数: (2)在命令窗口输入: 得到: Solver stopped prematurely. fsolve stopped because it exceeded the function evaluation limit, options.MaxFunEvals = 300 (the default value). X = 6.1816 5.8800 0.0390 Fval = -1.4331 -4.2800 -5.1839 exitflag = 0 求解失败。 可能方程组非线性太强了。 [ Last edited by xiegangmai on 2011-6-30 at 11:11 ] |

3楼2011-06-30 11:03:09
【答案】应助回帖
★ ★
cyzhixue(金币+10): 真的是太感谢你了。。崇拜中。。真的和我的点拟合的一模一样啊。 2011-06-30 17:21:47
臭水沟(金币+2): 谢谢应助~~ 2011-07-01 19:55:13
cyzhixue(金币+10): 真的是太感谢你了。。崇拜中。。真的和我的点拟合的一模一样啊。 2011-06-30 17:21:47
臭水沟(金币+2): 谢谢应助~~ 2011-07-01 19:55:13
|
呵呵,应该可以了,换用'levenberg-marquardt'算法,增加迭代次数。 用fsolve求解,初值选取有很大关系,当初值选为[ 100; 100; 0 ]时, [ X, Fval, exitflag ] = fsolve( @cyzhixue, [ 100; 100; 0 ], options ) 所得结果: X = 10.8784 182.8811 0.0001 Fval = 1.0e-009 * -0.1962 -0.2380 0.0061 exitflag = 1 应该能满足精度要求了。 |

4楼2011-06-30 11:15:59













回复此楼
lylpiao