MATLAB의 N- 선형 방정식 세트
문제
MATLAB에서 N- 선형 방정식을 설정하는 데 문제가 있습니다. MATLAB에서 어떻게 선언 할 수 있는지 모르겠습니다. N- 선형 방정식을 설정하려면 MATLAB 코드가 필요합니다.
해결책
n- 선형 방정식을 하나의 행렬 방정식으로 작성하여 해결할 수 있습니다. 여기에서 좋은 예를 찾을 수 있습니다.http://blogs.mathworks.com/pick/2007/09/13/matlab-basics-video-solving-linear-equations/ (동영상!)
이 페이지도 참조하십시오.
http://en.wikipedia.org/wiki/system_of_linear_equations
http://en.wikipedia.org/wiki/matrix_equation
다른 팁
고유 한 솔루션이 있는지 여부에 따라 다양한 방식으로 선형 시스템을 해결할 수 있습니다.
간단한 방법은이를 감소 된 에코 형태 (RREF)로 줄이는 것입니다.
시스템 고려 :
x + 5y = 4
2x - y = 1
다음과 같이 계수 행렬 A와 RHS B를 쓸 수 있습니다.'
전기 연산자)
>> A = [1 5; 2 -1]
A =
1 5
2 -1
>> B = [4 1]'
B =
4
1
증강 된 매트릭스 (a | b)로 쓸 수 있습니다.
>> horzcat(A,B)
ans =
1 5 4
2 -1 1
그런 다음 Ref (a | b)를 찾으십시오.
>> rref(ans)
ans =
1.0000 0 0.8182
0 1.0000 0.6364
따라서 x ~ .8182, y ~ .6364.
MATLAB에서 선형 방정식을 해결하는 가장 빠른 방법은 단순히 양식에 방정식을 설정하는 것입니다.
AX = B
그런 다음 해결합니다
X = A\B
당신은 발행 할 수 있습니다
help mldivide
Matrix Division 및 그 한계에 대한 자세한 정보를 찾으려면.
반복 방법에 대한 코드 Guase Seidel Tol은 오류 허용 오류 X0입니다.
function seidel(A,b,x0,tol,itmax)
%Solve the system Ax=b using the Gauss-Seidel iteration method.
clc
% =======================================================
% Programmer : A. Ziaee mehr
%
help seidel
n=length(b);
x=zeros(n,1);
%fprintf('\n')
disp('The augumented matrix is = ')
Augm=[A b]
Y=zeros(n,1);
Y=x0;
for k=1:itmax +1
for ii=1:n
S=0;
for jj=1:ii-1
S=S+A(ii,jj)*x(jj);
end
for jj=ii+1:n
S=S+A(ii,jj)*x0(jj);
end
if (A(ii,ii)==0)
break
end
x(ii)=(-S+b(ii))/A(ii,ii);
end
err=abs(norm(x-x0));
rerr=err/(norm(x)+eps);
x0=x;
Y=[Y x];
if(rerr<tol)
break;
end
end
% Print the results
if (A(ii,ii)==0)
disp('division by zero')
elseif (k==itmax+1)
disp('No convergence')
else
%fprintf('\n')
disp('The solution vector are : ')
fprintf('\n')
disp('iter 0 1 2 3 4 ... ');
fprintf('\n')
for ii=1:n
fprintf('%1.0f= ',ii);
fprintf('%10.6f ',Y(ii,1:k+1));
fprintf('\n')
end
fprintf('\n')
disp(['The method converges after ',num2str(k),' iterations to'])
x
end