0

私はMatlabで中性子星を含む長いコードに取り組んでおり、問題が発生しました。やりたいことは、r の方程式を解く for ループを作成することだけです。次の i 回目の反復に移る前に、r についてその 1 つの解決済みの値を取得し、それを別の方程式に代入して b について解決する必要があります。次に、最初に戻って、次の i 番目のステップで 2 つの方程式をもう一度実行できます。これをプログラミングするのは非常に困難なようで、変数を定義する方法に関係があると思います。コードのその部分は次のとおりです。

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

あなたには2つの間違いがあります。まず、r を使用して b を参照することはできません。これは、r は実数であり、配列は整数値によってのみ参照できるためです。次のようにする必要があります。

b(i) = ...

そしてそうではない

b(r(i)) = ...

もう 1 つのことは、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 に答える