0

我正在编写涉及 Matlab 中的中子星的长代码,但遇到了障碍。我要做的就是创建一个 for 循环,在其中我求解 r 的方程。在进行下一次第 i 次迭代之前,我需要将 r 的单个求解值代入另一个方程以求解 b。然后它可以回到开始并在下一个第 i 步再次执行这两个方程。我似乎很难对此进行编程,我认为这与我定义变量的方式有关。这是代码的那一部分:

clear all;

p=input('TauesNtm1 Value?');
n=input('Nt Value?');
t=input('Taues1 Value?');

for i=(2:1:((n/2)-2)/1);
    r(i)=.5*Log10((2*p)^((1 - 2*(i - 2))/(n - 4))*(t/2)^((2*(i - 2))/(n - 4)))+(i - 2)*(((n - 4)*p-2*p-.5*t)/(n - 4));
    b(r(i))=.434294*(.190352 + 2.20509566529930*r+1.379117301391070*r^2-0.481593138241581*r^3- 0.2311271889879584*r^4+0.500820485853822*r^5-0.269537234996903*r^6-0.20063340749777*r^7+0.475894136618535*r^8-0.2831206627297433*r^9-0.2328164535174437*r^10+0.585886001688777*r^11-0.3690986055298708*r^12-0.310009361710399*r^13+0.817684785462915*r^14-0.537360306829214*r^15-0.447280339896678*r^16+1.229551315307617*r^17-0.836592197418212*r^18-0.679642677307128*r^19+1.942584991455078*r^20);
end

关于我做错了什么的任何想法?

4

1 回答 1

0

你有两个错误。首先,您不能使用 r 引用 b,因为 r 是实数,并且数组只能由整数值引用。你需要这样做:

b(i) = ...

不是那样的

b(r(i)) = ...

另一件事是,在计算 b 时,您使用 r,它是一个向量。如果我理解正确,您只希望 b 的公式取决于 r(i)。您需要将 r 更改为 r(i)。这是生成的代码:

for i=(2:1:((n/2)-2)/1);
    r(i)=.5*log10((2*p)^((1 - 2*(i - 2))/(n - 4))*(t/2)^((2*(i - 2))/(n - 4)))+(i - 2)*(((n - 4)*p-2*p-.5*t)/(n - 4));
    b(i)=.434294*(.190352 + 2.20509566529930*r(i)+1.379117301391070*r(i)^2-0.481593138241581*r(i)^3- 0.2311271889879584*r(i)^4+0.500820485853822*r(i)^5-0.269537234996903*r(i)^6-0.20063340749777*r(i)^7+0.475894136618535*r(i)^8-0.2831206627297433*r(i)^9-0.2328164535174437*r(i)^10+0.585886001688777*r(i)^11-0.3690986055298708*r(i)^12-0.310009361710399*r(i)^13+0.817684785462915*r(i)^14-0.537360306829214*r(i)^15-0.447280339896678*r(i)^16+1.229551315307617*r(i)^17-0.836592197418212*r(i)^18-0.679642677307128*r(i)^19+1.942584991455078*r(i)^20);
end
于 2012-09-22T12:11:05.127 回答