3 / 3 / 0
Регистрация: 01.03.2015
Сообщений: 122
1

Определитель через рекурсию

10.10.2015, 12:41. Показов 2846. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Требуется написать функцию для вычисления определителя. Я написала рекурсивный алгоритм с разложением по первому столбцу. Не работает. Точнее, выдает все время 0, кроме размера матрицы 1х1. Где я накосячила?

Код
function d1 = opred(A)
 [s,t] = size(A);
 if s==1 
  d1=A(1,1);
 else
  d1=0;
  for i=1:s
    B=A;
    B(:,1)=[];
    B(i,:)=[];
    d1=d1+opred(B)*A(1,i)*(-1)^(i+1);
  end
 end
end
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.10.2015, 12:41
Ответы с готовыми решениями:

Вычислить определитель через миноры
Вычислить определитель путём разложения i строки либо j столбца с применением форм. Размерность...

Число из 10-ой в 2-ю ,через рекурсию.
Доброго дня. Требуется написать программу (из 2-ой в 10-ю) .С использованием рекурсии. Выход...

поиск через рекурсию
С помощью массива структур описать каталог компьютерных игр, предусмотрев следующие характеристики:...

Посчитать n^(n-2)^(n-4)^(n-6)... через рекурсию
Добрый день, форумчане! Помогите, пожалуйста, с заданием. Необходимо посчитать n^((n-2)^(n-4)^(n-6)...

4
5221 / 3552 / 372
Регистрация: 02.04.2012
Сообщений: 6,458
Записей в блоге: 17
12.10.2015, 09:36 2
хм... у меня считает, но не верно
Matlab M
>> A = randn(3)
 
A =
 
    0.5377    0.8622   -0.4336
    1.8339    0.3188    0.3426
   -2.2588   -1.3077    3.5784
 
>> opred(A)
 
ans =
 
   -1.9943
 
>> det(A)
 
ans =
 
   -4.7434
0
3 / 3 / 0
Регистрация: 01.03.2015
Сообщений: 122
12.10.2015, 15:32  [ТС] 3
Да, сорри, тоже считает, но тем не менее, не верно.
Где может быть ошибка. Просто не хочется переделывать алгоритм на принципиально другой. По идее, этот же должен работать.
0
186 / 191 / 43
Регистрация: 13.05.2013
Сообщений: 709
12.10.2015, 17:14 4
Лучший ответ Сообщение было отмечено luivilla как решение

Решение

Час промучался, пока на листочке не посчитал :\ А ошибка плевая - перепутаны строки и столбцы.
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function d = opred(A)
[s,t] = size(A);
if s == 1
    d = A(1,1);
% elseif s == 2
%     d = A(1,1)*A(2,2)-A(1,2)*A(2,1);
else
    d = 0;
    for i = 1:s
        B = A;
        B(1,:) = [];
        B(:,i) = [];
        d = d+opred(B)*A(1,i)*(-1)^(i+1);
    end;
end;
end
2
3 / 3 / 0
Регистрация: 01.03.2015
Сообщений: 122
12.10.2015, 19:20  [ТС] 5
мда, я просто дятел: сама же написала про столбец, а умножала на строку.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.10.2015, 19:20
Помогаю со студенческими работами здесь

Факториал через рекурсию
Подскажите, как можно вычислить факториал некоторого числа через рекурсию функций (через цикл либо...

последовательность через рекурсию
нужна ваша помощь задача такая: написать рекурсивную функцию для ввода последовательности чисел и ...

Рисунок через рекурсию
(Пример, n=4.)

НОД через рекурсию
Нужно написать программу для нахождения НОД через рекурсию по такому алгоритму: 1) задать два...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru