Matlab求解方程组总结

Matlab解方程组

解法1 符号解法,即使用solve函数

解法步骤:

   第一步:定义变量syms x y z ...; 

   第二步:求解[x,y,z,...]=solve('eqn1','eqn2',...,'eqnN','var1','var2',...'varN'); 

   第三步:求出n位有效数字的数值解x=vpa(x,n);y=vpa(y,n);z=vpa(z,n);

看一个简单的例子

 [x ,y]=solve('y=2*x+3','y=3*x-7'); 写成[x y]=solve('y-2*x-3','y-3*x+7')也可以

网上可能有些代码在之前加了一句 syms x y,表示定义符号变量x,y  不加也是可以的。

但是代码如果写成这样

[x y]=solve(y-2*x-3,y-3*x+7)  (无单引号括起来,则必须先说明x,y是符号变量)

syms x y

[x y]=solve(y-2*x-3,y-3*x+7)

解二(多)元二(高)次方程组

[x,y]=solve('x^2+3*y+1=0','y^2+4*x+1=0'); 

x=vpa(x,4)% vpa(x,n)用来控制运算精度,这里表示保留4位有效数字

y=vpa(y,4)

x =

         -0.2824

          -2.988

1.635 - 3.029*i

1.635 + 3.029*i

y =

         -0.3599

          -3.309

1.835 + 3.303*i

1.835 - 3.303*i

解法2 采用左除运算解方程组x=A\b

原方程可以变为          

2*x-y=-3

3*x-y=7

代码:

A=[2,-1;3,-1]; 系数矩阵

B=[-3;7];     

X=A\B

解法3采用求逆运算解方程组x=inv(A)*b 

从这段话,可以看出虽然可以使用法3来求解。但是从速度和精度来说,法2更好

例1:



syms A B P

[A,B,P]= solve('12.56*(A-311)=-20.9*(B-311)','B/311=P^0.71','933*P=A*20+B')

输出参数顺序

solve函数求解出的参数按字母表顺序排序

syms x y z t

[x,y,z,t]=solve(2*x+3*y-z+t-2,5*x+y+z-t-13,x-y+2*z+2*t-3,3*x+2*y+2*z+9*t+3)

正确写法应该是:  solve函数会求解出xyzt的值,并把他们按字母表顺序排序,所以第一个是t 后三个一次为xyz

syms x y z t

[t,x,y,z]=solve(2*x+3*y-z+t-2,5*x+y+z-t-13,x-y+2*z+2*t-3,3*x+2*y+2*z+9*t+3)

已知参数求方程组

例如求解该方程组

[x,y]=solve('x^2+y^2=1','x+y=1')

x =1 y=0 或x=0 y=1

修改该方程 

此时方程加入了已知参数

 [x,y]=solve('a*x^2+b*y^2=c','d*x+e*y=f')

此时求解出来的变量用已知参数表示。如果已知参数值

a=1;b=1;c=1;d=1;e=1;f=1;

然后用subs函数来替换已知参数中的值,即计算变量的值。

完整代码:

[x,y]=solve('a*x^2+b*y^2=c','d*x+e*y=f');

a=1;b=1;c=1;d=1;e=1;f=1;

subs([x y])

(a-x)^2+(b-y)^2=e^2

(C-x)^2+(D-y)^2=v^2

已知a,b,c,d,e,v 值

求解 X,Y 请问用 matlab 如何写,就是求2个园的交点问题。

仿真程序为:

global a b c d e v;

a=1;b=0;c=-1;d=0;e=1.5;v=1.5;%参数的值

%可以不用展开

[x,y]=solve('x^2+y^2-2*a*x-2*b*y=e^2-a^2-b^2','x^2+y^2-2*c*x-2*d*y=v^2-c^2-d^2')

运行结果

subs(x)

subs(y)

带入参数数值后的结果

 

第二篇:MATLAB课程总结

MATLAB

系 别:电气工程与自动化学 号: B11043425

姓 名:贺阳阳

Matlab课程报告

上大学的第五年终于学习了MATLAB这门课程,之前大专期间很多专业基础课里都有MATLAB应用,一直对MATLAB充满了好奇,想学习它,了解它,进而在以后能够使用它。

通过一个学期的学习,我了解该软件的基本功能,也知道了该软件在我们生活中的重要地位。随着社会的不断发展,科技的不断进步,计算机的普及,它也被应用在越来越多的方面。

首先,通过学习,我了解到了Matlab软件的历史。MATLAB(MATrix LABoratory,即矩阵实验室)是美国 MathWork 公司推出的一套高效率的数值计算和可视化软件。 MATLAB 是当今科学界最具影响力、也是最具活力的软件,它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。

