[已解决] 为什么使用fsolve缺少一个解?

[复制链接]
即使熟悉过 发表于 2020-9-28 11:49:16
缺少解


  1. function[x,fval,exitflag]=fsolveDemo1
  2. x0=[0,0,0];
  3. options=optimset('MaxFunEvals',0,'MaxIter',3);
  4. [x,fval,exitflag]=fsolve(@f,x0);
  5. function F =f(x)
  6. F=[x(1)/4-x(2)/4;   x(2)/4-(x(3)-2)/-2;   x(1)^2+x(2)^2-4];
  7. end
  8. end
复制代码
  1. %显示
  2. Equation solved.
  3. fsolve completed because the vector of function values is near zero
  4. as measured by the default value of the function tolerance, and
  5. the problem appears regular as measured by the gradient.
  6. <stopping criteria details>
  7. x =
  8.     1.4142    1.4142    1.2929
  9. fval =
  10.    1.0e-08 *
  11.          0
  12.     0.0000
  13.     0.3873
  14. exitflag =
  15.      1
  16. >> 2-1.414/2
  17. ans =
  18.     1.2930
  19. >>
复制代码
其中x 的解只是其中的一个,另一个为什么没有显示?

最佳答案


TouAkira 发表于 2020-9-28 12:25:47
fsolve又不是求解析解,而是用迭代方法求数值解,对初值敏感
你换个初值比如 x0=-rand( 1, 3 ); 就会得到不一样的一组解啊
回复此楼

5 条回复


TouAkira 发表于 2020-9-28 12:25:47
fsolve又不是求解析解,而是用迭代方法求数值解,对初值敏感
你换个初值比如 x0=-rand( 1, 3 ); 就会得到不一样的一组解啊
回复此楼

即使熟悉过 发表于 2020-9-28 12:48:02
TouAkira 发表于 2020-9-28 12:25
fsolve又不是求解析解,而是用迭代方法求数值解,对初值是敏感的
你换个初值比如 x0=-rand( 1, 3 ); 就会得 ...

昂昂,这样啊,谢谢,
那怎么可以求得 解析解哪

即使熟悉过 发表于 2020-9-28 13:24:04
  1. syms x y z  
  2. [x,y,z]=solve('x/4-y/4=0','y/4-((z-2)/-2)=0','x^2+y^2-4=0','x','y','z')
复制代码


不知道这样可以吗?

即使熟悉过 发表于 2020-9-28 13:25:15
即使熟悉过 发表于 2020-9-28 13:24
不知道这样可以吗?

但是一直给我警告:
警告: Do not specify equations and variables as character strings. Instead, create symbolic variables with syms.
> In solve>getEqns (line 445)
  In solve (line 225)


即使熟悉过 发表于 2020-9-28 13:34:36
  1. syms x y z  
  2. [x,y,z]=solve(x/4-y/4==0,y/4-((z-2)/-2)==0,x^2+y^2-4==0)
复制代码


解决,感觉自己是个憨憨
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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