[已答复] fsolve能不能求解矩阵?

[复制链接]
liuyunfeng 发表于 2013-9-24 10:00:37
如题。
原本是用for循环做的,听说for循环效率很低,我需要求解十几万次,平时运行需要2小时左右,最近刚改了并行需要20多分钟,
听说向量化运算效率高,不知道能不能直接把十几万的数据组成矩阵,直接丢给它算,如果可以,需要做什么改动吗?谢谢!

9 条回复


winner245 发表于 2013-9-24 10:12:04
能不能向量化取决于具体的运算类型,目前信息不足,无法判断。另外,你的帖子内容跟标题的关系是?

liuyunfeng 发表于 2013-9-24 10:53:07
winner245 发表于 2013-9-24 10:12
能不能向量化取决于具体的运算类型,目前信息不足,无法判断。另外,你的帖子内容跟标题的关系是? ...

你好,谢谢回答。
有十几万组数据,每组数据要求解一组结果。
原先是一个一个求的,比如x0=[1 1];
a=1;b=2;
x=fsolve(@(x)fun(x,a,b),x0);  % fun(x,a,b)是一个二元非线性方程组,a,b为输入参数;
每次a和b变化(共有十几万组);
原先用for循环做的,
有没有可能转化为矩阵做法?
比如a和b直接就是几十万组数据的矩阵,代入直接运算?
谢谢!

winner245 发表于 2013-9-24 10:57:20
liuyunfeng 发表于 2013-9-24 10:53
你好,谢谢回答。
有十几万组数据,每组数据要求解一组结果。
原先是一个一个求的,比如x0=[1 1];

能否给出 fun(x,a,b) 的表达式?

liuyunfeng 发表于 2013-9-24 12:20:30
winner245 发表于 2013-9-24 10:57
能否给出 fun(x,a,b) 的表达式?

这只是我举个例子,实际是18元的方程组……见下面:
  1. function  y=rootegBfun(x,AA,BB,CC,DD,EE,FF,A_A,B_B,C_C,D_D,E_E,F_F,X_A,X_B,X_C,X_D,X_E,X_F,Y_A,Y_B,Y_C,Y_D,Y_E,Y_F,Z_A,Z_B,Z_C,Z_D,Z_E,Z_F,Y__A,Y__B,Y__C,Y__D,Y__E,Y__F,Z__A,Z__B,Z__C,Z__D,Z__E,Z__F)
  2. y(1)=((x(1)-X_A)^2+(x(2)-Y_A)^2+(x(3)-Z_A)^2)^(1/2)+AA-A_A;
  3. y(2)=((x(4)-X_B)^2+(x(5)-Y_B)^2+(x(6)-Z_B)^2)^(1/2)+BB-B_B;
  4. y(3)=((x(7)-X_C)^2+(x(8)-Y_C)^2+(x(9)-Z_C)^2)^(1/2)+CC-C_C;
  5. y(4)=((x(10)-X_D)^2+(x(11)-Y_D)^2+(x(12)-Z_D)^2)^(1/2)+DD-D_D;
  6. y(5)=((x(13)-X_E)^2+(x(14)-Y_E)^2+(x(15)-Z_E)^2)^(1/2)+EE-E_E;
  7. y(6)=((x(16)-X_F)^2+(x(17)-Y_F)^2+(x(18)-Z_F)^2)^(1/2)+FF-F_F;
  8. y(7)=(x(1)-x(4))^2+(x(2)-x(5))^2+(x(3)-x(6))^2-((Y__A-Y__B)^2+(Z__A-Z__B)^2);
  9. y(8)=(x(4)-x(7))^2+(x(5)-x(8))^2+(x(6)-x(9))^2-((Y__B-Y__C)^2+(Z__B-Z__C)^2);
  10. y(9)=(x(7)-x(1))^2+(x(8)-x(2))^2+(x(9)-x(3))^2-((Y__C-Y__A)^2+(Z__C-Z__A)^2);
  11. y(10)=(x(10)-x(1))^2+(x(11)-x(2))^2+(x(12)-x(3))^2-((Y__D-Y__A)^2+(Z__D-Z__A)^2);
  12. y(11)=(x(13)-x(1))^2+(x(14)-x(2))^2+(x(15)-x(3))^2-((Y__E-Y__A)^2+(Z__E-Z__A)^2);
  13. y(12)=(x(16)-x(1))^2+(x(17)-x(2))^2+(x(18)-x(3))^2-((Y__F-Y__A)^2+(Z__F-Z__A)^2);
  14. y(13)=(x(10)-x(4))^2+(x(11)-x(5))^2+(x(12)-x(6))^2-((Y__D-Y__B)^2+(Z__D-Z__B)^2);
  15. y(14)=(x(13)-x(4))^2+(x(14)-x(5))^2+(x(15)-x(6))^2-((Y__E-Y__B)^2+(Z__E-Z__B)^2);
  16. y(15)=(x(16)-x(4))^2+(x(17)-x(5))^2+(x(18)-x(6))^2-((Y__F-Y__B)^2+(Z__F-Z__B)^2);
  17. y(16)=(x(10)-x(7))^2+(x(11)-x(8))^2+(x(12)-x(9))^2-((Y__D-Y__C)^2+(Z__D-Z__C)^2);
  18. y(17)=(x(13)-x(7))^2+(x(14)-x(8))^2+(x(15)-x(9))^2-((Y__E-Y__C)^2+(Z__E-Z__C)^2);
  19. y(18)=(x(16)-x(7))^2+(x(17)-x(8))^2+(x(18)-x(9))^2-((Y__F-Y__C)^2+(Z__F-Z__C)^2);
