fsolve
에 대한 코드 생성하기
이 예제에서는 fsolve
를 사용하여 비선형 연립방정식을 풀기 위한 C 코드를 생성하는 방법을 보여줍니다.
풀려는 방정식
풀려는 비선형 연립방정식은 다음과 같습니다.
이 방정식을 F(x) = 0 형식으로 변환합니다.
코드 생성 단계
두 방정식의 좌변을 계산하는 함수를 작성합니다. 코드를 생성하려면, 해당 프로그램은 생성되는 배열을 모두 할당해야 하고 생성 후 배열의 크기를 변경하지 않아야 합니다.
function F = root2d(x) F = zeros(2,1); % Allocate return array F(1) = exp(-exp(-(x(1)+x(2)))) - x(2)*(1+x(1)^2); F(2) = x(1)*cos(x(2)) + x(2)*sin(x(1)) - 0.5; end
문제를 설정하고
fsolve
를 호출하는 함수를 작성합니다. 이 함수는root2d
를 이름이 아닌 함수 핸들로 참조해야 합니다.function [x,fval] = solveroot options = optimoptions('fsolve','Algorithm','levenberg-marquardt','Display','off'); fun = @root2d; rng default x0 = rand(2,1); [x,fval] = fsolve(fun,x0,options); end
코드 생성을 위한 구성을 만듭니다. 이 경우
'mex'
를 사용합니다.cfg = coder.config('mex');
solveroot
함수에 대한 코드를 생성합니다.codegen -config cfg solveroot
solveroot_mex.mexw64
또는 이와 유사한 이름의 생성된 파일을 실행하여 생성된 코드를 테스트합니다.[x,fval] = solveroot_mex
x = 0.3532 0.6061 fval = 1.0e-14 * -0.1998 -0.1887
참고 항목
fsolve
| codegen
(MATLAB Coder) | optimoptions