MATLAB初学过程中,关于联立矩阵方程和函数方程求解未知数的方法和出现的一些问题

如果要求两个未知数,并且给定了两个矩阵方程,两个函数方程,要联立求解两个未知数的值,关于matlab使用fsolve和solve求解出现的情况进行分析,发现使用solve可以进行成功求解,但使用fslove进行求解出现错误,暂时没想到解决方法。

或者有新的方法可能没有了解到。

例题:

先给定一些参数:

两个矩阵

A1=[1 1 1;

    2 2 4 ;

   0 0 1]

A2=[5 3 1 ;

     1 3 1 ;

     0 0 1]

然后给出一个矩阵方程:【a;b;1]=A1*[x;y;1]//其中x,y是所要求的未知数,而a,b也未知但并非要求的值,在计算过程中会被x,y代替,

给出一个函数方程:b-a=x+2.*y;

[m;n;1]=A2*[x;y;1]//其中x,y是所要求的未知数,而m,n也未知但并非要求的值,在计算过程中会被x,y代替,(与a,b性质一样)

给出一个函数方程:m-n=x+2.*y;

解题思路:

a,b虽然也未知,但通过矩阵方程,可以把a,b都变成由x,y表示的函数,再将b-a=x+2.*y;中的a,b代换,得到x,y的一个函数方程。

同理对m,n进行相同处理,又得到一个x,y的函数,两个函数求解两个未知数,易得。

matlab编程

得到a,b,m,n关于x,y的表达式

A1=[1 1 1;2 2 4 ;0 0 1]
A2=[5 3 1 ;1 3 1 ;0 0 1]


syms x y
q=A1*[x;y;1]
p=A2*[x;y;1]
% q=[a;b;1]
% p=[m;n;1]
a=q(1)
b=q(2)
m=p(1)
n=p(2)

运行得到结果如下;

1.使用solve求解x,y

eq1=b-a-x-2.*y
eq2=m-n-x-2.*y
% 定义函数,
[x,y]=solve([eq1,eq2],[x,y])
% 使用solve求解


运行得到结果如下;

顺利求解出x=2,y=3。

2.使用fsolve求解

function y=fun(x)
y=[b-a-x(1)-2.*x(2);
   m-n-x(1)-2.x(2)  ];
end
% 定义函数,

x0=[0 0]
opts=[]
x=fsolve(@funm,x0,opts)
% 进行求解

运行得到结果如下;

报错,
函数或变量 'b' 无法识别。

那肯定a,b,m,n、都无法识别。

注:我明明定义的b是x,y的函数了但是运行无法识别说明要么定义方式不对,要么要进行其他操作来识别b这个变量,查询了一些资料没找到比较相关的原因解释,如果有读者阅读文章知道原因告知一下,谢谢

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值