如何用Matlab求线性方程组的通解

\u5982\u4f55\u7528Matlab\u6c42\u7ebf\u6027\u65b9\u7a0b\u7ec4\u7684\u901a\u89e3

\u8fd9\u4e2a\u662f\u7ebf\u6027\u9f50\u6b21\u65b9\u7a0b\u7ec4\u7684

\u5148\u5199m\u6587\u4ef6
function [x,y]=line_solution(A,b)
[m,n]=size(A);
y=[];
if norm(b)>0
if rank(A)==rank([A,b])
if rank(A)==n
disp('\u65b9\u7a0b\u6709\u552f\u4e00\u89e3x');
x=A\b;
else
disp('\u65b9\u7a0b\u6709\u65e0\u7a77\u591a\u89e3,\u7279\u89e3\u4e3ax\uff0c\u5176\u9f50\u6b21\u65b9\u7a0b\u7ec4\u7684\u57fa\u7840\u89e3\u7cfb\u4e3ay');
x=A\b;
y=null(A,'r');%null\u662f\u7528\u6765\u6c42\u9f50\u6b21\u7ebf\u6027\u65b9\u7a0b\u7ec4\u7684\u57fa\u7840\u89e3\u7cfb\u7684\uff0c\u52a0\u4e0a'r'\u5219\u6c42\u51fa\u7684\u662f\u4e00\u7ec4\u6700\u5c0f\u6b63\u6574\u6570\u89e3\uff0c\u5982\u679c\u4e0d\u52a0\uff0c\u5219\u6c42\u51fa\u7684\u662f\u89e3\u7a7a\u95f4\u7684\u89c4\u8303\u6b63\u4ea4\u57fa\u3002
end
else
disp('\u65b9\u7a0b\u65e0\u89e3');
x=[];
end
else
disp('\u539f\u65b9\u7a0b\u7ec4\u6709\u552f\u4e00\u96f6\u89e3x');
x=zeros(n,1);
if rank(A)<n
disp('\u65b9\u7a0b\u7ec4\u6709\u65e0\u7a77\u4e2a\u89e3\uff0c\u57fa\u7840\u89e3\u7cfb\u4e3ay');
y=null(A,'r');
end
end
----------------------------------------------------------------------
\u4e3e\u4f8b\u8c03\u7528\uff1a
format rat %\u4ee5\u6709\u7406\u6570\u5f62\u5f0f\u8f93\u51fa
A=[1,1,-3,-1;3,-1,-3,4;1,5,-9,-8];
b=[1;4;0];
[x,y]=line_solution(A,b);
x,y
format short %\u4fdd\u75594\u4f4d\u6709\u6548\u6570\u5b57

\u5176\u5b9e\u7528matlab\u5f88\u65b9\u4fbf\u7684\u5c31\u6c42\u51fa\u901a\u89e3\u4e86\uff0c\u7528null\u547d\u4ee4\u5c31\u884c

\u4f8b\uff1a \u6c42\u4e0b\u9762\u975e\u9f50\u6b21\u7ebf\u6027\u65b9\u7a0b\u7684\u901a\u89e3\uff1a




>> A=[2 4 -1 4 16;-3 -6 2 -6 -23;3 6 -4 6 19;1 2 5 2 19]
A =
2 4 -1 4 16
-3 -6 2 -6 -23
3 6 -4 6 19
1 2 5 2 19
>> b=[-2 7 -23 43]'
b =
-2
7
-23
43
>> B=[A,b]
B =
2 4 -1 4 16 -2
-3 -6 2 -6 -23 7
3 6 -4 6 19 -23
1 2 5 2 19 43
>> rref(B)
ans =
1 2 0 2 9 3
0 0 1 0 2 8
0 0 0 0 0 0
0 0 0 0 0 0
\u53c8x=null(B,'r')
x =
-2 -2 -9 -3
1 0 0 0
0 0 -2 -8
0 1 0 0
0 0 1 0
0 0 0 1
\u6545\u901a\u89e3\u4e3a\uff1a\u3002\u3002\u3002\u3002\u3002

给你一个例子,来说明如何用Matlab求线性方程组的通解。

>> a=[1 -1 1 -1;-1 1 1 -1;2 -2 -1 1];  %线性方程组的系数矩阵

>> b=[1;1;-1]; % 常列向量

>> [rank(a) rank([a,b])]

