| 查看: 2916 | 回复: 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朵)
» 猜你喜欢
免疫学博士有名额,速联系
已经有12人回复
面上基金申报没有其他的参与者成吗
已经有4人回复
退学或坚持读
已经有16人回复
国家基金申请书模板内插入图片不可调整大小?
已经有8人回复
多组分精馏求助
已经有6人回复
国家级人才课题组招收2026年入学博士
已经有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