fsolve result is not desirable even giving a close starting point

조회 수: 4 (최근 30일)
Qingbin
Qingbin 2014년 1월 31일
답변: Alex Sha 2023년 9월 3일
I have three nonlinear equations with three unknowns and I used fsolve function.
I know that x=[0.3173;0.3173;3.6590] is a good enough solution for the three equations. However, using fsolve, I could not get to this solution even for a very close starting point as shown below. Instead the result is (upon plugging these results into the 3 equations, the values are not close to 0):
x =
0.999999999999936
1.000000000000067
1.000000000000036
How can this be solved? Thanks!
CODE:
x0=[0.31; 0.31; 3.5];
options=optimset('Display','iter');
[x,fval]=fsolve(@myfun1,x0,options)
function F=myfun(x)
F=[13*cos(x(3)) - 5*x(1)*x(3)^2 - 5*x(2)*x(3)^2 + 13*x(1)*x(3)*sin(x(3)) + 13*x(2)*x(3)*sin(x(3)) + 10*x(1)*x(2)*x(3)^2 - 13*x(1)*x(2)*x(3)^2*cos(x(3)) + 40;
5*x(3) - 13*sin(x(3)) + 30*x(1)*x(3) + 13*x(1)*x(3)*cos(x(3)) + 13*x(2)*x(3)*cos(x(3)) - 5*x(1)*x(2)*x(3)^3 + 13*x(1)*x(2)*x(3)^2*sin(x(3));
390*x(3)^2*sin(x(3)) + 300*x(1)*x(3)^3 - 25*x(1)*x(3)^5 + 25*x(2)*x(3)^5 - 150*x(3)^3 - 260*x(1)*x(3)^3*cos(x(3)) - 130*x(2)*x(3)^3*cos(x(3)) + 130*x(1)*x(3)^4*sin(x(3)) - 130*x(2)*x(3)^4*sin(x(3)) - 169*x(1)*x(3)^3*cos(x(3))^2 + 169*x(2)*x(3)^3*cos(x(3))^2 - 169*x(1)*x(3)^3*sin(x(3))^2 + 169*x(2)*x(3)^3*sin(x(3))^2
];
  댓글 수: 2
Matt J
Matt J 2014년 1월 31일
편집: Matt J 2014년 1월 31일
In future, please highlight your code and apply the
formatting button, as I have just done for you now.
Qingbin
Qingbin 2014년 1월 31일
Thanks, I will do this later.

댓글을 달려면 로그인하십시오.

채택된 답변

Matt J
Matt J 2014년 1월 31일
편집: Matt J 2014년 1월 31일
Possibly because you're passing @myfun1 to fsolve instead of @myfun? When I make this change and run your code, I get the solution you expect.
  댓글 수: 2
Qingbin
Qingbin 2014년 1월 31일
편집: Qingbin 2014년 1월 31일
Thanks! Sorry for the mistake. One question to follow up is that how can I give a good estimate of the starting point. In the above problem, I want to solve for the max{x(3)} and min{x(3)}.
Matt J
Matt J 2014년 1월 31일
There is no science to the initial guess. If you want solutions with the max/min possible x(3) value, try an initial guess with parameters well above/below what x(3) would naturally be.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Alex Sha
Alex Sha 2023년 9월 3일
For Qingbin's equations, although it is a problem that has passed a long time, it is worth and interesting to have a try, there are multi-solutions:
The first one:
x1: -12.7613758329431
x2: -12.7613758329431
x3: -0.755039591199301
The second one:
x1: 0.101047394240414
x2: -3.71598808815167
x3: -1.63192533266968
The third one:
x1: -0.282297628581163
x2: 0.369875309676247
x3: 3.09470113469319
The fourth one:
x1: 0.317262018077202
x2: 0.317262018077202
x3: 3.65895757009226

카테고리

Help CenterFile Exchange에서 Mathematics and Optimization에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by