我想解决一个有两个方程和两个变量的系统
select * from item
where id <> :id
and parent_id = :parent_id;
和Tau(i)
是输入数组。
Roh(i)
Tau=[0.91411 0.91433 0.91389 0.91399 0.91511 0.915]
我想为每个Roh=[0.07941 0.07942 0.07952 0.07946 0.07951 0.07947]
步骤(for循环)计算R(i)
和t(i)
。
我很乐意帮助解决这些方程式。
i
Tau(i)-((1-R(i))^2*t(i))/(1-R(i)^2*t(i)^2)==0
我尝试过以下脚本但是我很难编写正确的代码来导出数据。我只得到“sym”,这不是一个值。
Roh(i)-R(i)-((1-R(i))^2*R(i)*t(i)^2)/(1-R(i)^2*t(i)^2)==0
答案 0 :(得分:2)
您的代码存在多个问题。
matrix
语法与变量一起使用,混合了符号函数。我想在这里你只有变量。与R(i)
相同,这创建了一个符号函数,而不是您的方程列表(正如您可能想要的那样)eq(i)
solve
已知常量sym
和Tau
未被替换的字符串,最终在方程中有4个未知数
Roh
答案 1 :(得分:1)
您只需要定义一次函数,然后使用for循环来获取值。
function [R_out,t_out] = glassair(Tau_in, Roh_in)
syms R t Tau Roh
eq1 = Tau-((1-R)^2*t)/(1-R^2*t^2);
eq2 = Roh-R-((1-R)^2*R*t^2)/(1-R^2*t^2);
R_out = zeros(1,6); % Given it will be always 6
t_out = zeros(1,6);
for i=1:6
Tau = Tau_in(i);
Roh = Roh_in(i);
sol = solve( subs( [eq1;eq2] ) );
R_out(i) = double(sol.R);
t_out(i) = double(sol.t);
end
end
Matlab非常聪明,为您定义类型。当您求解方程时,它会检测需要哪些变量。零分配用于加速。