我想在MATLAB中求解二次二次方程式5401次。每次我只更改方程式中的一个参数。我找不到解决此问题的好方法。这是代码。
function F = root2d(x)
w2 = 5.67*10^-8*0.00001/(1/0.9+1/0.95-1);
w2_ = w2/0.028;
w3 = 5.6*0.00001;
w3_ = w3/0.028;
F(1) = 0.045*x(1)-(w3+0.045)*x(2)+w3*(**37**+273.15)-w2*(x(2)^4-(**37**+273.15)^4);
F(2) = -w3_*x(1)+w3_*(**37**+273.15)-w2_*(x(2)^4-(**37**+273.15)^4);
x0 = [310.15, 310.15];
x = fsolve(@root2d, x0);
T(1, 1) = x(1);
T(2, 1) = x(2);
我有一个5401 * 1矩阵,其中包含我要使用的数据。例如,在下一个方程式中,我想使用数字“ 38”代替“ 37”,并获得新的解决方案并将其保存在另一个矩阵中。然后使用“ 55”替换“ 38”。像这样继续循环,直到使用矩阵中的所有数字为止。最后,我想要的是一个矩阵,其中包含每个组的解决方案。有什么好主意吗?
答案 0 :(得分:0)
您可以像这样传递参数:x = fsolve(@(x) root2d(x, param), x0);
所以您的root2d
函数将是:
function F = root2d(x,param)
w2 = 5.67*10^-8*0.00001/(1/0.9+1/0.95-1);
w2_ = w2/0.028;
w3 = 5.6*0.00001;
w3_ = w3/0.028;
F(1) = 0.045*x(1)-(w3+0.045)*x(2)+w3*(param+273.15)-w2*(x(2)^4-(param+273.15)^4);
F(2) = -w3_*x(1)+w3_*(param+273.15)-w2_*(x(2)^4-(param+273.15)^4);
,您的脚本将是:
% Assume paramvector is the 5401*1 matrix containing the data you want to use.
x0 = [310.15, 310.15];
for i = 1:numel(paramvector)
T(i) = fsolve(@(x) root2d(x, paramvector(i)), x0).';
end