1. 首页 > 科技

有人能够用matlab解这个方程组吗? matlab求二元一次方程组

有人能够用matlab解这个方程组吗?matlab求二元一次方程组

如何用matlab解方程组?

我知道的Matlab解矩阵方法有:

A=[1 6 9;6 5 2;8 3 4]

b=[2;4;7]

1)x=inv(A)*b 【就是你用的方法】

2)x=A\b

3)x=A^(-1)*b

4)C=[A,b]

rref(C)

试试吧,也许好使。

还有一个网址,下载一些经典程序,如:

gmres_m.rar-gmres算法的一个特殊形式,用来求解大型稀疏矩阵方程,matlab

GMres.rar-数值算法中另一个经典算法gmres算法,用来求解大型矩阵方程问题。,matlab

arnoldi.rar-数值分析中经典的arnoldi算法,用来求解大型矩阵方程组的求解,matlab

www.programsalon/sitemap/sitemap153_1450.htm

补充:

2.利用矩阵的LU、QR和cholesky分解求方程组的解

(1)LU分解:

LU分解又称Gauss消去分解,可把任意方阵分解为下三角矩阵的基本变换形式(行交换)和上三角矩阵的乘积。即A=LU,L为下三角阵,U为上三角阵。

则:A*X=b 变成L*U*X=b

所以X=U\(L\b) 这样可以大大提高运算速度。

命令 [L,U]=lu (A)

例1-78 求方程组 的一个特解。

解:

>>A=[4 2 -1;3 -1 2;11 3 0];

>>B=[2 10 8]';

>>D=det(A)

>>[L,U]=lu(A)

>>X=U\(L\B)

显示结果如下:

D =

0

L =

0.3636 -0.5000 1.0000

0.2727 1.0000 0

1.0000 0 0

U =

11.0000 3.0000 0

0 -1.8182 2.0000

0 0 0.0000

Warning: Matrix is close to singular or badly scaled.

Results may be inaccurate. RCOND = 2.018587e-017.

> In D:\Matlab\pujun\lx0720.m at line 4

X =

1.0e+016 *

-0.4053

1.4862

1.3511

说明 结果中的警告是由于系数行列式为零产生的。可以通过A*X验证其正确性。

(2)Cholesky分解

若A为对称正定矩阵,则Cholesky分解可将矩阵A分解成上三角矩阵和其转置的乘积,即: 其中R为上三角阵。

方程 A*X=b 变成

所以

(3)QR分解

对于任何长方矩阵A,都可以进行QR分解,其中Q为正交矩阵,R为上三角矩阵的初等变换形式,即:A=QR

方程 A*X=b 变形成 QRX=b

所以 X=R\(Q\b)

上例中 [Q, R]=qr(A)

X=R\(Q\B)

说明 这三种分解,在求解大型方程组时很有用。其优点是运算速度快、可以节省磁盘空间、节省内存。

也许这个能帮你点儿忙。

用matlab解线性方程组的几种方法,最好带个例子

在求解线性方程组时,会遇到以下几种情形:定解方程组、不定方程组、超定方程组、奇异方程组。作为示例,首先以定解线性方程组为例:

在分析如上方程组时,需要知道,方程中有3个未知数,而方程也有3个,所以可以求出(x,y,z)值,转化为矩阵即为: AX = B,其中A为系数矩阵,B为右边值向量。而X即为未知数构成的向量,转化后即为:

>> A = [2,3,1;

             4,2,3;

             7,1,-1];

如上为系数矩阵;

>> B = [4;17;1];

如上为右边值矩阵;

利用矩阵除法:

>> X = A\B 

求得结果如下图红色箭头所示:

x = 1.0000 ; y = -1.0000 ; z = 5.0000;

matlab解方程组

clc

syms x y r;

a=input('输入a ')

h=input('输入h ')

j=input('输入度数[0-90] ')

[x y r]=solve(-y-x*tan(j*pi/180)+(r-h),x^2+y^2-r^2,a^2+(r-h)^2-r^2)

结果示例:

输入a 1

a =

1

输入h 2

h =

2

输入度数[0-90] 30

j =

30

x =

5/4

5/4

y =

-3/16*3^(1/2)+1/16*219^(1/2)

-3/16*3^(1/2)-1/16*219^(1/2)

r =

-9/16-1/48*3^(1/2)*219^(1/2)

-9/16+1/48*3^(1/2)*219^(1/2)

>>

matlab中solve解方程组

原发布者:fukbsne57343

matlab解方程组lnx表示成log(x)而lgx表示成log10(x)1-exp(((log(y))/x^0.5)/(x-1))1、解方程最近有多人问如何用matlab解方程组的问题,其实在matlab中解方程组还是很方便的,例如,对于代数方程组Ax=b(A为系数矩阵,非奇异)的求解,MATLAB中有两种方法:(1)x=inv(A)*b—采用求逆运算解方程组;  (2)x=A\B—采用左除运算解方程组PS:使用左除的运算效率要比求逆矩阵的效率高很多~例:x1+2x2=82x1+3x2=13>>A=[1,2;2,3];b=[8;13];>>x=inv(A)*bx=2.003.00  >>x=A\Bx=2.003.00;即二元一次方程组的解x1和x2分别是2和3。对于同学问到的用matlab解多次的方程组,有符号解法,方法是:先解出符号解,然后用vpa(F,n)求出n位有效数字的数值解.具体步骤如下:第一步:定义变量symsxyz...;第二步:求解[x,y,z,...]=solve('eqn1','eqn2',...,'eqnN','var1','var2',...'varN');第三步:求出n位有效数字的数值解x=vpa(x,n);y=vpa(y,n);z=vpa(z,n);...。如:解二(多)元二(高)次方程组:x^2+3*y+1=0y^2+4*x+1=0解法如下:>>symsxy;>>[x,y]=solve('x^2+3*y+1=0','y^2+4*x+1=0');>>x=vpa(x,4);>>y=vpa(y,4);结果是:x=1.635+3.029*i1.635-3.029*i-.283-2.987y=1.834-3.301*i1.834+3.301*i-.3600-3.307。二元二次方程组,共4个实数根;还有的同学问,如何用matlab解高次方程组(非符号方程组)?举个例子好吗?解答如下:基本方法是:solve(s1,s2,…,sn,v1,v2,…,vn),即求表达式s1,s2,…,sn组