ans =

     2     2  %秩相等且小于4,说明有无穷多解

>> rref([a,b])    %简化行阶梯形矩阵

ans =

     1    -1     0     0     0

     0     0     1    -1     1

     0     0     0     0     0

从而原方程组等价于x1=x2,x3=x4+1。

令x2=k1,x4=k2

于是,我们求得通解



在命令窗口输入以下命令:
A=[1 1 -1 -1;2 -5 3 2;7 -7 3 1];
B=[5; -4; 7];
format rat x1=A\B %求得非齐次方程组Ax=B的一个特解x1
Y=null(A,'r') %求得齐次方程组Ax=0 的基础解系Y
上面符号%后为解释说明,实际中可不输入。

按回车,得通解。
x=x1+k1*Y(1)+k2*Y(2)

  • matlab姹傜嚎鎬ф柟绋嬬粍鐨勮В
    绛旓細1. 浣跨敤鈥淺鈥濆嚱鏁 浣跨敤鈥淺鈥濆嚱鏁板彲浠ユ眰瑙e舰濡侫x=b鐨勭嚎鎬ф柟绋嬬粍锛屽叾涓瑼鏄郴鏁扮煩闃碉紝b鏄父鏁板悜閲忋備緥濡傦紝瑕佹眰瑙e涓嬬嚎鎬ф柟绋嬬粍锛3x + 2y = 7 4x - 5y = -8 鍒欏彲浠ユ寜鐓т互涓嬫楠よ繘琛岋細```matlab 瀹氫箟绯绘暟鐭╅樀A鍜屽父鏁板悜閲廱 A = [3, 2; 4, -5];b = [7; -8];姹傝В绾挎ф柟绋嬬粍 x = A...
  • 濡備綍鐢╩atlab瑙绾挎ф柟绋嬬粍?
    绛旓細濡備笅锛歩nclude<stdio.h> include<math.h> disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);return 0銆
  • matlab涓浣瑙绾挎ф柟绋嬬粍?
    绛旓細瑙i鏂规硶寤虹珛鑷畾涔夊嚱鏁版枃浠讹紝tx_fun.m銆傛枃浠跺寘鍚袱鏉℃洸绾垮嚱鏁鏂圭▼銆傜敤fsolve锛堬級鍑芥暟锛姹傝В涓ゆ潯鏇茬嚎鐨勪氦鐐广傜敤plot锛堬級鍑芥暟锛岀敾鍑轰袱鏉℃洸绾裤傜敤text锛堬級鍑芥暟锛屽湪涓ゆ潯鏇茬嚎鐨勪氦鐐归檮杩戞爣娉ㄤ氦鐐瑰潗鏍囧笺MATLAB鏄煩闃靛疄楠屽锛圡atrix Laboratory锛夌殑绠绉帮紝鏄編鍥組athWorks鍏徃鍑哄搧鐨勫晢涓氭暟瀛﹁蒋浠讹紝鐢ㄤ簬绠楁硶寮鍙戙佹暟鎹...
  • matlab濡備綍姹傝В绾挎ф柟绋嬬粍?
    绛旓細:,1) =0.8147 0.1270 0.63240.9058 0.9134 0.0975a(:,:,2) =0.2785 0.9575 0.15760.5469 0.9649 0.9706>> b=reshape(a,6,2)b =0.8147 0.27850.9058 0.54690.1270 0.95750.9134 0.96490.6324 0.15760.0975 0.9706 鎷撳睍锛1...
  • matlab涓庢牱瑙绾挎ф柟绋嬬粍
    绛旓細绾挎ф柟绋嬬粍锛岃繖涓緢绠鍗曘傚亣璁続鏄郴鏁扮煩闃碉紝b鏄彸渚у悜閲忥紝x鏄湭鐭ユ暟 閭d箞x=inv(A)*b 姣斿 1*x(1)+2*x(2)+3*x(3)=4 4*x(1)+1*x(2)+1*x(3)=6 6*x(1)+3*x(3)=8 閭d箞绯绘暟鐭╅樀:A=[1,2,3;4,1,1;6,0,3];%鍙充晶鍚戦噺锛歜=[4;6;8];%鍙互姹傚嚭x=inv(A)*b x = ...
  • 浣跨敤matlab姹傝В鏂圭▼缁
    绛旓細浣跨敤matlab姹傝В绾挎ф柟绋嬬粍锛屽彲浠ヨ繖鏍疯В銆傞鍏堬紝鍐欏嚭绾挎ф柟绋嬬粍鐨勭郴鏁般傚嵆 A=[1 -9 -10;-9 1 -5;8 7 1];鍏朵簩锛屽啓鍑虹嚎鎬ф柟绋嬬粍鐨勫父鏁伴」绯绘暟銆傚嵆 B=[1;0;4];鐒跺悗锛岀敤鐭╅樀宸﹂櫎娉曪紝姹傚嚭X=[x1,x2,x3] 鐨勮В銆傚嵆 X=A\B 杩愯缁撴灉 ...
  • 濡備綍杩愮敤matlab鐭╅樀杩愮畻姹傝В绾挎ф柟绋嬬粍
    绛旓細MATLAB鍒╃敤鐭╅樀姹傜嚎鎬ф柟绋嬬粍 闈為綈娆$嚎鎬ф柟绋嬬粍 闈為綈娆$嚎鎬ф柟绋嬬粍鐨勪竴鑸舰寮忥細AX=b;瑙f柟绋嬬粍濡備笅锛歁ATLAB鍒╃敤鐭╅樀姹傜嚎鎬ф柟绋嬬粍 MATLAB鍒╃敤鐭╅樀姹傜嚎鎬ф柟绋嬬粍 4 瓒呭畾鏂圭▼缁 瓒呭畾鏂圭▼缁勬槸鎸囨柟绋嬬殑涓暟澶т簬鏈煡鏁扮殑涓暟鐨勭嚎鎬ф柟绋嬬粍锛岄氬父鍙湁杩戜技鐨勬渶灏忎簩涔樿В銆Matlab璇█鏍煎紡锛歑=pinv(A)*b 瑙d笅闈㈡柟绋嬬粍...
  • 鍒╃敤Matlab鐩存帴娉姹傝В绾挎ф柟绋嬬粍,褰撴柟绋嬫棤瑙f椂,Matlab涔熶細缁欏嚭涓...
    绛旓細Matlab鐨鏁板艰寖鍥存槸澶嶆暟鍩燂紝鍥犳锛鏂圭▼鐨勮В鍖呮嫭铏氭暟瑙o紝濡 >> solve('x^2=4')ans = 2 -2 >> solve('x^2=-4')ans = 2*i -2*i
  • 璇烽棶濡備綍鐢╩atlab璁$畻涓嬪垪绾挎ф柟绋嬬粍?
    绛旓細鐢╩atlab璁$畻绾挎ф柟绋嬬粍锛屽彲浠ヨ繖鏍锋潵璁$畻銆傛柟娉曚竴锛歑=A\B 鐭╅樀闄ゆ硶 A=[2 1 1;3 1 2;1 2 2];B=[4;0;3];X=A\B 鏂规硶浜岋細X=inv(A)*B 閫嗙煩闃垫硶 X=inv(A)*B 杩愯涓婅堪浠g爜锛屽彲浠ュ緱鍒拌绾挎ф柟绋嬬粍鐨勮В銆傛柟娉曚笁锛氱敤solve 鍑芥暟锛屼篃瑙d笁鍏冧竴娆℃柟绋嬬粍銆
  • 鐢╩atlab鍋氥傘傘傝藩姹備唬鐮?
    绛旓細鍒╃敤matlab杞欢锛屼娇鐢ㄥ厠鑾卞娉曞垯姹傝В绾挎ф柟绋嬬粍銆傚彲浠ユ寜涓嬪垪姝ラ璁$畻锛1銆佹彁鍙栨柟绋嬬郴鏁版暟鎹紝骞惰祴鍊肩粰A鐭╅樀銆2銆佹彁鍙栧父鏁伴」绯绘暟鏁版嵁锛屽苟璧嬪肩粰B鐭╅樀銆3銆佸皢B鐭╅樀鏇挎崲A鐭╅樀鐨勭涓鍒楋紝骞惰祴鍊肩粰A1鐭╅樀銆4銆佸皢B鐭╅樀鏇挎崲A鐭╅樀鐨勭浜屽垪锛屽苟璧嬪肩粰A2鐭╅樀銆5銆佸皢B鐭╅樀鏇挎崲A鐭╅樀鐨勭涓夊垪锛屽苟璧嬪肩粰A3鐭╅樀銆6...
  • 本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网