大家看看下面matlab 程序,谢谢

大家看看下面matlab 程序,谢谢,第1张

我调试了下 错误出在第七行

我把前六行各变量的值给你列出来,你看一下,为什么会出现这样的错误

 Name      Size            Bytes  Class     Attributes

  X         3x4                96  double              

  Y         2x4                64  double              

  eps       1x1                 8  double              

  m         1x1                 8  double              

  n         1x1                 8  double              

  s         1x1                 8  double

对于第七行

>> zeros(1,n)

ans =

     0     0     0     0

>> epsones(1,m+s)

ans =

   10e-10 

    10000    10000    10000    10000    10000

function f = myfunc(c, x, y)

f = y - c(1) + x ^ c(2);

以上保存为文件 myfuncm

在命令行下输入:

c = lsqnonlin('myfunc', [0 0], [], [], [], x, y);

A = c(1)

B = c(2)

《MATLAB之父:编程实践》一书是MATLAB之父Cleve Moler的最新力作。作者通过20个有趣的主题介绍了MATLAB程序设计的思想与方法,主题内容包括:迭代、斐波那契数、日历与时钟、矩阵、线性方程组、蕨型叶分形、谷歌的网页排名值、指数函数、T 形积木、幻方问题、井字棋的魅力、生命游戏、曼德勃罗集、数独、常微分方程、捕食者与猎物模型、轨道、浅水方程、摩尔斯电码、音乐。通过这些主题也循序渐进地介绍了微积分、矩阵、线性代数方程、指数、复数、分形、微分方程甚至偏微分方程等数学内容,即使没有这些方面的基础或没有学过相关的课程,也可以通过本书的介绍很好地理解本书的基础知识,为以后进一步学习这些课程提供全新的视角和理解方法。本书作者的思路独特、视野宽广,语言严谨又不失风趣幽默,案例程序完整精练,易学易懂。

《MATLAB之父:编程实践》一书适合于大学低年级的学生,也可供各学科及有一定MATLAB基础的读者作参考用。

% 主函数

function test()

x = [];

for i=1:100

flag = isprime(i);

if flag

x = [x,i];

end

end

disp('1-100之间的质数有:');

x

end

% 子函数

function out = isprime(n)

flag = 1;

for i=2:ceil(sqrt(n))

if mod(n,i)==0

flag = 0;

break;

end

end

out = flag;

end

九宫阵的解法

读书时,饭间看青年报,上面每期都有99的九宫阵心血来潮,编写了matlab程序,将之求解完毕

输入数据为99的数组

思路是,首先根据规则,确定每个方格中可能值,首先确定唯一可能值,进行试探时,也选取可能性小的那个方格进行处理走不通时,退栈,更新数值,重新试探

程序源代码如下:(很多有些记不清楚了)

function [JGTNData]=JGZ()

clear;

JGZ=zeros(9,9);

AllData(1:9)=3;

JGTData=zeros(9,9,11);

for i=1:9

for j=1:9

for k=1:9

JGTData(i,j,k)=k;

end

JGTData(i,j,10)=9;

JGTData(i,j,11)=0;

end

end

% Inputdata=[1,1,6;1,2,9;1,4,2;1,8,3;2,1,7;2,3,5;2,4,8;2,8,2;3,2,3;3,3,2;3,4,5;3,8,8;4,1,2;4,3,4;4,9,5;5,2,6;5,5,9;5,9,3;6,6,2;6,8,7;7,1,5;7,2,4;7,5,7;8,3,9;8,5,2;8,9,1;9,4,9;9,7,8] ;

%Inputdata=[1,1,8;1,4,1;1,5,4;1,7,7;2,1,7;2,6,8;2,8,1;2,9,6;3,4,6;3,5,9;3,8,8;3,9,3;4,2,5;4,5,2;5,1,3;6,3,8;6,6,4;6,8,6;6,9,5;7,3,5;7,9,2;8,1,4;9,2,2;9,4,9;9,5,1;9,7,8];

%Inputdata=[1,3,6;1,5,2;1,7,7;1,8,8;2,2,1;2,4,9;2,6,7;2,9,6;3,6,6;3,7,3;4,2,9;4,4,8;5,3,4;5,5,6;5,8,2;6,1,2;6,6,1;6,7,8;6,8,9;7,3,3;7,8,5;8,2,4;8,4,2;8,9,8;9,1,1;9,4,6;9,6,5;9,7,4];

