Efficient way to apply fsolve to large 2D array element
이전 댓글 표시
Hello
I have 2 nonlinear equations. I figure out that it can be solved by fsolve. The outputs of the 2 nonlinear equations are the [x,y] position of a point. The inputs of the system are initial estimate of the point [x0,y0] and some constants. I first tried to solve the nonlinear equations for one point, with the following code:
options = optimoptions('fsolve', 'Display', 'off');
x0 = [ud(1,1);vd(1,1)]; % Initial guess of undistorted point [x,y]
[x, fval] = fsolve(@myfunction,x0,options, kc, x0);
function F = myfunction(x, kc, x0)
r = sqrt(x(1)^2 + x(2)^2);
F = [ -x0(1) + (1 + kc(1)* r.^2 + kc(2)* r.^4 + kc(5)* r.^6 ).*x(1) + 2*kc(3).*x(1).*x(2) + kc(4)*(r.^2+2*x(1).^2), ...
-x0(2) + (1 + kc(1)* r.^2 + kc(2)* r.^4 + kc(5)* r.^6 ).*x(2) + kc(3)*(r.^2 + 2*x(2).^2) + 2*kc(4) .*x(1) .*x(2)];
end
The above code runs perfectly fine with one point [x,y]. However, I would like to apply it to large set of points. The set of points are stored in two m x n arrays, ud and vd, where [ ud(row,col), vd(row,col) ] forms the initial estimiate [x0,y0] for each array element. I tried to use nested for loop to run the above fsolve code for each array element. While it works, it takes decades to complete because m and n are large (>1500x1500). Is there any efficient way to apply the above code to each array element? Or is there any other way to do the same thing? Thanks!
댓글 수: 7
Bruno Luong
2018년 10월 31일
편집: Bruno Luong
2018년 10월 31일
Sorry for a stupid question: but you have 2 unknowns and 2 equations. They look reasonable, so the number of solutions should be small (no oscillating function involve). Why you look at solutions with 1500^2 stating points? What is the goal? They must converge to few solutions of the equation IMO.
Yuk Ching Leung
2018년 10월 31일
Bruno Luong
2018년 10월 31일
I see, so x0 is not only "forms the initial estimate" but also parametrize the function F.
Walter Roberson
2018년 10월 31일
Dang, I had a solution written up but accidentally Cancel instead of Submit :(
Summary: there is a solution
x2 = roots() of a degree 9 polynomial
after which you select the real-valued x2, then
x1 = (4.*ks3.*ks4.*ks5.*(ks3.^2+ks4.^2).^2.*x2.^7+ks5.*((ks1.*x01+ks4).*ks3.^4+2.*x02.*x01.*ks2.*ks3.^3+((-x01.^3+3.*x01.*x02.^2).*ks5+2.*ks4.^3+2.*ks1.*ks4.^2.*x01+(ks2.*x01.^2-ks2.*x02.^2).*ks4).*ks3.^2+2.*((3.*x01.^2-x02.^2).*ks5+ks2.*ks4.*x01).*x02.*ks4.*ks3+ks4.^2.*((x01.^3-3.*x01.*x02.^2).*ks5+ks4.*(ks1.*ks4.*x01+ks2.*x01.^2-ks2.*x02.^2+ks4.^2))).*x2.^6+((4.*ks2.*ks4-ks5.*x01).*ks3.^5+3.*ks3.^4.*ks4.*ks5.*x02+(4.*ks2.*ks4.^3-10.*ks4.^2.*ks5.*x01).*ks3.^3+10.*ks3.^2.*ks4.^3.*ks5.*x02-ks3.*ks4.^4.*ks5.*x01-ks4.^5.*ks5.*x02).*x2.^5+((-ks5.*x01+ks2.*(ks1.*x01+ks4)).*ks3.^4+2.*x02.*(ks2.^2.*x01+ks4.*ks5).*ks3.^3+((-3.*ks4.^2.*x01+(-3.*ks1.*x01.^2+ks1.*x02.^2).*ks4-ks2.*x01.^3+4.*ks2.*x01.*x02.^2).*ks5+ks2.*ks4.*(ks1.*ks4.*x01+ks2.*x01.^2-ks2.*x02.^2+ks4.^2)).*ks3.^2+4.*((-(1./2).*x01.^3+(1./2).*x01.*x02.^2).*ks5+ks4.*(ks1.*ks4.*x01+(1./2).*ks2.*x01.^2-(1./2).*ks2.*x02.^2+ks4.^2)).*x02.*ks5.*ks3+((3.*x01.^2-x02.^2).*ks5+ks2.*ks4.*x01).*x02.^2.*ks5.*ks4).*x2.^4+4.*((ks1.*ks4-(1./4).*ks2.*x01).*ks3.^4+(3./4).*x02.*(ks2.*ks4-ks5.*x01).*ks3.^3-(1./4).*((x01.^2-5.*x02.^2).*ks5+ks2.*ks4.*x01).*ks4.*ks3.^2-(1./4).*ks4.^2.*x02.*(ks2.*ks4-3.*ks5.*x01).*ks3-ks4.^3.*ks5.*x02.^2).*ks3.*x2.^3+(8.*ks3.^6.*ks4+(ks1.*ks4+x01.*(ks1.^2-ks2)).*ks3.^4+2.*x02.*(-ks5.*x01+ks2.*(ks1.*x01+ks4)).*ks3.^3+2.*((ks1.*x01+(3./2).*ks4).*ks5+(1./2).*ks2.^2.*x01).*x02.^2.*ks3.^2+2.*ks2.*ks5.*x01.*x02.^3.*ks3+ks5.^2.*x01.*x02.^4).*x2.^2+2.*((ks1.*x01+(3./2).*ks4).*ks3.^3-(1./2).*x02.*(ks1.*ks4-3.*ks2.*x01).*ks3.^2-x02.^2.*(ks2.*ks4-2.*ks5.*x01).*ks3-(3./2).*ks4.*ks5.*x02.^3).*ks3.^2.*x2+ks3.^6.*x01-3.*ks3.^5.*ks4.*x02)./(2.*ks5.*(ks3-ks4).*(ks3+ks4).*(ks3.^2+ks4.^2).^2.*x2.^6+ks5.*(ks3.^5+ks1.*ks3.^4.*x02+(-ks2.*x01.^2+ks2.*x02.^2+2.*ks4.^2).*ks3.^3+2.*((-(3./2).*x01.^2+(1./2).*x02.^2).*ks5+ks1.*ks4.^2+ks2.*ks4.*x01).*x02.*ks3.^2-((2.*x01.^3-6.*x01.*x02.^2).*ks5+ks4.*(ks2.*x01.^2-ks2.*x02.^2-ks4.^2)).*ks4.*ks3+x02.*ks4.^2.*((3.*x01.^2-x02.^2).*ks5+ks1.*ks4.^2+2.*ks2.*ks4.*x01)).*x2.^5+2.*(ks2.*ks3.^5+ks3.^4.*ks5.*x02+(-ks2.*ks4.^4+4.*ks4.^3.*ks5.*x01).*ks3-5.*ks4.^4.*ks5.*x02).*ks3.*x2.^4+(ks2.*ks3.^5+x02.*(ks1.*ks2+ks5).*ks3.^4+((-2.*ks4.*x01+ks1.*(x01.^2+x02.^2)).*ks5-ks2.^2.*x01.^2+ks2.^2.*x02.^2+ks2.*ks4.^2).*ks3.^3+((-4.*ks1.*ks4.*x01-3.*ks2.*x01.^2+2.*ks2.*x02.^2+3.*ks4.^2).*ks5+ks2.*ks4.*(ks1.*ks4+2.*ks2.*x01)).*x02.*ks3.^2+4.*x02.^2.*ks5.*((-(3./4).*x01.^2+(1./4).*x02.^2).*ks5+ks1.*ks4.^2+ks2.*ks4.*x01).*ks3+ks4.*ks5.*x02.^3.*(ks2.*ks4+4.*ks5.*x01)).*x2.^3+2.*(ks1.*ks3.^4+ks2.*x02.*ks3.^3+(((1./2).*x01.^2+x02.^2).*ks5-ks1.*ks4.^2+2.*ks2.*ks4.*x01).*ks3.^2-3.*ks4.*x02.*(ks2.*ks4-ks5.*x01).*ks3-(9./2).*ks4.^2.*ks5.*x02.^2).*ks3.^2.*x2.^2+(2.*ks3.^7+(-6.*ks4.^2+ks1).*ks3.^5+x02.*(ks1.^2+ks2).*ks3.^4+2.*x02.^2.*(ks1.*ks2+(1./2).*ks5).*ks3.^3+(2.*ks1.*ks5.*x02.^3+ks2.^2.*x02.^3).*ks3.^2+2.*ks2.*ks3.*ks5.*x02.^4+ks5.^2.*x02.^5).*x2+ks3.^3.*(ks1.*ks3.^2.*x02+ks2.*ks3.*x02.^2+ks5.*x02.^3+ks3.^3))
And then you look for the (x1, x2) pair that is closest to (x01, x02)
Yuk Ching Leung
2018년 10월 31일
Bruno Luong
2018년 10월 31일
편집: Bruno Luong
2018년 10월 31일
Just a few ideas:
What you could do is assume the inverse the same form with unknown coefs lc1,...,lc6 (instead of kci), then when combine with the direct model it gives identity map by requiring the high-order terms of the combine function = 0. This might provides a formula of lc1,...,lc6 from kc1,...,kc6 using symbolic calculation.
You might also solve numerically using FSOLVE on n>=6 on well chosen points, n not too large, then "fit" the reverse with a model to find lc1,...lc6 using the result of FSOLVE. Then use lc1,...,lc6 to compute the results for the rest of the data.
Walter Roberson
2018년 10월 31일
MATLAB unfortunately has trouble solving higher dimensional polynomials.
In my outline above,
x2 = RootOf((4*ks3^8*ks5+16*ks3^6*ks4^2*ks5+24*ks3^4*ks4^4*ks5+16*ks3^2*ks4^6*ks5+4*ks4^8*ks5)*_Z^9+(4*ks1*ks3^6*ks5*x02+8*ks1*ks3^5*ks4*ks5*x01+4*ks1*ks3^4*ks4^2*ks5*x02+16*ks1*ks3^3*ks4^3*ks5*x01-4*ks1*ks3^2*ks4^4*ks5*x02+8*ks1*ks3*ks4^5*ks5*x01-4*ks1*ks4^6*ks5*x02-4*ks2*ks3^5*ks5*x01^2+4*ks2*ks3^5*ks5*x02^2+24*ks2*ks3^4*ks4*ks5*x01*x02+8*ks2*ks3^3*ks4^2*ks5*x01^2-8*ks2*ks3^3*ks4^2*ks5*x02^2+16*ks2*ks3^2*ks4^3*ks5*x01*x02+12*ks2*ks3*ks4^4*ks5*x01^2-12*ks2*ks3*ks4^4*ks5*x02^2-8*ks2*ks4^5*ks5*x01*x02-12*ks3^4*ks5^2*x01^2*x02+4*ks3^4*ks5^2*x02^3-16*ks3^3*ks4*ks5^2*x01^3+48*ks3^3*ks4*ks5^2*x01*x02^2+72*ks3^2*ks4^2*ks5^2*x01^2*x02-24*ks3^2*ks4^2*ks5^2*x02^3+16*ks3*ks4^3*ks5^2*x01^3-48*ks3*ks4^3*ks5^2*x01*x02^2-12*ks4^4*ks5^2*x01^2*x02+4*ks4^4*ks5^2*x02^3+4*ks3^7*ks5+12*ks3^5*ks4^2*ks5+12*ks3^3*ks4^4*ks5+4*ks3*ks4^6*ks5)*_Z^8+(ks1^2*ks3^4*ks5*x01^2+ks1^2*ks3^4*ks5*x02^2+2*ks1^2*ks3^2*ks4^2*ks5*x01^2+2*ks1^2*ks3^2*ks4^2*ks5*x02^2+ks1^2*ks4^4*ks5*x01^2+ks1^2*ks4^4*ks5*x02^2+2*ks1*ks2*ks3^3*ks5*x01^2*x02+2*ks1*ks2*ks3^3*ks5*x02^3+2*ks1*ks2*ks3^2*ks4*ks5*x01^3+2*ks1*ks2*ks3^2*ks4*ks5*x01*x02^2+2*ks1*ks2*ks3*ks4^2*ks5*x01^2*x02+2*ks1*ks2*ks3*ks4^2*ks5*x02^3+2*ks1*ks2*ks4^3*ks5*x01^3+2*ks1*ks2*ks4^3*ks5*x01*x02^2-2*ks1*ks3^2*ks5^2*x01^4+2*ks1*ks3^2*ks5^2*x02^4+8*ks1*ks3*ks4*ks5^2*x01^3*x02+8*ks1*ks3*ks4*ks5^2*x01*x02^3+2*ks1*ks4^2*ks5^2*x01^4-2*ks1*ks4^2*ks5^2*x02^4+ks2^2*ks3^2*ks5*x01^4+2*ks2^2*ks3^2*ks5*x01^2*x02^2+ks2^2*ks3^2*ks5*x02^4+ks2^2*ks4^2*ks5*x01^4+2*ks2^2*ks4^2*ks5*x01^2*x02^2+ks2^2*ks4^2*ks5*x02^4+4*ks2*ks3^8+12*ks2*ks3^6*ks4^2+12*ks2*ks3^4*ks4^4+4*ks2*ks3^2*ks4^6+2*ks2*ks3*ks5^2*x01^4*x02+4*ks2*ks3*ks5^2*x01^2*x02^3+2*ks2*ks3*ks5^2*x02^5+2*ks2*ks4*ks5^2*x01^5+4*ks2*ks4*ks5^2*x01^3*x02^2+2*ks2*ks4*ks5^2*x01*x02^4-12*ks3^6*ks4*ks5*x01+8*ks3^5*ks4^2*ks5*x02-28*ks3^4*ks4^3*ks5*x01+16*ks3^3*ks4^4*ks5*x02-20*ks3^2*ks4^5*ks5*x01+8*ks3*ks4^6*ks5*x02-4*ks4^7*ks5*x01+ks5^3*x01^6+3*ks5^3*x01^4*x02^2+3*ks5^3*x01^2*x02^4+ks5^3*x02^6+2*ks1*ks3^5*ks5*x02+2*ks1*ks3^4*ks4*ks5*x01+4*ks1*ks3^3*ks4^2*ks5*x02+4*ks1*ks3^2*ks4^3*ks5*x01+2*ks1*ks3*ks4^4*ks5*x02+2*ks1*ks4^5*ks5*x01-2*ks2*ks3^4*ks5*x01^2+2*ks2*ks3^4*ks5*x02^2+8*ks2*ks3^3*ks4*ks5*x01*x02+8*ks2*ks3*ks4^3*ks5*x01*x02+2*ks2*ks4^4*ks5*x01^2-2*ks2*ks4^4*ks5*x02^2-6*ks3^3*ks5^2*x01^2*x02+2*ks3^3*ks5^2*x02^3-6*ks3^2*ks4*ks5^2*x01^3+18*ks3^2*ks4*ks5^2*x01*x02^2+18*ks3*ks4^2*ks5^2*x01^2*x02-6*ks3*ks4^2*ks5^2*x02^3+2*ks4^3*ks5^2*x01^3-6*ks4^3*ks5^2*x01*x02^2+ks3^6*ks5+3*ks3^4*ks4^2*ks5+3*ks3^2*ks4^4*ks5+ks4^6*ks5)*_Z^7+(4*ks1*ks2*ks3^6*x02+8*ks1*ks2*ks3^5*ks4*x01+8*ks1*ks2*ks3^3*ks4^3*x01-4*ks1*ks2*ks3^2*ks4^4*x02-16*ks1*ks3^4*ks4*ks5*x01*x02-32*ks1*ks3^3*ks4^2*ks5*x01^2+16*ks1*ks3^3*ks4^2*ks5*x02^2+48*ks1*ks3^2*ks4^3*ks5*x01*x02-16*ks1*ks3*ks4^4*ks5*x02^2-4*ks2^2*ks3^5*x01^2+4*ks2^2*ks3^5*x02^2+24*ks2^2*ks3^4*ks4*x01*x02+12*ks2^2*ks3^3*ks4^2*x01^2-12*ks2^2*ks3^3*ks4^2*x02^2-8*ks2^2*ks3^2*ks4^3*x01*x02-16*ks2*ks3^4*ks5*x01^2*x02+4*ks2*ks3^4*ks5*x02^3-12*ks2*ks3^3*ks4*ks5*x01^3+44*ks2*ks3^3*ks4*ks5*x01*x02^2+28*ks2*ks3^2*ks4^2*ks5*x01^2*x02-20*ks2*ks3^2*ks4^2*ks5*x02^3-4*ks2*ks3*ks4^3*ks5*x01^3-12*ks2*ks3*ks4^3*ks5*x01*x02^2+4*ks2*ks4^4*ks5*x01^2*x02+4*ks3^3*ks5^2*x01^4-12*ks3^3*ks5^2*x01^2*x02^2-32*ks3^2*ks4*ks5^2*x01^3*x02+16*ks3^2*ks4*ks5^2*x01*x02^3-8*ks3*ks4^2*ks5^2*x01^4+36*ks3*ks4^2*ks5^2*x01^2*x02^2-4*ks3*ks4^2*ks5^2*x02^4+8*ks4^3*ks5^2*x01^3*x02-8*ks4^3*ks5^2*x01*x02^3+4*ks2*ks3^7+8*ks2*ks3^5*ks4^2+4*ks2*ks3^3*ks4^4-20*ks3^5*ks4*ks5*x01+20*ks3^4*ks4^2*ks5*x02-16*ks3^3*ks4^3*ks5*x01+16*ks3^2*ks4^4*ks5*x02+4*ks3*ks4^5*ks5*x01-4*ks4^6*ks5*x02)*_Z^6+(ks1^2*ks2*ks3^4*x01^2+ks1^2*ks2*ks3^4*x02^2+ks1^2*ks2*ks3^2*ks4^2*x01^2+ks1^2*ks2*ks3^2*ks4^2*x02^2-4*ks1^2*ks3^2*ks4*ks5*x01^3-4*ks1^2*ks3^2*ks4*ks5*x01*x02^2+4*ks1^2*ks3*ks4^2*ks5*x01^2*x02+4*ks1^2*ks3*ks4^2*ks5*x02^3+2*ks1*ks2^2*ks3^3*x01^2*x02+2*ks1*ks2^2*ks3^3*x02^3+2*ks1*ks2^2*ks3^2*ks4*x01^3+2*ks1*ks2^2*ks3^2*ks4*x01*x02^2-3*ks1*ks2*ks3^2*ks5*x01^4-ks1*ks2*ks3^2*ks5*x01^2*x02^2+2*ks1*ks2*ks3^2*ks5*x02^4+4*ks1*ks2*ks3*ks4*ks5*x01^3*x02+4*ks1*ks2*ks3*ks4*ks5*x01*x02^3+ks1*ks2*ks4^2*ks5*x01^2*x02^2+ks1*ks2*ks4^2*ks5*x02^4+4*ks1*ks3^8+8*ks1*ks3^6*ks4^2+4*ks1*ks3^4*ks4^4-4*ks1*ks3*ks5^2*x01^4*x02-4*ks1*ks3*ks5^2*x01^2*x02^3+4*ks1*ks4*ks5^2*x01^3*x02^2+4*ks1*ks4*ks5^2*x01*x02^4+ks2^3*ks3^2*x01^4+2*ks2^3*ks3^2*x01^2*x02^2+ks2^3*ks3^2*x02^4+2*ks2^2*ks3*ks5*x01^4*x02+4*ks2^2*ks3*ks5*x01^2*x02^3+2*ks2^2*ks3*ks5*x02^5-4*ks2*ks3^6*ks4*x01-8*ks2*ks3^4*ks4^3*x01-4*ks2*ks3^2*ks4^5*x01+ks2*ks5^2*x01^4*x02^2+2*ks2*ks5^2*x01^2*x02^4+ks2*ks5^2*x02^6+11*ks3^6*ks5*x01^2-38*ks3^5*ks4*ks5*x01*x02-34*ks3^4*ks4^2*ks5*x01^2+27*ks3^4*ks4^2*ks5*x02^2+68*ks3^3*ks4^3*ks5*x01*x02+19*ks3^2*ks4^4*ks5*x01^2-34*ks3^2*ks4^4*ks5*x02^2-22*ks3*ks4^5*ks5*x01*x02+3*ks4^6*ks5*x02^2+2*ks1*ks2*ks3^5*x02+2*ks1*ks2*ks3^4*ks4*x01+2*ks1*ks2*ks3^3*ks4^2*x02+2*ks1*ks2*ks3^2*ks4^3*x01-ks1*ks3^4*ks5*x01^2-8*ks1*ks3^3*ks4*ks5*x01*x02-9*ks1*ks3^2*ks4^2*ks5*x01^2+9*ks1*ks3^2*ks4^2*ks5*x02^2+8*ks1*ks3*ks4^3*ks5*x01*x02+ks1*ks4^4*ks5*x02^2-2*ks2^2*ks3^4*x01^2+2*ks2^2*ks3^4*x02^2+8*ks2^2*ks3^3*ks4*x01*x02+2*ks2^2*ks3^2*ks4^2*x01^2-2*ks2^2*ks3^2*ks4^2*x02^2-10*ks2*ks3^3*ks5*x01^2*x02+2*ks2*ks3^3*ks5*x02^3-2*ks2*ks3^2*ks4*ks5*x01^3+18*ks2*ks3^2*ks4*ks5*x01*x02^2-4*ks2*ks3*ks4^2*ks5*x02^3+4*ks2*ks4^3*ks5*x01*x02^2+3*ks3^2*ks5^2*x01^4-9*ks3^2*ks5^2*x01^2*x02^2-12*ks3*ks4*ks5^2*x01^3*x02+12*ks3*ks4*ks5^2*x01*x02^3+9*ks4^2*ks5^2*x01^2*x02^2-3*ks4^2*ks5^2*x02^4+ks2*ks3^6+2*ks2*ks3^4*ks4^2+ks2*ks3^2*ks4^4-6*ks3^4*ks4*ks5*x01+6*ks3^3*ks4^2*ks5*x02-6*ks3^2*ks4^3*ks5*x01+6*ks3*ks4^4*ks5*x02)*_Z^5+(4*ks1^2*ks3^6*x02+8*ks1^2*ks3^5*ks4*x01-4*ks1^2*ks3^4*ks4^2*x02-4*ks1*ks2*ks3^5*x01^2+4*ks1*ks2*ks3^5*x02^2+16*ks1*ks2*ks3^4*ks4*x01*x02-8*ks1*ks2*ks3^3*ks4^2*x02^2-3*ks1*ks3^4*ks5*x01^2*x02+4*ks1*ks3^4*ks5*x02^3-2*ks1*ks3^3*ks4*ks5*x01^3+14*ks1*ks3^3*ks4*ks5*x01*x02^2+3*ks1*ks3^2*ks4^2*ks5*x01^2*x02-7*ks1*ks3^2*ks4^2*ks5*x02^3-ks1*ks4^4*ks5*x02^3-4*ks2^2*ks3^4*x01^2*x02-4*ks2^2*ks3^3*ks4*x01^3+4*ks2^2*ks3^3*ks4*x01*x02^2+4*ks2^2*ks3^2*ks4^2*x01^2*x02-3*ks2*ks3^3*ks5*x01^4-9*ks2*ks3^3*ks5*x01^2*x02^2-8*ks2*ks3^2*ks4*ks5*x01^3*x02+6*ks2*ks3^2*ks4*ks5*x01*x02^3+13*ks2*ks3*ks4^2*ks5*x01^2*x02^2+3*ks2*ks3*ks4^2*ks5*x02^4-2*ks2*ks4^3*ks5*x01*x02^3+12*ks3^9+24*ks3^7*ks4^2+12*ks3^5*ks4^4-7*ks3^2*ks5^2*x01^4*x02-7*ks3^2*ks5^2*x01^2*x02^3+6*ks3*ks4*ks5^2*x01^3*x02^2+6*ks3*ks4*ks5^2*x01*x02^4+ks4^2*ks5^2*x01^2*x02^3+ks4^2*ks5^2*x02^5+4*ks1*ks3^7+4*ks1*ks3^5*ks4^2-12*ks2*ks3^5*ks4*x01+12*ks2*ks3^4*ks4^2*x02+4*ks2*ks3^3*ks4^3*x01-4*ks2*ks3^2*ks4^4*x02+11*ks3^5*ks5*x01^2-42*ks3^4*ks4*ks5*x01*x02-17*ks3^3*ks4^2*ks5*x01^2+31*ks3^3*ks4^2*ks5*x02^2+38*ks3^2*ks4^3*ks5*x01*x02-21*ks3*ks4^4*ks5*x02^2)*_Z^4+(ks1^3*ks3^4*x01^2+ks1^3*ks3^4*x02^2+2*ks1^2*ks2*ks3^3*x01^2*x02+2*ks1^2*ks2*ks3^3*x02^3+2*ks1^2*ks3^2*ks5*x01^2*x02^2+2*ks1^2*ks3^2*ks5*x02^4+ks1*ks2^2*ks3^2*x01^2*x02^2+ks1*ks2^2*ks3^2*x02^4+2*ks1*ks2*ks3*ks5*x01^2*x02^3+2*ks1*ks2*ks3*ks5*x02^5+12*ks1*ks3^7*x02+28*ks1*ks3^6*ks4*x01-20*ks1*ks3^5*ks4^2*x02-4*ks1*ks3^4*ks4^3*x01+ks1*ks5^2*x01^2*x02^4+ks1*ks5^2*x02^6-5*ks2*ks3^6*x01^2+12*ks2*ks3^6*x02^2+50*ks2*ks3^5*ks4*x01*x02+11*ks2*ks3^4*ks4^2*x01^2-33*ks2*ks3^4*ks4^2*x02^2-14*ks2*ks3^3*ks4^3*x01*x02+3*ks2*ks3^2*ks4^4*x02^2-15*ks3^5*ks5*x01^2*x02+12*ks3^5*ks5*x02^3+2*ks3^4*ks4*ks5*x01^3+86*ks3^4*ks4*ks5*x01*x02^2+27*ks3^3*ks4^2*ks5*x01^2*x02-59*ks3^3*ks4^2*ks5*x02^3-44*ks3^2*ks4^3*ks5*x01*x02^2+15*ks3*ks4^4*ks5*x02^3+2*ks1^2*ks3^5*x02+2*ks1^2*ks3^4*ks4*x01-3*ks1*ks2*ks3^4*x01^2+2*ks1*ks2*ks3^4*x02^2+4*ks1*ks2*ks3^3*ks4*x01*x02+ks1*ks2*ks3^2*ks4^2*x02^2-2*ks1*ks3^3*ks5*x01^2*x02+2*ks1*ks3^3*ks5*x02^3+4*ks1*ks3*ks4^2*ks5*x02^3-4*ks2^2*ks3^3*x01^2*x02+4*ks2^2*ks3^2*ks4*x01*x02^2-9*ks2*ks3^2*ks5*x01^2*x02^2+8*ks2*ks3*ks4*ks5*x01*x02^3+ks2*ks4^2*ks5*x02^4+16*ks3^8+16*ks3^6*ks4^2-6*ks3*ks5^2*x01^2*x02^3+6*ks4*ks5^2*x01*x02^4+ks1*ks3^6+ks1*ks3^4*ks4^2-4*ks2*ks3^4*ks4*x01+4*ks2*ks3^3*ks4^2*x02+3*ks3^4*ks5*x01^2-12*ks3^3*ks4*ks5*x01*x02+9*ks3^2*ks4^2*ks5*x02^2)*_Z^3+(3*ks1^2*ks3^5*x01^2+3*ks1^2*ks3^5*x02^2+7*ks1*ks2*ks3^4*x01^2*x02+6*ks1*ks2*ks3^4*x02^3-ks1*ks2*ks3^2*ks4^2*x02^3+6*ks1*ks3^3*ks5*x01^2*x02^2+6*ks1*ks3^3*ks5*x02^4+4*ks1*ks3^2*ks4*ks5*x01*x02^3-4*ks1*ks3*ks4^2*ks5*x02^4+5*ks2^2*ks3^3*x01^2*x02^2+3*ks2^2*ks3^3*x02^4-2*ks2^2*ks3^2*ks4*x01*x02^3+11*ks2*ks3^2*ks5*x01^2*x02^3+6*ks2*ks3^2*ks5*x02^5-4*ks2*ks3*ks4*ks5*x01*x02^4-ks2*ks4^2*ks5*x02^5-4*ks3^8*x02+20*ks3^7*ks4*x01-36*ks3^6*ks4^2*x02-12*ks3^5*ks4^3*x01+7*ks3*ks5^2*x01^2*x02^4+3*ks3*ks5^2*x02^6-4*ks4*ks5^2*x01*x02^5+10*ks1*ks3^6*x02+10*ks1*ks3^5*ks4*x01-4*ks1*ks3^4*ks4^2*x02-3*ks2*ks3^5*x01^2+10*ks2*ks3^5*x02^2+22*ks2*ks3^4*ks4*x01*x02-13*ks2*ks3^3*ks4^2*x02^2-8*ks3^4*ks5*x01^2*x02+10*ks3^4*ks5*x02^3+38*ks3^3*ks4*ks5*x01*x02^2-24*ks3^2*ks4^2*ks5*x02^3+7*ks3^7+3*ks3^5*ks4^2)*_Z^2+(3*ks1*ks3^6*x01^2-4*ks1*ks3^6*x02^2-6*ks1*ks3^5*ks4*x01*x02+3*ks1*ks3^4*ks4^2*x02^2+5*ks2*ks3^5*x01^2*x02-4*ks2*ks3^5*x02^3-14*ks2*ks3^4*ks4*x01*x02^2+9*ks2*ks3^3*ks4^2*x02^3+7*ks3^4*ks5*x01^2*x02^2-4*ks3^4*ks5*x02^4-22*ks3^3*ks4*ks5*x01*x02^3+15*ks3^2*ks4^2*ks5*x02^4+ks1^2*ks3^4*x02^2+2*ks1*ks2*ks3^3*x02^3+2*ks1*ks3^2*ks5*x02^4+ks2^2*ks3^2*x02^4+2*ks2*ks3*ks5*x02^5-4*ks3^7*x02+8*ks3^6*ks4*x01-12*ks3^5*ks4^2*x02+ks5^2*x02^6+2*ks1*ks3^5*x02+2*ks2*ks3^4*x02^2+2*ks3^3*ks5*x02^3+ks3^6)*_Z-ks1^2*ks3^4*x02^3-2*ks1*ks2*ks3^3*x02^4-2*ks1*ks3^2*ks5*x02^5-ks2^2*ks3^2*x02^5-2*ks2*ks3*ks5*x02^6+ks3^7*x01^2-6*ks3^6*ks4*x01*x02+9*ks3^5*ks4^2*x02^2-ks5^2*x02^7-2*ks1*ks3^5*x02^2-2*ks2*ks3^4*x02^3-2*ks3^3*ks5*x02^4-ks3^6*x02)
where _Z stands in for the values that make the polynomial 0 -- the roots of the polynomial. You can break this up into parts that are the individual powers of _Z, get the 10 coefficient groups, and build a static roots() out of it.
채택된 답변
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Systems of Nonlinear Equations에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!