昨天, 08:35 PM | # |
小弟愚笨深感抱歉一直烦劳板上各位
恳请板上英雄出动谢谢 最下面有写程序但是目前又遇到其妙的事 便是A与B改有实虚数变不行 本来例题 A=[1 1 1;1 2 3;1 3 2]; B=[ 0.0003 1001 0.0002 1002 0.0001 1003 0.0004 2001 0.0005 2003 0.0006 3003] 求C 步骤 看B第二列千位数值皆为相同数字表示为同一个3*1的矩阵 个位数值表示B的{dy}列该放入为3*1的哪个位置 EXE 先看B第二列千位数=1 找到{dy}列 [0.0003;0.0002;0.0001] 放入3*1的记忆体中 X=[0.0003;0.0002;0.0001] A*X放入C 此时 C=[0.0006;0.00010;0.00011] 再看B第二列千位数=2 找到{dy}列 [4;5] 但是不满3*1所以便看个位数值缺2所以補0 X=[0.0004;0;0.0005] A*X放入C 此时 C=[0.0006;0.0010;0.0011;0.0009;0.0019;0.0014] 再看B第二列千位数=3 找到{dy}列 [4;5] 但是不满3*1所以便看个位数值缺1.2所以補0 X=[0;0;0.0006] A*X放入C 此时 C=[0.0006;0.0010;0.0011;0.0009;0.0019;0.0014;0.0006;0.0018;0.0012] 想改题目 程序方法与之前没变只是改A矩阵有角度却出现错误 A=(1./3)*[1 1 1;1 120度 240度;1 240度 120度]; B(:,1) = [-18.0000000000000 - 8.70000000000000i;1.46557898707538 + 19.9384572681199i;16.5344210129246 - 11.2384572681199i;] B(:,2) =[1001;1002;1003] 程序: complex1 = cosd(120)+i*sind(120); complex2 = cosd(-120)+i*sind(-120); Am = (1./3)*[1 1 1;1 complex1 complex2;1 complex2 complex1]; K=[(-18.0000000000000-8.70000000000000*i) 1001; (1.46557898707538+19.9384572681199*i) 1002; (6.5344210129246-11.2384572681199*i) 1003]; B(:,1) = K(:,1); B(:,2) = K(:,2); G=int32(B(:,2)); D=[idivide(G,1000) mod(G,1000)]; E=sub2ind([D(end,1),3],D(:,1),D(:,2)); F=zeros(D(end,1),3); F(E)=B(:,1); F2=(Am*F'); F3 = size(F2); rowindex = sum(F2==0,2)==size(F2,2); colindex = sum(F2==0,1)==size(F2,1); F2(rowindex, = []; F2(:,colindex) = []; F3 = F2; C=F3(; 结果C: -3.33333333333334 - 4.44089209850063e-16i 1.66666666666667 + 2.88675134594813i -16.3333333333333 + 5.81324865405187i 但是单纯正解的测试 Y=[-18.0000000000000 - 8.70000000000000i;1.46557898707538 + 19.9384572681199i;16.5344210129246 - 11.2384572681199i;] Am = (1./3)*[1 1 1;1 complex1 complex2;1 complex2 complex1]; R=Am*Y; 结果正解C=R: -7.10542735760100e-15 + 4.44089209850063e-16i -18.0000000000000 - 8.70000000000000i 5.77315972805081e-15 - 2.66453525910038e-15i 求救帮求出R |
|