% Inputdata=[1,1,6;1,4,8;2,1,5;2,8,2;3,6,5;3,7,1;4,1,3;4,6,2;4,8,8;4,9,7;5,3,2;5,4,7;5,7,3;5,9,9;6,2,4;6,5,3;6,9,6;7,1,7;7,4,4;7,5,9;7,7,6;8,2,6;8,5,5;8,6,8;8,8,7;9,3,5;9,5,1;9,9,4];

Inputdata=[1,1,6;1,4,8;2,1,5;2,8,2;3,6,5;3,7,1;4,1,3;4,6,2;4,8,8;4,9,7;5,3,2;5,4,7;5,7,3;5,9,9;6,2,4;6,5,3;6,9,6;7,1,7;7,4,4;7,5,9;7,7,6;8,2,6;8,5,5;8,6,8;8,8,7;9,3,5;9,5,1;9,9,4];

xsize=size(Inputdata);

for i=1:xsize(1)

tempi=Inputdata(i,1);

tempj=Inputdata(i,2);

JGZ(tempi,tempj)=Inputdata(i,3);

AllData(JGZ(tempi,tempj))=AllData(JGZ(tempi,tempj))-1;

JGTData(tempi,tempj,1:9)=0;

JGTData(tempi,tempj,JGZ(tempi,tempj))=JGZ(tempi,tempj);

JGTData(tempi,tempj,10)=1;

JGTData(tempi,tempj,11)=JGZ(tempi,tempj);

end

JGZ;

JGTData;

[JGZ1,JGTData1]=PDDJGT(JGZ,JGTData);

JGZ=JGZ1;

JGTData=JGTData1;

%%%%%%%%%%判断是否有可以确定的数

for i=1:9

for j=1:9

if JGTData(i,j,10)==1 & JGTData(i,j,11)==0%可以确定

JGZ(i,j)=max(JGTData(i,j,1:9));

JGTData(i,j,11)=JGZ(i,j);

end

end

end

JGZ;

JGTData(:,:,10);

%%%%%%%%

JGTPD=zeros(9,9);

while max(max(JGTPD~=JGTData(:,:,10)))

JGTPD=JGTData(:,:,10);

%%%%%%%%%%%第二次

[JGZ1,JGTData1]=PDDJGT(JGZ,JGTData);

JGZ=JGZ1;

JGTData=JGTData1;

%%%%%%%%%%判断是否有可以确定的数

for i=1:9

for j=1:9

if JGTData(i,j,10)==1 & JGTData(i,j,11)==0%可以确定

if max(JGTData(i,j,1:9))>0 %有错

JGZ(i,j)=max(JGTData(i,j,1:9));

JGTData(i,j,11)=JGZ(i,j);

end

end

end

end

JGZ;

JGTData(:,:,10);

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%加入一个试探值

NTData=1;

ForT=0;

TFT=0;%有无错

%xsize=find(JGTPD==2);

%xsize=xsize(1);

%while xsize

while NTData>=1 & ForT==0

NTData=1;

JGTN=1;

JGTNData(JGTN,:,:)=zeros(9,9);

while max(max(JGTPD~=ones(9,9))) & TFT==0

while max(max(JGTPD~=ones(9,9))) & TFT==0

xsize=find(JGTPD==2);

if xsize~=[]

xsize=xsize(1);

tempi=mod(xsize,9);

if tempi==0

tempi=9;

tempj=floor(xsize/9);

else

tempj=floor(xsize/9)+1;

end

tempsize=find(JGTData(tempi,tempj,1:9)>0);

TData(NTData,1:4)=[tempi,tempj,(JGTData(tempi,tempj,tempsize(1))),(JGTData(tempi,tempj,tempsize(2)))];%加入值同时保留另外一个值

TAData(NTData,1:9,1:9,1:11)=JGTData;

TAJGZ(NTData,1:9,1:9)=JGZ;

JGZ(tempi,tempj)=TData(NTData,3);

JGTData(tempi,tempj,1:9)=0;

JGTData(tempi,tempj,JGZ(tempi,tempj))=JGZ(tempi,tempj);

JGTData(tempi,tempj,10)=1;

JGTData(tempi,tempj,11)=JGZ(tempi,tempj);

NTData=NTData+1;

TFT=0;

%%%%%%%%%%%%%重新判断

JGTPD=zeros(9,9);

while max(max(JGTPD~=JGTData(:,:,10)))

JGTPD=JGTData(:,:,10);

%%%%%%%%%%%第二次

[JGZ1,JGTData1]=PDDJGT(JGZ,JGTData);

JGZ=JGZ1;

