我调试了下 错误出在第七行
我把前六行各变量的值给你列出来,你看一下,为什么会出现这样的错误
Name Size Bytes Class AttributesX 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之父,编程实践怎么样等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)