множество n-линейных уравнений в Matlab - PullRequest
0 голосов
/ 26 ноября 2009

У меня возникли проблемы с настройкой n-линейных уравнений в matlab. Я не знаю, как я могу объявить в matlab. Мне нужен код matlab для установки n-линейных уравнений ..

Ответы [ 4 ]

3 голосов
/ 26 ноября 2009

Вы можете написать 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

1 голос
/ 27 ноября 2009

Абсолютно быстрый способ решения линейных уравнений в MATLAB - просто настроить уравнение в форме

AX = B

, а затем решить с помощью

X = A\B

Вы можете выдать

help mldivide

чтобы найти больше информации о матричном делении и его ограничениях.

1 голос
/ 26 ноября 2009

Вы можете решить линейную систему различными способами, в зависимости от того, существует ли уникальное решение или нет.

Простой способ - уменьшить его до уменьшенного эшелона (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.

0 голосов
/ 03 февраля 2011

Код для итерационного метода Guase Seidel Тол толерантность к ошибкам 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
...