JGTData=JGTData1;

%%%%%%%%%%判断是否有可以确定的数

for i=1:9

for j=1:9

if JGTData(i,j,10)==1 & JGTData(i,j,11)==0%可以确定

if max(JGTData(i,j,1:9))>0 %有错

JGZ(i,j)=max(JGTData(i,j,1:9));

JGTData(i,j,11)=JGZ(i,j);

else

TFT=1;%有错

end

end

end

end

JGZ;

JGTData(:,:,10);

end%%%while

if min(min(JGTPD))==0

TFT=1;

end

else%%%%%%%%%%%无法填写

TFT=1;%有错

end

end%%%%%while

if TFT==1 %%因为有错退出

if NTData>0

NTData=NTData-1;

tempi=TData(NTData,1);

tempj=TData(NTData,2);

for i=1:9

for j=1:9

JGTData(i,j,1:11)=TAData(NTData,i,j,1:11);

JGZ(i,j)=TAJGZ(NTData,i,j);

end

end

% JGTData=TAData(NTData,1:9,1:9,1:11);

JGZ(tempi,tempj)=TData(NTData,4);

JGTData(tempi,tempj,1:9)=0;

JGTData(tempi,tempj,JGZ(tempi,tempj))=JGZ(tempi,tempj);

JGTData(tempi,tempj,10)=1;

JGTData(tempi,tempj,11)=JGZ(tempi,tempj);

JGTPD=JGTData(:,:,10);

TFT=0;

else

JGTPD=ones(9,9);

end%%if

end%%%if

end%%%while

JGTNData(JGTN,:,:)=JGZ;

JGTN=JGTN+1;

if TFT==1 %%因为有错退出

if NTData>1

NTData=NTData-1;

tempi=TData(NTData,1);

tempj=TData(NTData,2);

for i=1:9

for j=1:9

JGTData(i,j,1:11)=TAData(NTData,i,j,1:11);

JGZ(i,j)=TAJGZ(NTData,i,j);

end

end

% JGTData=TAData(NTData,1:9,1:9,1:11);

JGZ(tempi,tempj)=TData(NTData,4);

JGTData(tempi,tempj,1:9)=0;

JGTData(tempi,tempj,JGZ(tempi,tempj))=JGZ(tempi,tempj);

JGTData(tempi,tempj,10)=1;

JGTData(tempi,tempj,11)=JGZ(tempi,tempj);

JGTPD=JGTData(:,:,10);

TFT=0;

else

JGTPD=ones(9,9);

ForT=1;

end%%if

end%%%if

JGTPD=zeros(9,9);

NTData;

JGZ;

end%%while NData==0

function [JGZ2,JGTData2]=PDDJGT(JGZ1,JGTData1)

%%%%%%%%%%%%%%%%%%%%%判断横

for i=1:9

for j=1:9

if JGZ1(i,j)>0 %有数据,清除其他中这个数据

for k=1:9%横

if j~=k

if JGTData1(i,k,JGZ1(i,j))>0

JGTData1(i,k,JGZ1(i,j))=0;

JGTData1(i,k,10)=JGTData1(i,k,10)-1;

end

end

end

for k=1:9%列

if i~=k

if JGTData1(k,j,JGZ1(i,j))>0

JGTData1(k,j,JGZ1(i,j))=0;

JGTData1(k,j,10)=JGTData1(k,j,10)-1;

end

end

end

%%%%%%%%%%%%%%%%%%%%小格

for i1=(ceil(i/3)-1)3+1:(ceil(i/3)-1)3+3

for j1=(ceil(j/3)-1)3+1:(ceil(j/3)-1)3+3

if i1~=i & j1~=j

if JGTData1(i1,j1,JGZ1(i,j))>0

JGTData1(i1,j1,JGZ1(i,j))=0;

JGTData1(i1,j1,10)=JGTData1(i1,j1,10)-1;

end

end

end

end

end

end

end

JGTData2=JGTData1;

JGZ2=JGZ1;

end

or(A,B)是逻辑判断中的“或”

A,B其中一个非0,表达式的值为1

A,B都为0,表达式的值为0

______________________________-

再给你补充两个:

and(A,B) "与"

not(A) “非”

以上就是关于大家看看下面matlab 程序,谢谢全部的内容,包括:大家看看下面matlab 程序,谢谢、求一个MATLAB的程序:x=1,2,3。。。15,y=11,12,13。。。25。公式为y=A-X^B。想求出A和B的值。、matlab之父,编程实践怎么样等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10207679.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存