马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
还是昨天的八元二次方程组循环求解(http://forum.vibunion.com/thread-106169-1-1.html),每次循环方程组里的参数会发生改变
现在的问题是:每次开始运行,第一次循环得到的结果是正确的,但是第二次第三次和以后的循环要不就是提示
- Norm of First-order Trust-region
- Iteration Func-count f(x) step optimality radius
- 0 9 1.82858e-014 0 1
- Optimization terminated: first-order optimality is less than options.TolFun.
复制代码 或者提示,初值不对,需要重新设置初值。
下面是主程序
- x0=[0;0;0;0;0;0;0;0];
- options=optimset('LevenbergMarquardt','on','FunValCheck','on','TolFun',1e-12,'TolX',1e-12,'Display','iter');
- [x,fval] = fsolve(@myfun,x0,options);
复制代码 下面是方程子函数
- function F = myfun(x)
- load spectral.mat;
- F = [Gapap_1-Gapap_2-2.....;
- Gapbp_1_re-Gapbp_2_re-Ganbp_1.....;
- Gapbp_1_im-Gapbp_......;
- Gbpbp_1-Gbpbp_2-2*Ganbp_1_re*x(5.....;
- Gapap_2-Gapap_3-2*Ganap_2_re*x(1)+2*Ganap_3_....;
- Gapbp_2_re-Gapbp_3_re-Ganbp_2_re*x(....;
- Gapbp_2_im-Gapbp_3_im-Ganbp_2_im*x(..........;
- Gbpbp_.....];
复制代码 函数太长,没写全
spectral.mat;是主程序中保存的变量值
|