带有mod的matlab线性方程组

时间:2014-11-30 21:02:38

标签: matlab modulus equations

我有一个简单的方程式要解决,我想在matlab中做,但是,有几年,我没有使用,有点忘了它。 所以这个

  
    

linsolve({(387 = mod(324 * a + b,601)),(491 = mod(381 * a + b,601))},{a,b}),

  
由于我无法找到的错误,

没有给我一个结果。 最初的方程组是:

(324A + B)mod601 = 387 (381A + B)mod601 = 491,

显然是仿真密码。 谢谢!

2 个答案:

答案 0 :(得分:0)

试试这个 首先让你在一个名为myfunc.m的单独文件中描述方程式:

function y=myfunc(x)
    y(1)=mod(324*x(1)+x(2),601)-387;
    y(2)=mod(381*x(1)+x(2),601)-491;

比申请fsolve

x0=[1; 1];
[ans,err]=fsolve(@myfunc,x0)

x0是对解决方案的猜测。这种方法给出了一个近似的数值解决方案。

fsolve解决了一个非线性方程组。它有很多参数,你可以在MATLAB帮助中阅读它们。

让我知道它是否有效

答案 1 :(得分:0)

从这些方程开始,

(324*a + b) mod 601 = 387,
(381*a + b) mod 601 = 491,

我们可以得出结论

((381*a + b) - (324*a + b)) mod 601 = (491 - 387) mod 601

因此(在括号内进行明显的简化) 在左侧并完全评估右侧),

(57*a) mod 601 = 104.

这看起来比两个变量中的两个方程系统更容易解决。 知道a后,您可以返回原始方程之一并求解b