나는 두 다항식을 가지고 있고 그들이 같은지 모든 점을 찾고 싶다.
여기에 Modelica.Math.Vectors.Utilities.roots
을 사용하는 함수가 있습니다.
먼저 두 개의 다항식 poly1
과 poly2
을 입력합니다. poly1=poly2
을 찾는 것은 poly1-poly2=0
을 찾는 것과 동일하므로 제 3의 다항식 polyDiff = polyLong-polyShort
을 정의한 다음 해당 다항식을 Modelica.Math.Vectors.Utilities.roots
으로 넘깁니다. 복잡한 뿌리를 포함한 모든 뿌리를 반환합니다.
function polyIntersect
input Real[:] poly1={3,2,1,0};
input Real[:] poly2={8,7};
output Real[:,2] intersect;
protected
Integer nPoly1 = size(poly1,1);
Integer nPoly2 = size(poly2,1);
Integer nPolyShort = min(nPoly1, nPoly2);
Integer nPolyLong = max(nPoly1, nPoly2);
Real[nPolyShort] polyShort;
Real[nPolyLong] polyLong;
Real[nPolyLong] polyDiff;
algorithm
if (nPoly1<nPoly2) then
polyShort := poly1;
polyLong := poly2;
else
polyShort := poly2;
polyLong := poly1;
end if;
polyDiff := polyLong;
for i in 0:nPolyShort-1 loop
polyDiff[nPolyLong-i] := polyLong[nPolyLong-i] - polyShort[nPolyShort-i];
end for;
intersect := Modelica.Math.Vectors.Utilities.roots(polyDiff);
end polyIntersect;
위의 코드
여기로도 주문 가능합니다
https://gist.github.com/thorade/5388205
당신은 이미'Modelica.Math.Vectors.Utilities.roots'를 살펴나요? 그것은 다항식의 근을 계산하는 함수이다. 도움이된다면 간단한 답을 직접 작성해야합니다. – matth