楼主: wuyou136

[我分享] 基于全局优化工具箱求解非线性方程组数值解(无需初值)

  [复制链接]

新手

5 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
发表于 2019-5-6 11:14:14 | 显示全部楼层
wuyou136 发表于 2017-3-11 17:49
更新:
1、增加第5个输入参数。第5个输入参数含义为 GlobalSolve 的求解能力,默认值是100。这个值给的越高 ...

楼主你好,我在使用你的GlobalSolve1求解比较复杂的含符号行列式=0的一元方程时出现以下错误(低阶不出现,6阶以上出现):
>> [alpha1,fval,exitFlag,multiSol] = GlobalSolve1(d,1,1,10)
错误使用 particleswarm>makeState (line 679)
Failure in initial user-supplied objective function evaluation. PARTICLESWARM cannot continue.

出错 particleswarm>pswcore (line 164)
state = makeState(nvars,lbMatrix,ubMatrix,objFcn,options);

出错 particleswarm (line 146)
[x,fval,exitFlag,output] = pswcore(objFcn,nvars,lbRow,ubRow,output,options);

出错 GlobalSolve1 (line 29)
x0 = particleswarm(@(x)sum(obj_fun(x).^2),n,lb,ub,options);

原因:
    错误使用 sym>checkindex (line 1574)
    Index must be a positive integer or logical.

我感觉可能是表达式太长,出错了。楼主方便的话研究一下具体原因,谢谢

论坛优秀回答者

权威

3630 麦片

财富积分



20

主题

3779

帖子

769

最佳答案
  • 关注者: 431
 楼主| 发表于 2019-5-6 19:12:26 | 显示全部楼层
揭然 发表于 2019-5-6 11:14
楼主你好,我在使用你的GlobalSolve1求解比较复杂的含符号行列式=0的一元方程时出现以下错误(低阶不出现 ...

x0 = particleswarm(@(x)sum(obj_fun(x).^2),n,lb,ub,options);
出错在这句代码,应该是你的目标函数会输出复数,粒子群算法不支持
把这句代码修改成:
x0 = zeros(1, n);
n是变量个数

新手

5 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
发表于 2019-5-7 10:38:47 | 显示全部楼层
wuyou136 发表于 2019-5-6 19:12
x0 = particleswarm(@(x)sum(obj_fun(x).^2),n,lb,ub,options);
出错在这句代码,应该是你的目标函数会输 ...

楼主大神果然牛,改了就不报错了:victory:

新手

5 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
发表于 2019-5-10 10:26:49 | 显示全部楼层
本帖最后由 揭然 于 2019-5-20 15:46 编辑
wuyou136 发表于 2019-5-6 19:12
x0 = particleswarm(@(x)sum(obj_fun(x).^2),n,lb,ub,options);
出错在这句代码,应该是你的目标函数会输 ...

:):time:  

新手

11 麦片

财富积分


050


1

主题

7

帖子

0

最佳答案
发表于 2019-5-10 16:28:05 | 显示全部楼层
非常好的帖子,收藏慢慢看,目前也在求解高阶非线性方程。

新手

5 麦片

财富积分


050


0

主题

1

帖子

0

最佳答案
发表于 2019-5-14 12:17:14 | 显示全部楼层
您好,我在用GlobalSolve求解的时候,MultilSlove给出了特别多的不存在的解,实际上只有4个解。我想问下是不是我的误差值设的太大了,这个要怎么改呢?

新手

12 麦片

财富积分


050


2

主题

5

帖子

0

最佳答案
发表于 2019-5-28 17:40:12 | 显示全部楼层
学习一下~

新手

5 麦片

财富积分


050


0

主题

1

帖子

0

最佳答案
发表于 2019-6-10 20:39:20 | 显示全部楼层
楼主,非常感谢您的分享,有个问题想请教您一下,如果是复数解,应该怎么限制解的实部和虚部都大于0啊?

新手

5 麦片

财富积分


050


0

主题

1

帖子

0

最佳答案
发表于 2019-7-30 16:25:34 | 显示全部楼层
谢谢楼主,这个程序非常好用,感谢!

新手

5 麦片

财富积分


050


1

主题

7

帖子

0

最佳答案
发表于 2019-8-1 11:20:49 | 显示全部楼层
options = optimoptions('particleswarm','display','off');

出错 global_x (line 3)
[x,fval,exitFlag] = GlobalSolve(F,2)

请问这是个什么情况呀(刚用matlab不是很了解)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表