# 7 麦片

050

2主题 0最佳答案
 本帖最后由 李梦博1234 于 2018-12-6 11:09 编辑 非线性方程组，使用fsolve求解时一直不收敛，所以采用牛顿迭代法计算，但是计算时间太长了，程序是论坛里的，如下：function [r,m]=mulModifNewton(F,x0,h,eps) format long; if nargin==3 eps=1.0e-4; end n = length(x0); fx = subs(F,findsym(F),x0); J = zeros(n,n); for i=1:n x1 = x0; x1(i) = x1(i)+h(i); J(:,i) = (subs(F,findsym(F),x1)-fx)/h(i); end r=transpose(x0)-inv(J)*fx; m=1; tol=1; while tol>eps xs=r; fx = subs(F,findsym(F),xs); J = zeros(n,n); h = fx; for i=1:n x1 = xs; x1(i) = x1(i)+h(i); J(:,i) = (subs(F,findsym(F),x1)-fx)/h(i); end r=xs-inv(J)*fx; %核心迭代公式 tol=norm(r-xs); m=m+1; if(m>100000) %迭代步数控制 disp('迭代步数太多，可能不收敛！'); return; end end format short;复制代码 方程及运行程序为： syms Ga T1 T3 T5 lamd w Qh z = [(1-Ga/500)^(-2)*log((Ga*(T3-306))/(Ga*(T3-303)-1500))+(1/Ga-1/500)^(-1)*(1/Ga-(T3-303)/(Ga*(T3-303)-1500))-(Ga/400-1)^(-2)*log((Ga*(293-T1))/(Ga*(295.5-T1)+1000))+(1/400-1/Ga)^(-1)*lamd*(T1/(Ga*T1-1000)-(T1+T3-T5)/(Ga*(T1+T3-T5)-1500))+w*(T3-T5); -(1/400-1/Ga)^(-1)*(-Ga/(Ga*(295.5-T1)+1000)+1/(293-T1))+(Ga*(T3-T5)-1500)/(T5-T1)^2+lamd*Ga*(1/(Ga*T1-1000)-1/(Ga*(T1+T3-T5)-1500))+w*10; (1/Ga-1/500)^(-1)*(1/(T3-306)-Ga/(Ga*(T3-303)-1500))+Ga/(T5-T1)-lamd*(Ga/(Ga*(T1+T3-T5)-1500)-1/T3)+w*Ga; (Ga*(T1-T3)+1500)/(T5-T1)^2+lamd*(-1/T5+Ga/(Ga*(T3+T1-T5)-1500))-w*(Ga+10); Ga*(T3-T5)-1500-10*(T5-T1); log((Ga*T1-1000)/T5)-log((Ga*(T1+T3-T5)-1500)/T3)]; [r,m] = mulModifNewton(z,([1 2 3 4 5 6]),[0.1 0.1 0.1 0.1 0.1 0.1])复制代码六个方程组，使用fsolve一直不收敛，exitflag=0。我使用MATLAB2017a，电脑四核8G运存。 还请各位大神帮忙看看，万分感谢！

# 7 麦片

050

2主题 0最佳答案
楼主| 发表于 4 天前 | 显示全部楼层
 function [r,m]=mulModifNewton(F,x0,h,eps) format long; if nargin==3 eps=1.0e-4; end n = length(x0); fx = subs(F,findsym(F),x0); J = zeros(n,n); for i=1:n x1 = x0; x1(i) = x1(i)+h(i); J(:,i) = (subs(F,findsym(F),x1)-fx)/h(i); end r=transpose(x0)-inv(J)*fx; m=1; tol=1; while tol>eps xs=r; fx = subs(F,findsym(F),xs); J = zeros(n,n); h = fx; for i=1:n x1 = xs; x1(i) = x1(i)+h(i); J(:,i) = (subs(F,findsym(F),x1)-fx)/h(i); end r=xs-inv(J)*fx; %核心迭代公式 tol=norm(r-xs); m=m+1; if(m>100000) %迭代步数控制 disp('迭代步数太多，可能不收敛！'); return; end end format short;复制代码

# 7 麦片

050

2主题 0最佳答案
楼主| 发表于 4 天前 | 显示全部楼层
 李梦博1234 发表于 2018-12-6 11:04 这个是程序代码，上面出错了，没有贴出来，麻烦大神看看呀，谢谢

# 851 麦片

5001500

0主题 185最佳答案
• 关注者： 116

 参考下1stOpt的计算结果： ga: 3.47632463709284E-8 t3: -503.944746269951 t1: -185.963163012407 lamd: -2.3086997261903E-8 t5: -335.963163596366 w: 0.00666666663366633

# 7 麦片

050

2主题 0最佳答案
楼主| 发表于 4 天前 | 显示全部楼层
 shihe 发表于 2018-12-6 11:16 参考下1stOpt的计算结果： ga: 3.47632463709284E-8 t3: -503.944746269951 非常感谢您，但是结果不太对

# 851 麦片

5001500

0主题 185最佳答案
• 关注者： 116

 数值结果的话哪儿不对？ ga: 3.74740299151007E-10 t3: -503.944752866633 t1: -185.963168565183 lamd: -2.39095681275822E-10 t5: -335.963168571478 w: 0.00666666666631295

# 7 麦片

050

2主题 0最佳答案
楼主| 发表于 4 天前 | 显示全部楼层
 shihe 发表于 2018-12-6 14:00 数值结果的话哪儿不对？ ga: 3.74740299151007E-10 t3: -503.944752866633 ga是22，温度都是正的，270左右，400左右，300左右，您这个算出来怎么都是负数呢？

# 851 麦片

5001500

0主题 185最佳答案
• 关注者： 116

 从数学角度6#的结果没任何问题，代入验证下就知道了。至于你提到的参数范围要求应该提前说明。 6个方程6个参数，要满足你范围要求的精确解估计不存在。

# 7 麦片

050

2主题 0最佳答案
楼主| 发表于 4 天前 | 显示全部楼层
 shihe 发表于 2018-12-6 16:55 从数学角度6#的结果没任何问题，代入验证下就知道了。至于你提到的参数范围要求应该提前说明。 6个方程6个 ... 非常感谢您的回答，需要达到我的那组范围解，应该需要几组方程呢？

# 851 麦片

5001500

0主题 185最佳答案
• 关注者： 116

 你最好给出每个参数具体的范围限制
 您需要登录后才可以回帖 登录 | 注册 本版积分规则 回帖后跳转到最后一页