其次,知道了Matlab软件的功能。它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的功能。在国际学术界,Matlab已经被确认为准确、可靠的科学计算标准软件。在国际一流的学术刊物上,尤其是信息科学刊物上,都可以看到Matlab的应用。

最后,以下是我一个学期学习后对MATLAB的认识和了解:

一、语言简洁紧凑,使用方便灵活,库函数极其丰富。与之前学过的C语言相比较。它的语言简练明了,有时候只要一个字符就能表示出整句语句,不用一步步去读。这种语言简单而实用。每个函数建立一个同名的M文件,如上述函数的文件名为fun.m。这种文件简单、短小、高效,并且便于调试。比如说,函数的赋值。在C语言中,它需要一个个去赋值,x=?;y=?;当变量很多的时候,我们不能一次性的去赋值。并且我们需要注意赋值的类型。而在Matlab软件中,我们只需要知道它的初值,自变量的数值,以及它的范围,就可以用矩阵把整个函数赋值。这减去了我们的工作复杂性,也降低了我们时间花费。

二、运算符丰富,用Matlab软件设计程序,它更加方便快捷。MATLAB 的基本数据单元是既不需要指定维数、也不需要说明数据类型的矩阵,而且数学表达式和运算规则与通常的习惯相同。因此,在MATLAB环境下,数组的操作与数的操作一样简单。对比C语言,Matlab确实简单不少。我们在编写程序时简便了许多。例如,求1 1 2 3 5 8 13…这个算法。C语言得用许多的语句去循环算这个算法。而Matlab软件可以首先数据初始化,然后用while去循环,做出循环体,就可以你要多少数据,它会给你多少数据。还

有在Matlab软件设计程序时,少了很多的定义,减少了复杂度,节省了计算机的暂时内存使用率。就和C语言一样,在语句结束时用“{ }”,Matlab软件中一句话结束时,也需要用end。MATLAB既具有结构化的控制语句(如for循环、while循环),又有面向对象编程的特性。

三、语法限制不严格,程序设计自由度大。程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。Matlab具有一个强大的工具箱,里面的东西,只要你想要的,你可以毫不犹豫的提取出来,不用想C语言编程中,你要的东西你得用函数调用的形式去借用。这些工具箱提供了用户在特别应用领域所需的许多函数,这使得用户不必花大量的时间编写程序就可以直接调用这些函数,达到事半功倍的效果。

四、MATLAB的图形功能强大。不管你二维图形,三维图形,还是现在流行的四维图形。只要你想要,能编写出来函数式。在短短几秒钟之内,它会呈现在你眼前。另外就是图形的直观性,你在绘编图形时,加上一点修饰,它会自动标注你想要图形的阴影部分。MATLAB 具有二维和三维绘图功能,使用方法十分简便。而且用户可以根据需要,坐标图上加标题。坐标轴标记。文本注释及栅格等,也可以指定图线形式(如实线、虚线等)和颜色,也可以在同一张图上画不同函数的曲线,对于曲面图还可以画出等高线。

例如用madlab创建矩阵时,方法有两种:第一、可以直接依次输入矩阵各行各列的元素,但矩阵元素必须用[ ]括住,矩阵元素必须用逗号或空格分隔 ,在[ ]内矩阵的行与行之间必须用分号分隔。第二、用MATLAB函数创建矩阵。MATLAB可以进行矩阵的加减、乘除的元素,求可逆矩阵、转置矩阵,求矩阵的特征值,求线性方程组等等。

MATLAB的功能是非常强大的,MATLAB不仅有强大的运算功能,它还有强大的绘图功能,我对它的了解也仅仅就是一点点,或许说还没有入门。比如说它含有丰富的内建函数,例如数学函数中的三角函数、复函数、多项式函数、数据分析函数的求平均值、最大最小值、排序等,以及逻辑/选择函数如if-else等,还有用来模拟随机发生事件的随机函数。这些我都不了解。

学了一个学期的Matlab软件应用,它的确好用方便,它能解决我们好多数学,物理,化学问题。同样能验证好多科学家的理论,定律。数学建模中更是一种非常实用的工具。虽学习MATLAB的时间虽然很短,但却让我了解到了它的强大和它的功能。课堂上的时间是有限的,老师也不能把所有的都讲解给我们,因为一个软件的功能需要我们自己不断的去摸索,老师也不可能知道所有。老师只是个指路的明灯,最终的学习还是要靠自己。

而且在摸索过程中,我们能够发现和体会学习的快乐。我会在以后的学习生活中继续学习,练习MATLAB,让它成为我学习和工作的好帮手。

相关推荐