【问题标题】:Solving a system with two equations and two variables in a for loop在 for 循环中求解具有两个方程和两个变量的系统
【发布时间】:2016-03-12 09:50:49
【问题描述】:

我想求解一个有两个方程和两个变量的系统。
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]

我想为每个istep(for循环)计算R(i)t(i)。 我很高兴能帮助解决方程。

Tau(i)-((1-R(i))^2*t(i))/(1-R(i)^2*t(i)^2)==0
Roh(i)-R(i)-((1-R(i))^2*R(i)*t(i)^2)/(1-R(i)^2*t(i)^2)==0

我尝试了以下脚本,但我很难编写正确的代码来导出数据。我只得到不是值的“sym”。

function [R,t] = glassair(Tau, Roh)

for i=1:6
    syms R(i) t(i)
     eq1(i)=sym('Tau(i)-((1-R(i))^2*t(i))/(1-R(i)^2*t(i)^2)');
     eq2(i)=sym('Roh(i)-R(i)-((1-R(i))^2*R(i)*t(i)^2)/(1-R(i)^2*t(i)^2)');
     sol(i)=solve(eq1(i),R(i), eq2(i),t(i));

end
end

【问题讨论】:

  • 你在你尝试过的东西之前发布了。现在发布。最好的问题是你以前和这个的结合!
  • 感谢您的评论。我也添加了那部分。

标签: matlab equation symbolic-math equation-solving


【解决方案1】:

您的代码存在多个问题。

  • R(i) 语法与变量一起使用,您可以混合使用符号函数。我认为在这里你只有变量。与eq(i) 相同,这创建了一个符号函数,而不是您的方程式列表(正如您可能想要的那样)
  • 您使用错误的参数顺序调用了solve
  • 您使用错误的参数顺序调用了solve
  • 将字符串传递给 sym 你的已知常量 TauRoh 没有被替换,你的方程中最终有 4 个未知数

.

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]

syms R t
for i=1:6
eq1=Tau(i)-((1-R)^2*t)/(1-R^2*t^2);
eq2=Roh(i)-R-((1-R)^2*R*t^2)/(1-R^2*t^2);
sol=solve([eq1,eq2]);
allsol(i).R=double(sol.R);
allsol(i).t=double(sol.t);
end

【讨论】:

  • 非常感谢亲爱的丹尼尔的帮助和更正。它工作得很好。唯一的挑战是产生 2 个答案的方程的顺序,但我设法将它们分开。
【解决方案2】:

您只需要定义一次函数,然后使用 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 非常聪明,可以为您定义类型。当您求解方程时,它会检测需要哪些变量。零分配是为了加快速度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-10
    • 2013-09-10
    • 2021-12-20
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    相关资源
    最近更新 更多