复制代码

winner245 发表于 2013-9-24 12:29:52
liuyunfeng 发表于 2013-9-24 12:20
这只是我举个例子,实际是18元的方程组……见下面:

看起来方程组都是初等方程,可以试试 solve,看能否求出符号解,待求出符号解后,剩下的就是把 a b直接代入解里了

liuyunfeng 发表于 2013-9-24 12:58:49
winner245 发表于 2013-9-24 12:29
看起来方程组都是初等方程,可以试试 solve,看能否求出符号解,待求出符号解后,剩下的就是把 a b直接代 ...

18元的方程组,每个x(i)都与其他x(i)有关,求出的符号解也是多元的,如何能求解啊?

另外,顺便问个与此无关的问题:
设置纯色一般有几种输入方式?
我想设置activex的waitbar的背景颜色,输入‘b’、[X X X]等类型都不行,用get看了下,他默认的灰色显示的是这样的形式:
BackColor: 8421504
这是什么形式的?我要换成白色应该是什么值啊?
谢谢!

winner245 发表于 2013-9-24 17:20:21
liuyunfeng 发表于 2013-9-24 12:58
18元的方程组,每个x(i)都与其他x(i)有关,求出的符号解也是多元的,如何能求解啊?

另外,顺便问个与此 ...

这个跟解的个数有什么关系呢?符号解如果是多组,数值解不也应该是多组吗?求出符号解后,就不用对所有的 a b 参数都数值解一遍了, 只用代入a b数值即可

Good2boy 发表于 2021-5-2 11:57:11
winner245 发表于 2013-9-24 12:29
看起来方程组都是初等方程,可以试试 solve,看能否求出符号解,待求出符号解后,剩下的就是把 a b直接代 ...

请问如何不是初等方程,不能求解解析式的时候,该如何使用向量求解?

Good2boy 发表于 2021-5-2 11:58:07
winner245 发表于 2013-9-24 12:29
看起来方程组都是初等方程,可以试试 solve,看能否求出符号解,待求出符号解后,剩下的就是把 a b直接代 ...

如何不是初等方程,该如何使用向量的方式求解?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表