精选问答
matlab解连续几组三元一次方程组b=[671 676 682 684 684 689659 628 645 656 678 678663 670 678 673 675 677660 661 664 667 667 670656 667 668 672 665 658631 636 640 639 647 653642 644 643 645 646 648641 641 642 643 645 646645 630 641 642 642 642641 631 643 648 641 641629

2019-05-07

matlab解连续几组三元一次方程组
b=[671 676 682 684 684 689
659 628 645 656 678 678
663 670 678 673 675 677
660 661 664 667 667 670
656 667 668 672 665 658
631 636 640 639 647 653
642 644 643 645 646 648
641 641 642 643 645 646
645 630 641 642 642 642
641 631 643 648 641 641
629 639 639 639 639 640];
[r,c]=size(b);
sym d
d=zeros(r,1)
s=zeros(1,3)
syms i
for i=1:r
s=solve('x*b(i,1)+y*b(i,2)+z*b(i,3)=b(i,4)','x*b(i,2)+y*b(i,3)+z*b(i,4)=b(i,5)','x*b(i,3)+y*b(i,4)+z*b(i,5)=b(i,6)','x,y,z');
result=[s.x,s.y,s.z];
d(i,1)=s.x*b(i,4)+s.y*b(i,5)+s.z*b(i,6)
end
解三元一次方程组,每一行前三个分别乘以xyz等于第四个数,每一行第二三四的数分别乘以xyz等于第五个数,每一行第三四五的数分别乘以xyz等于第六个数,再由解出来xyz分别乘以每行第四五六的数求出一个值,再将每个值填进向量d当中.改了好久一直有问题,
优质解答
试试这个
clear all
b=[671 676 682 684 684 689
659 628 645 656 678 678
663 670 678 673 675 677
660 661 664 667 667 670
656 667 668 672 665 658
631 636 640 639 647 653
642 644 643 645 646 648
641 641 642 643 645 646
645 630 641 642 642 642
641 631 643 648 641 641
629 639 639 639 639 640];
[r,c]=size(b);
d=zeros(r,1);
for i=1:r-1
syms x y z
f1=x*b(i,1)+y*b(i,2)+z*b(i,3)-b(i,4);
f2=x*b(i,2)+y*b(i,3)+z*b(i,4)-b(i,5);
f3=x*b(i,3)+y*b(i,4)+z*b(i,5)-b(i,6);
S=solve(f1,f2,f3);
result=[S.x,S.y,S.z];
d(i,1)=result(1)*b(i,4)+result(2)*b(i,5)+result(3)*b(i,6);
end
注意b的最后一行无解,所以loop是从1到r-1.
试试这个
clear all
b=[671 676 682 684 684 689
659 628 645 656 678 678
663 670 678 673 675 677
660 661 664 667 667 670
656 667 668 672 665 658
631 636 640 639 647 653
642 644 643 645 646 648
641 641 642 643 645 646
645 630 641 642 642 642
641 631 643 648 641 641
629 639 639 639 639 640];
[r,c]=size(b);
d=zeros(r,1);
for i=1:r-1
syms x y z
f1=x*b(i,1)+y*b(i,2)+z*b(i,3)-b(i,4);
f2=x*b(i,2)+y*b(i,3)+z*b(i,4)-b(i,5);
f3=x*b(i,3)+y*b(i,4)+z*b(i,5)-b(i,6);
S=solve(f1,f2,f3);
result=[S.x,S.y,S.z];
d(i,1)=result(1)*b(i,4)+result(2)*b(i,5)+result(3)*b(i,6);
end
注意b的最后一行无解,所以loop是从1到r-1.
相关问答