在fsolve中使用循环并将结果插入函数

时间:2012-04-02 13:03:46

标签: matlab

我的功能共有4个未知数(2x2)。 我得到了解决方案。但我要做的是改变一些参数,以便我可以看到原始解决方案的变化。

但是matlab一直说,在A(I)= B中,'I'和元素B的数量必须相同。

示例代码可以是这样的(在代码中,psi01 psi02 psi03 psi04是变化的参数);

R=902;
psi01=0.9:-0.1:0.1;
psi11=0.9:-0.1:0.1;
psi02=0.1:0.1:0.9;
psi12=0.1:0.1:0.9;
E0=[R/4 R/4; R/4 R/4];
for i=1:9
vv=@(E) [
g/E(2,1)-(th1+psi12(i)/psi11(i)*th2)-((psi01(i)/psi11(i))+a*b)/b*(g/E(1,1)-(rho*b*    (psi11(i)/psi01(i))/(psi01(i)/psi11(i)+a*b))*(th1+psi12(i)/psi11(i)*th2)*(th1+psi02(i)    /psi11(i)*th2)  );
g/E(2,2)-(psi11(i)/psi12(i)*th1+th2)-((psi02(i)/psi12(i))+a*b)/b*(g/E(1,2)-(rho*b*(psi12(i)/psi02(i))/(psi02(i)/psi12(i)+a*b))*(psi11(i)/psi12(i)*th1+th2)*(psi01(i)/psi02(i)*th1+th2)  );
    R-(E(1,1)+E(1,2)+E(1,1)+E(2,2));
    E(1,2)- c(E)*E(1,1);
    E(2,2)- d(E)*E(2,1)
    ];
Ep2(i)=fsolve(vv, E0);
end

1 个答案:

答案 0 :(得分:2)

如果fsolve的结果是2x2数组,那么你怎么能期望将它保存为标量?

Ep2(i)=fsolve(vv, E0);

这里使用Ep2存储单个元素,即标量。你不能将4个元素合二为一,也不会出错。

使用三维数组,结构或使用单元格数组。