У меня есть некоторые проблемы с установкой n-линейных уравнений в matlab.I не знаю, как я могу объявить в matlab.I нужен код matlab для установки n-линейных уравнений ..набор 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
У меня есть n-уравнения и n-неизвестные. Что я должен сделать, так это определить эти уравнения, чтобы при вводе ввода был задан выход. Это пример ввода и вывода нашей программы. Это поможет распознать нашу проблему. A1X1 + A2X2 .... + AnXn = B1. , , AnXn ............... = Bn, что мы имеем n-неизвестные и n уравнений, и я должен определить эти уравнения в matlab. –
ТАК? В чем проблема? Прочитайте wiki ... TUrning n-уравнений в матричное уравнение является одной из основных задач линейной алгебры. Если вы не можете этого сделать, то ваша проблема в плохую математику, а не matlab ... – Gacek
Вы можете решить линейную систему по-разному, в зависимости от того, существует ли единственное решение или нет.
Простым способом является сокращение его до уменьшенного эшелона (rref).
Рассмотрим систему:
x + 5y = 4
2x - y = 1
можно записать коэффициент матрицы А, а РИТ, В следующим образом: ('
оператор транспонирования)
>> 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.
У меня есть n-уравнения и n-неизвестные. Что я должен сделать, так это определить эти уравнения, чтобы при вводе ввода выход будет дан.Это пример ввода и вывода нашей программы. Это поможет распознать нашу проблему. A1X1 + A2X2 .... + AnXn = B1 . . . AnXn ............... = Bn что у нас есть n-неизвестные и n уравнений, и я должен определить эти уравнения в Matlab. –
Абсолютно быстрый способ решения линейных уравнений в MATLAB просто настроить ваше уравнение в форме
AX = B
, а затем решить,
X = A\B
Вы можете оформить
help mldivide
, чтобы найти дополнительную информацию о делении матрицы и ограничениях, которые она имеет.
Но это будет работать, только если есть уникальное решение. (Ie A обратим). –
@Alex: Да, и это произведет предупреждение, сказав это. Он будет работать лучше, чем inv (A) * B. Я также проверил ваше решение, и он испытывает такую же проблему (пока он длиннее). –
код для итерационного метода Зейделя 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
itmax - максимальное количество итераций, которые препятствуют тому, чтобы программа переходила к циклу noninishrd. – Abolfazl
Не дублирует свои комментарии, и добавить домашнее задание тега, если это необходимо. –