Помогите пожалуйста, негде протестировать прогу:(

Обсуждение вопросов, связанных с другими тулбоксами

Модератор: Admin

surikat
Пользователь
Сообщения: 1
Зарегистрирован: Вс май 06, 2018 9:44 pm

Помогите пожалуйста, негде протестировать прогу:(

Сообщение surikat » Вс май 06, 2018 10:05 pm

Суть задачи: Решить СЛАУ 3-ого порядка матричным методом, не используя стандартные команды( кроме det(a) , её разрешили)
Прогу написал, но так как негде её проверить, не знаю, есть ли ошибки. Прошу посмотреть и сказать что не так. Спасибо.
В принципе, название функций объясняет что я пытаюсь сделать.


Код: Выделить всё

function otvet
detA=opredel;
x=korni;
if(detA==0)
      disp(' матрица вырожденная');
      return ;
else
     x(:);      % вывод элементов вектора
end

function x=korni                            % Матричный метод: перемножаю матрицу обратную с вектором "ответов"
Aobr=obrat;
[a,b]=massivi;
for i=1:3
    s=0;
    for j=1:3
        s=s+Aobr(i,j)*b(j,1);
    end
    x(i,1)=s;
end

function Aobr=obrat                  % делю каждый элемент на определитель и тем самым нахожу обратную матрицу
y=transpon;
detA=opredel;
for i=1:3
    for j=1:3
        Aobr(i,j)=y(i.j)/detA;
    end
end

function y=transpon                               % Транспонирую матрицу
A=minorov;
for i=1:3
    for j=1:3
        y(j,i)=A(i,j);
    end
end

 function A=minorov                              % матрица состоящий из алгебраических дополнений каждого элемента
[a,b]=massivi;
for i=1:3
    for j=1:3
     f=a(:);  % здесь и в следующей строке передаю все элементы массива а массиву f
     f=a;
     f(i,:)=[];
     f(:,j)=[];
     A(i,j)=(-1)^(i+j)*det(f);
    end
end

function detA=opredel                     
[a,b]=massivi;
detA=det(a);                 

fuction [a,b]=massivi
a=fix(rand(3)*10);                  % Матрица с коэффициентами переменных
b=fix(rand(3,1)*10);               % вектор тех значений, которым равны уравнения


maria_kipke
Пользователь
Сообщения: 90
Зарегистрирован: Чт окт 05, 2017 4:37 pm

Re: Помогите пожалуйста, негде протестировать прогу:(

Сообщение maria_kipke » Чт май 10, 2018 11:11 am

x(:) % вывод элементов вектора - надо без точки с запятой

Aobr(i,j)=y(i, j)/detA; - в 27-й строке у вас стоит точка вместо запятой

fuтction [a,b]=massivi - ошибка в слове function

Что значит негде? Компа нет, или MATLAB? Если нет MATLAB - скачайте GNU Octave, и тестируйте на здоровье.