【发布时间】:2016-07-24 16:06:51
【问题描述】:
我有这些未知数和方程:u1,u2,...u10 和 eq1,eq2,...eq10。 我目前正在使用 vpasolve 解决它们 通常它们值得计算,但有时它们的值非常低(
所以这意味着:
verif=zeros(10); %false value for removing unknowns
syms if verif(1)=0
write 'u1'
end
... 每 10 个未知数以此类推。
vpasolve 将有类似的方式来确定是否编写了未知数和方程。
这是我应该检查它是否可以移除的地方。这就是做出
if u1<0.0001
verif(1)=1;
我的问题是我不知道如何正确编写第一个代码以及如何更轻松地处理 100 个未知数(类似于 for 循环)。
编辑 1 这一切都在一个 for 循环中。
编辑 2
我与一位 Java 开发人员交谈过,他向我解释说,由于 matlab 的工作方式,有些事情是不可能的(或应该避免的)。
结论是我应该在其他地方准备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
还有一个关于我遇到相同问题的其他问题的问题...我应该删除它们,还是在此处放置链接?
【问题讨论】:
标签: matlab loops if-statement for-loop