| 查看: 3482 | 回复: 19 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
[求助]
求助!matlab用fsolve函数求解非线性方程组的问题!
|
|||
|
我要用fsolve函数求解一个非线性方程组,程序代码如下: function p=fsolveDemon1 x0=unifrnd(0.1,0.1); options=optimset('MaxFunEvals',20000,'MaxIter',2000); p=fsolve(@f,x0,options); function F=f(x) syms I1 I2 F=[I1*x(1)^2*(3*x(3)*(x(1)^2+x(3)^2)^(-7/2)-7*x(3)^3*(x(1)^2+x(3)^2)^(-9/2))+I2*x(2)^2*(3*x(3)*(x(2)^2+x(3)^2)^(-7/2)-7*x(3)^3*(x(2)^2+x(3)^2)^(-9/2)); I1*x(1)^2*(-5*x(3)*(x(1)^2+x(3)^2)^(-9/2)+30*x(3)^3*(x(1)^2+x(3)^2)^(-11/2)-33*x(3)^5*(x(1)^2+x(3)^2)^(-13/2))+I2*x(2)^2*(-5*x(3)*(x(2)^2+x(3)^2)^(-9/2)+30*x(3)^3*(x(2)^2+x(3)^2)^(-11/2)-33*x(3)^5*(x(2)^2+x(3)^2)^(-13/2)); I1*x(1)^2*(35*x(3)*(x(1)^2+x(3)^2)^(-11/2)-385*x(3)^3*(x(1)^2+x(3)^2)^(-13/2)+1001*x(3)^5*(x(1)^2+x(3)^2)^(-15/2)-715*x(3)^7*(x(1)^2+x(3)^2)^(-17/2))+I2*x(2)^2*(35*x(3)*(x(2)^2+x(3)^2)^(-11/2)-385*x(3)^3*(x(2)^2+x(3)^2)^(-13/2)+1001*x(3)^5*(x(2)^2+x(3)^2)^(-15/2)-715*x(3)^7*(x(2)^2+x(3)^2)^(-17/2))]; end end 可是运行总是出现错误,请求各位高手帮帮我,我刚开始学习matlab,发现这个论坛特别好,刚刚注册,还没有太多的金币送给大家!不胜感激!!! |
» 本帖已获得的红花(最新10朵)
» 猜你喜欢
国社科系统bug了,是不是要放榜了?
已经有10人回复
现代”学阀”该如何界定
已经有9人回复
课题组招2027级博士 上海工程技术大学 激光智能制造方向
已经有4人回复
上海工程技术大学 激光智能制造课题组 2027级博士研究生招生
已经有3人回复
实名举报:华南理工大学物理与光电学院副院长李志远婚内两次出轨女学生(博士)
已经有16人回复
上海工程技术大学激光智能制造课题组|2027级博士研究生招生公告
已经有11人回复
上海工程技术大学激光智能制造课题组招收博士研究生
已经有10人回复
申博发邮件
已经有11人回复
各位大神,目前国内有哪些比较好用的逆合成软件?
已经有12人回复
我的奶奶
已经有3人回复
Bruce_lee
铜虫 (著名写手)
- 应助: 5 (幼儿园)
- 金币: 2632.7
- 散金: 424
- 红花: 4
- 帖子: 1277
- 在线: 317小时
- 虫号: 948103
- 注册: 2010-01-25
- 性别: GG
- 专业: 聚合物共混与复合材料
【答案】应助回帖
★ ★
xiegangmai: 金币+2, 谢谢参与! 2013-03-25 23:02:38
xiegangmai: 金币+2, 谢谢参与! 2013-03-25 23:02:38
|
function F = fsolveDemon1(x,I) %FUN Summary of this function goes here % Detailed explanation goes here F=[I(1).*x(1).^2.*(3*x(3).*(x(1).^2+x(3).^2).^(-7/2)-7*x(3).^3*(x(1).^2+x(3).^2).^(-9/2))+I(2).*x(2).^2.*(3*x(3).*(x(2).^2+x(3).^2).^(-7/2)-7*x(3).^3.*(x(2).^2+x(3).^2).^(-9/2)) I(1).*x(1).^2*(-5*x(3).*(x(1).^2+x(3).^2).^(-9/2)+30*x(3).^3.*(x(1).^2+x(3).^2).^(-11/2)-33*x(3).^5.*(x(1).^2+x(3).^2).^(-13/2))+I(2).*x(2).^2.*(-5*x(3).*(x(2).^2+x(3).^2).^(-9/2)+30*x(3).^3.*(x(2).^2+x(3).^2).^(-11/2)-33*x(3).^5.*(x(2).^2+x(3).^2).^(-13/2)) I(1).*x(1).^2.*(35*x(3).*(x(1).^2+x(3).^2).^(-11/2)-385*x(3).^3.*(x(1).^2+x(3).^2).^(-13/2)+1001*x(3).^5.*(x(1).^2+x(3).^2).^(-15/2)-715*x(3).^7.*(x(1).^2+x(3).^2).^(-17/2))+I(2).*x(2).^2.*(35*x(3).*(x(2).^2+x(3).^2).^(-11/2)-385*x(3).^3.*(x(2).^2+x(3).^2).^(-13/2)+1001*x(3).^5.*(x(2).^2+x(3).^2).^(-15/2)-715*x(3).^7.*(x(2).^2+x(3).^2).^(-17/2))]; end 这是第一个函数。将其保存成fsolveDemon1.m文件。 function fsolveDemon2 x0=[0.1,0.1,0.1]; % x0中元素的个数与方程中x个数对应相等,这里取都取0.1,也可自己修改。 options=optimset('MaxFunEvals',20000,'MaxIter',2000); I=[1,2]; % 向量I有两个值元素。这里权且取值1和2,自己可改成需要的数值。 X=fsolve(@(x)fsolveDemon1(x,I),x0,options); for i=1:50 %迭代次数50次,可以自己修改。 [X,fval,exitflag]=fsolve(@(x)fsolveDemon1(x,I),X,options); end clc; X=vpa(X,8) %显示8为数字结果,如果想多显示几位或少显示几位,可以自己修改数值。 fval exitflag end 这是第二个函数。将其保存成fsolveDemon2.m文件。 使用时先将两个文件拷贝到matlab能够调用的指定文件夹中,然后在命令窗口输入fsolveDemon2,回车即可。 结果中fval的值如果趋近于0,并且同时exitflag=1,这说明X就是所要求的解。 |

20楼2013-03-25 01:03:25
2楼2012-05-07 20:49:56
jinpeng_6118
木虫 (正式写手)
- 应助: 28 (小学生)
- 金币: 5027
- 散金: 25
- 红花: 2
- 帖子: 856
- 在线: 147.9小时
- 虫号: 1019189
- 注册: 2010-05-15
- 性别: GG
- 专业: 微生物遗传学

3楼2012-05-08 16:01:50
4楼2012-05-08 17:15:11










回复此楼
521438