【问题标题】:how to solve multi-equation with known and unkown variable in matlab如何在matlab中求解具有已知和未知变量的多方程
【发布时间】:2016-02-17 07:10:44
【问题描述】:

我有 4 个方程式,我知道 x 和 y 以及 ans1 到 ans4。但我希望 matlab 解决这 4 个方程并给我 a、b、c、d。我该怎么办?

  ans1 = I(x,y);
  ans2=I(x+1,y); 
  ans3=I(x,y+1);
  ans4=I(x+1,y+1);  

a*x+b*y+c*x*y+d==ans1
a*(x+1)+b*y+c*(x+1)*y+d==ans2
a*x+b(y+1)+c*x*(y+1)+d==ans3
a*(x+1)+b*(y+1)+c*(x+1)*(y+1)+d==ans4

【问题讨论】:

  • 旁注:不要使用 MATLAB 来完成此类任务,但 Mathematica,如果您可以访问它。
  • @RobertStettler 但这是一个图像处理 matlab 代码,无法使用其他应用程序。使用字符串到数字的转换器来告诉 matlab x 是数字而不是被动的呢?
  • @patra 我不明白这个问题。当您说您“知道”ans1ans4 时,这是否意味着我们可以将它们视为常量?或I 在这种情况下是xy 的一些已知功能?不清楚。如果ans1ans2ans3ans4xy是常数,那么这只是求解一个简单的线性系统
  • 但是当我使用 S=solve(ax+by+cxy+d==ans1,a*(x+ 1)+by+c*(x+1)*y+d==ans2,ax+b(y+1)+c*x*(y+1)+d= =ans3,a*(x+1)+b*(y+1)+c*(x+1)*(y+1)+d==ans4); matlab 糊涂了,有错误。
  • 你需要将系统写成矩阵形式为A*x=b,在这种情况下使用` to solve... don't use solve`。

标签: matlab function equation


【解决方案1】:

问题的表述方式,我猜答案是

[x y x*y 1; (x+1) y (x+1)*y 1; x (y+1) x*(y+1) 1; (x+1) (y+1) (x+1)*(y+1) 1]*[a b c d]'=[ans1 ans2 ans3 ans4]'

或者

A = [x      y      x*y          1 
     (x+1)  y      (x+1)*y      1
     x      (y+1)  x*(y+1)      1
     (x+1)  (y+1)  (x+1)*(y+1)  1];

x = [a
     b
     c
     d];

b = [ans1
     ans2
     ans3
     ans4];

A*x == b;

因此求解x:

[x y x*y 1; (x+1) y (x+1)*y 1; x (y+1) x*(y+1) 1; (x+1) (y+1) (x+1)*(y+1) 1]\[ans1 ans2 ans3 ans4]'

或者

A\b;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多