MATLAB如何利用矩阵元素的通式创建符号矩阵

2020年12月9日16:49:54MATLAB如何利用矩阵元素的通式创建符号矩阵已关闭评论

MATLAB如何利用矩阵元素的通式创建符号矩阵

如果要创建一个如下形式的矩阵M:

M =

[  1/(a + 1), 1/(a^2 + 4), 1/(a^3 + 9), 1/(a^4 + 16)]

[ 1/(a^5 + 25), 1/(a^6 + 36), 1/(a^7 + 49), 1/(a^8 + 64)]

[ 1/(a^9 + 81), 1/(a^10 + 100), 1/(a^11 + 121), 1/(a^12 + 144)]

[ 1/(a^13 + 169), 1/(a^14 + 196), 1/(a^15 + 225), 1/(a^16 + 256)]

[ 1/(a^17 + 289), 1/(a^18 + 324), 1/(a^19 + 361), 1/(a^20 + 400)]

[ 1/(a^21 + 441), 1/(a^22 + 484), 1/(a^23 + 529), 1/(a^24 + 576)]

如果一项一项地输入,太繁琐了。而此矩阵M还是有些规律的,处于第r行第c列的元素为:

M(r,c)=1/((4*r-4+c)^2+a^(4*r-4+c))

可以利用这个规律,创造一个函数来实现这个指令:

function M=symmat(row,column,f)

%symmat命令是利用通式来创建符号矩阵

%symmat(row,column,f)参数row、column分别是待创建

%符号矩阵的行数和列数,f则为矩阵元素的通式

for R=1:row

for C=1:column

c=sym(C);

r=sym(R);

M(R,C)=subs(sym(f));

end

end

在这个函数中,以“%”提示的内容是本函数的说明和帮助部分。通过这几行文字,可以知道该命令所需的参数及其含义,而且可以用help命令来单独查阅该命令的说明信息。

例题 利用矩阵元素的通式创建符号矩阵

>> syms x y c r

>> a=sin(c+(r-1)*2);

>> b=exp(r+(c-2)*3);

>> c=(c+(r-3)*4)*x+(r+(c-2)*5)*y;

>> A=symmat(3,3,a)

A =

[ sin(1), sin(2), sin(3)]

[ sin(3), sin(4), sin(5)]

[ sin(5), sin(6), sin(7)]

>> B=symmat(4,3,b)

B =

[ 1/exp(2), exp(1), exp(4)]

[ 1/exp(1), exp(2), exp(5)]

[  1, exp(3), exp(6)]

[ exp(1), exp(4), exp(7)]

>> C=symmat(5,5,c)

C =

[ - 7*x - 4*y, y - 6*x, 6*y - 5*x, 11*y - 4*x, 16*y - 3*x]

[ - 3*x - 3*y, 2*y - 2*x, 7*y - x,  12*y, x + 17*y]

[ x - 2*y, 2*x + 3*y, 3*x + 8*y, 4*x + 13*y, 5*x + 18*y]

[ 5*x - y, 6*x + 4*y, 7*x + 9*y, 8*x + 14*y, 9*x + 19*y]

[  9*x, 10*x + 5*y, 11*x + 10*y, 12*x + 15*y, 13*x + 20*y]

由于在函数symmat中,采用了M(R,C)=subs(sym(f))的方法,因此当f为字符参数时,symmat命令同样可以给出正确答案,例如下面的程序:

>> A=symmat(3,3,'sin(c+(r-1)*2)')

A =

[ sin(1), sin(2), sin(3)]

[ sin(3), sin(4), sin(5)]

[ sin(5), sin(6), sin(7)]

>> B=symmat(4,3,'exp(r+(c-2)*3)')

B =

[ 1/exp(2), exp(1), exp(4)]

[ 1/exp(1), exp(2), exp(5)]

[  1, exp(3), exp(6)]

[ exp(1), exp(4), exp(7)]

>> C=symmat(5,5,'(c+(r-3)*4)*x+(r+(c-2)*5)*y')

C =

[ - 7*x - 4*y, y - 6*x, 6*y - 5*x, 11*y - 4*x, 16*y - 3*x]

[ - 3*x - 3*y, 2*y - 2*x, 7*y - x,  12*y, x + 17*y]

[ x - 2*y, 2*x + 3*y, 3*x + 8*y, 4*x + 13*y, 5*x + 18*y]

[ 5*x - y, 6*x + 4*y, 7*x + 9*y, 8*x + 14*y, 9*x + 19*y]

[  9*x, 10*x + 5*y, 11*x + 10*y, 12*x + 15*y, 13*x + 20*y]

  • 版权声明:本篇文章(包括图片)来自网络,由程序自动采集,著作权(版权)归原作者所有,如有侵权联系我们删除,联系方式(QQ:452038415)。