关于MATLAB的矩阵的数值计算和符号计算下面是我的程序syms x yH=[(1+x)*(1+y)/4;(1-x)*(1+y)/4;(1-x)*(1-y)/4;(1+x)*(1-y)/4];for i=1:4for j=1:4f(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
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/07 22:32:02
关于MATLAB的矩阵的数值计算和符号计算下面是我的程序syms x yH=[(1+x)*(1+y)/4;(1-x)*(1+y)/4;(1-x)*(1-y)/4;(1+x)*(1-y)/4];for i=1:4for j=1:4f(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
关于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,然后画图,现在卡住了不知道怎么编,希望帮忙看下,
关于MATLAB的矩阵的数值计算和符号计算下面是我的程序syms x yH=[(1+x)*(1+y)/4;(1-x)*(1+y)/4;(1-x)*(1-y)/4;(1+x)*(1-y)/4];for i=1:4for j=1:4f(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
程序修改如下:
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无关,调整在循环外面,可行性更高!