مجموعة من المعادلات الخطية ن في MATLAB
سؤال
ولدي بعض المشاكل في وضع المعادلات ن خطي في matlab.I لا أعرف كيف يمكن أن أصرح في matlab.I إلى رمز MATLAB لوضع المعادلات الخطية ن ..
المحلول
ويمكنك كتابة المعادلات ن الخطية كما معادلة مصفوفة واحدة لحلها. هنا يمكنك أن تجد مثال عظيم: HTTP: //blogs.mathworks كوم / اختيار / 2007/09/13 / ماتلاب الأساسيات الفيديو وحل الخطية، المعادلات / (فيديو)!
وانظر أيضا هذه الصفحات:
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
وبالتالي س ~ 0،8182، ص ~ 0.6364.
وهذا تماما أسرع طريقة لحل المعادلات الخطية في MATLAB هي ببساطة لإعداد المعادلة على شكل
AX = B
وثم حل من قبل
X = A\B
ويمكنك إصدار
help mldivide
وللعثور على مزيد من المعلومات حول تقسيم المصفوفة وما القيود لديه.
ومدونة لطريقة تكرارية Guase زايدل تول هو خطأ التسامح 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