用MATLAB求代数余子式

我求代数余子式

for i=1:3
for j=1:3
a{i,j}=H(i,:)
a{i,j}=H(:,j)
end
end

这段小程序哪里出的问题?

1、首先打开代表电脑上的“matlab”,软件主界面如下图所示,在箭头处命令行窗口输入命令即可运行。

2、求余运算主要使用rem函数和mod函数,具体的调用格式为rem(x,y)和mod(x,y)。

3、下面把rem函数中的x换为负数,rem(-3,4)中使用fix函数求得结果为0,输出为-3。

4、mod(x,y)=x-y.*floor(x./y),floor函数为向左取整。mod(3,4)中使用floor函数求得结果为0,输出为3。

5、下面把mod函数中的x换为负数。mod(-3,4)中使用floor函数求得结果为-1,输出为1。然后运行就完成了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-20
用MATLAB求代数余子式有定义求和根据矩阵的逆求两种方法
例如
第一种:根据定义求
H=[1,2,3;1,4,9;1,8,27];
[n,m]=size(H);
for i=1:n
ni=1:n;
ni(i)=[];
for j=1:m
mj=1:m;
mj(j)=[];
A(i,j)=(-1)^(i+j)*det(H(ni,mj))
end
end
A=A'
B在这里是矩阵H的伴随矩阵
第二种:根据矩阵的逆来求
A=det(H)*inv(H)
即可得:H(i,j)对应的代数余子式为A(j,i)
第2个回答  2008-11-22
我刚查了书,对代数余子式和余子式的定义看了一下.代数余子式为余子式乘上一个与下标有关的-1次方.代数余子式不是固定的,它与取的a(i,j)有关,就是说:
Mij为a(i,j)的代数余子式,而余子式就是把i行和j列去掉留下的n-1阶方阵.我编写了如下程序.如果定义不一样,则另当别论了.
求a(1,1)代数余子式:
>> H=[1,2,3;1,4,9;1,8,27]

H =

1 2 3
1 4 9
1 8 27

>> H(:,1)=[];H(1,:)=[];r=det(H)*(-1)^(1+1)%当不是a(1,1)时,把那里的1换成i,j.

r =

36

a{i,j}=H(i,:) %你这样引用是不对的,矩阵用[],不用{},只有类才用{}.
第3个回答  推荐于2017-10-08
我不知道有没有现成的函数.

clear
H=[1,2,3;1,4,9;1,8,27];
[n,m]=size(H);
for i=1:n
ni=1:n;
ni(i)=[];
for j=1:m
mj=1:m;
mj(j)=[];
A(i,j)=(-1)^(i+j)*det(H(ni,mj))
end
end

%检验:
A'./det(H)*H%应当为单位阵本回答被提问者采纳