私はこれらの未知数と方程式:u1、u2、... u10とeq1、eq2、... eq10を持っています。 現在、vpasolveを使用してそれらを解決しています 通常は計算する価値がありますが、その値が非常に低く(< 0.0001)、vpasolveが残りを解決した後(約10分)間違っていた、または未知数を排除しないようにしました。すべての10個の未知数のためのようにmatlab make IF関数内でのソートの決定
verif=zeros(10); %false value for removing unknowns
syms if verif(1)=0
write 'u1'
end
...と:
したがって、このような何かを意味します。 vpasolve
には、未知数および方程式が書き込まれているかどうかを決定する同様の方法があります。 これは削除がOKであることを確認する必要がある場所です。そして、これは< 0.0001決定が行われる場所である。
if u1<0.0001
verif(1)=1;
私の問題は、私が正しく最初のコードを書く方法を知らないということですが(100、未知数のために、より簡単のようなものをどのように行うのかforループ)。
EDIT 1 これはすべてforループ内にあります。ための方法MathWorks社のMATLABの作品のいくつかのものはできません(または避けるべきである)ことを私はJava開発者に話されていると、彼は私に説明
EDIT 2
。
結論は、式vpasolve
が別の場所で必要であり、その中にif
が必要であるということを準備しなければならないということでした。
私は見ることができない、他の何かが間違っているのであれば、これはそれが今どのように見えるかで、(私は化学者だ)と言ってください。
verif=zeros(10); %false value for removing unknowns
eq=[eq1,eq2...eq10]; %original eq's
eq(2,:)=eq(1,:); %eq's I can modify
for loop
syms u1 u2...u10;
[u1,u2...u10]=vpasolve(eq(2,:),[u1,u2...u10];
%this is where the verification of my assumption should take place
%to note that u1...u4 are not to be judged this way
if verif(5)=1
%the verification I need
if %verification returns that the assumption was wrong-this normally does not happen
eq(2,5)=eq(1,5);
verif(5)=0; %wait a few loops before making that assumption again
run the for loop again
end
end
...
if u5<0,0001
eq(2,5)=(u5==0);
verif(5)=1;
end
...
end for
そして苦しむ私の他の質問についての質問同じ問題です...私はそれらを削除するか、ここにリンクを張るべきですか?