加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

matlab的幻方程序

(2010-04-09 21:42:36)
标签:

matlab

幻方

程序

杂谈

分类: 学习知识

      本程序是MATLAB的幻方程序,因为它需要大量计算,而且可以将所有的n阶幻显示出来,因此本程序的实用性不佳,有志者可以将其复制到自己的大型计算机上进行计算,我计算了3阶幻方就至少需要362880次排序,计算了50000左右将近花了20分钟,因此我停止了计算,希望有人了计算出来。

程序如下所示:

function main()
num=input('input the naumber n of [n*n]:')
a=perms('123456789');
a
m1=length(a(1,:));
n1=length(a(:,1));
for m=1:n1
    for n=1:m1
b(m,n)=str2num(a(m,n));
fprintf('362880')
m
    end
end


jishu1=1;
jishu2=1;
for i=1:n1;
    j=1;
   
for hang=1:num
     for lie=1:num
        write(hang,lie)=b(i,j);
        jishu1=jishu1+1
        j=j+1;
     end
end
    
  
     hang1=hangsum(write);
     lie1=liesum(write);
     jishu2=1+jishu2
    
     if hang1(1,1)==lie1(1,1)
         write
     end
        
end


 %************判断矩阵中a是否有x,有则返回1;无则返回0*********
 function t=panduan(a,x)
m1=length(a(1,:));
n1=length(a(:,1));
t=0;
for m=1:m1
    for n=1:n1
        if a(m,n)==x
            t=1;           
        end
    end
end

%************矩阵a中行数求和*********
function he=hangsum(a)
num=length(a(1,:));
he=zeros(num,1);
for i=1:num
    he=a(:,i)+he;
end
%************矩阵a中列数求和*********
function he=liesum(a)
num=length(a(:,1));
he=zeros(1,num);
for i=1:num
    he=a(i,:)+he;
end
   

0

阅读 收藏 喜欢 打印举报/Report
前一篇:proe 绘制DNA
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有