关于MATLAB的矩阵的数值计算和符号计算

关于MATLAB的矩阵的数值计算和符号计算
下面是我的程序
syms x y
H=[(1+x)*(1+y)/4;(1-x)*(1+y)/4;(1-x)*(1-y)/4;(1+x)*(1-y)/4];
for i=1:4
for j=1:4
f(i)=diff(H(i,1),x);
f2(i)=diff(H(i,1),y);
f(j)=diff(H(j,1),x);
f2(j)=diff(H(j,1),y);
F(i,j)=f(i)*f(j)+f2(i)*f2(j);
S(i,j)=int(int(F(i,j),x,-1,1),y,-1,1);
D1(1,i)=int(int(f(i),y,-1,1),x,-1,1)/4;
D2(1,i)=int(int(f2(i),y,-1,1),x,-1,1)/4;
G1=4*D1'*D1;
G2=4*D2'*D2;
end
end
输出G1为

我希望输出是

这样程序应该改哪里,我现在知道用double()来转换,不过我希望能通过改计算程序来直接输出一个矩阵,顺便我觉得我的程序不标准,希望能提出改进意见,/>
这么编的话G1输出是符号矩阵,四个行矩阵,我希望是单一数值矩阵,因为后面要合并矩阵,维数要相同.后面还会加上
Gh=[G1 zeros(4);zeros(4) G2];
Sh=[S zeros(4);zeros(4) S];
[d,v]=eig(Gh,Sh);
Lambda=min(v(find(v~=0)));
Z=sqrt(lambda)
算式改为H=[(1+2*N*x/h)*(1+2*N*y/h)/4;(1-2*N*x/h)*(1+2*N*y/h)/4;(1-2*N*x/h)*(1-2*N*y/h)/4;(1+2*N*x/h)*(1-2*N*y/h)/4];等等
这样改之后G1和G2里有未知量,符号矩阵转数值矩阵用double()失败.
程序的目的就是通过N=2,4,8算出相应Z,然后画图,现在卡住了不知道怎么编,希望帮忙看下,
splendid_rex 1年前 已收到1个回答 举报

rao_wei 幼苗

共回答了21个问题采纳率:95.2% 举报

程序修改如下:
clear all;
clc;
syms x y;
H=[(1+x)*(1+y)/4;(1-x)*(1+y)/4;(1-x)*(1-y)/4;(1+x)*(1-y)/4];
for i=1:4
for j=1:4
f(i)=diff(H(i,1),x);
f2(i)=diff(H(i,1),y);
f(j)=diff(H(j,1),x);
f2(j)=diff(H(j,1),y);
F(i,j)=f(i)*f(j)+f2(i)*f2(j);
S(i,j)=int(int(F(i,j),x,-1,1),y,-1,1);
D1(1,i)=int(int(f(i),y,-1,1),x,-1,1)/4;
D2(1,i)=int(int(f2(i),y,-1,1),x,-1,1)/4;
end
end
G1=4*D1'*D1
G2=4*D2'*D2
1)G1是一个4维列向量与一个4维行向量的乘积,得一个4阶矩阵.G1输出正是一个矩阵,若想把此矩阵放在WORD中,不妨用查找替换去逗号就可以了!
2)因为G1与G2运行时跟循环变量i,j无关,调整在循环外面,可行性更高!

1年前 追问

6

splendid_rex 举报

我补充了下问题,希望你能帮忙看下,谢谢!同时感谢你的回答,谢谢!

举报 rao_wei

算式改为H=[(1+2*N*x/h)*(1+2*N*y/h)/4;(1-2*N*x/h)*(1+2*N*y/h)/4;(1-2*N*x/h)*(1-2*N*y/h)/4;(1+2*N*x/h)*(1-2*N*y/h)/4];
其中x,y还有h是字母吗?N是取参数2,4,或8???
[d,v]=eig(Gh,Sh);什么含义?求特征值吗?但Gh,Sh均是8*8的矩阵,没有意义!!!
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.023 s. - webmaster@yulucn.com