[已答复] matlab for循环问题

[复制链接]
nech 发表于 2020-11-23 15:10:27
syms p
clc
clear
p0=1;
tol=1e-20;
max=1000;
P(1)=p0;
pp=zeros(10,1);
xx=zeros(10,1);
i=1;
for x=0.912e33:0.001e+33:5.36e+33
    xx(i)=x;
for k=1:max
    P(k+1)=0.03716.*log(x)-2.6604+0.01858.*log(P(k));
    err(k+1)=abs(P(k+1)-P(k));
    if err(k+1)<tol
        p=P(k+1)
        pp(i)=p;
        i=i+1;
        break;

    end
end

end
syms n
n0=1;
tol=1e-20;
max=1000;
N(1)=n0;
nn=zeros(10,1);
for x=0.912e33:0.001e+33:5.36e+33
    xx(i)=x;
    pp(i)=p;
for m=1:max
    N(m+1)=6428.2.*(p+0.0043125.*(2+log(9.9452./((x.*N(m)).*10^(-25))))).^(1/3)./x.^(1/3);
    err(m+1)=abs(N(m+1)-N(m));
    if err(m+1)<tol
        n=N(m+1)
        nn(i)=n;
        i=i+1;
        break;

    end
end

end
现在第一个循环可以迭代出一系列p值,在第二个迭代中,式子中的p值应该是和x一一对应的,可是现在所有的p值都是第一个迭代中的最后一个计算结果,请问如何解决?

1 条回复


月既不解饮 发表于 2020-12-17 15:51:09
第一个循环求P值之后好像没有保存,显然会把前面的P覆盖掉。在for语句之前添加一个空的变量
  1. p=[];
复制代码

在for循环语句中把每一个P值保存在这个变量中
  1. np=0.03716.*log(x)-2.6604+0.01858.*log(P(k));
  2. p=[p,np];
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表