Matlab与方程组

简介: 1.线性方程组 1 syms x y%中间不可以是分号 2 [x y] = solve(x+y-1,x-y)%若不加前面的变量则得不到结果,不知为何 后来我发现我们更倾向于[x y] = solve('x+y=1','x - y=0') 2.

1.线性方程组

1 syms x y%中间不可以是分号
2 [x y] = solve(x+y-1,x-y)%若不加前面的变量则得不到结果,不知为何

后来我发现我们更倾向于[x y] = solve('x+y=1','x - y=0')

2.同余方程组

1 sysm n
2 [n] = solve(rem(n,9)-8)
3 %不论怎么改动都没有结果

3.

(A-λE)x=0 其中E为单位矩阵   

这是n个未知数n个方程的齐次线性方程组,它有非零解的充要条件是系数行列式为0,

即   |A-λE|=0   

带入具体的数字或者符号,可以看出该式是以λ为未知数的一元n次方程,称为方阵A

的特征方程,左端 |A-λE|是λ的n次多项式,也称为方阵A的特征多项式。

1 %poly生成特征多项式,大多时用eig
2 %求解高次多项式,直接roots(系数)

4.cite from:http://bbs.seu.edu.cn/pc/pccon.php?id=950&nid=14498&tid=0

最近有多人问如何用matlab解方程组的问题,其实在matlab中解方程组还是很方便的,例如,对于代数方程组Ax=b(A为系数矩阵,非奇异)的求解,

MATLAB中有两种方法: (1)x=inv(A)*b — 采用求逆运算解方程组;

(2)x=A\b — 采用左除运算解方程组。

例: x1+2x2=8 2x1+3x2=13

>>A=[1,2;2,3];b=[8;13];

>>x=inv(A)*b x =    2.00    3.00

>>x=A\b x =   2.00   3.00;

即二元一次方程组的解x1和x2分别是2和3。

对于同学问到的用matlab解多次的方程组,有符号解法,方法是:先解出符号解,然后用vpa(F,n)求出n位有效数字的数值解.

具体步骤如下:

  第一步:定义变量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^2+3*y+1=0 y^2+4*x+1=0

解法如下: >>syms x y;

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

      >>x=vpa(x,4);(我在matlab里试了试貌似没有效果,仍然是32位有效数字)

      >>y=vpa(y,4);

结果是: x =     1.635+3.029*i     1.635-3.029*i     -.283    -2.987 y =     1.834-3.301*i     1.834+3.301*i     -.3600    -3.307。

二元二次方程组,共4个实数根;

还有的同学问,如何用matlab解高次方程组(非符号方程组)?

举个例子好吗? 解答如下: 基本方法是:solve(s1,s2,…,sn,v1,v2,…,vn),即求表达式s1,s2,…,sn组成的方程组,

求解变量分别v1,v2,…,vn。

具体例子如下: x^2 + x*y + y = 3 x^2 - 4*x + 3 = 0

解法: >> [x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3 = 0')

运行结果为 x =      1 3

    y =      1 -3/2

即x等于1和3;y等于1和-1.5

或 >>[x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3= 0','x','y')

 x =      1  3  

y =      1 -3/2

结果一样,二元二方程都是4个实根。

 

5.单变量非线性方程求解

z=fzero('fname',x0,tol,trace)

  其中fname是待求根的函数文件名,x0为搜索的起点。一个函数可能有多个根,但fzero函数只给出离x0最近的那个根。tol控制结果的相对精度,缺省时取tol=eps,trace指定迭

代信息是否在运算中显示,为1时显示,为0时不显示,缺省时取trace=0。

例 求f(x)=3*x-10^x+2=0在x0=0.5附近的根

 1 %建议function函数
 2 function fx = fun( x )
 3 %UNTITLED Summary of this function goes here
 4 %   Detailed explanation goes here
 5 fx = 3*x - 10.^x +5;
 6 
 7 
 8 end
 9 %注意:建立保存后,指令窗口显示,但貌似不影响下面的使用
10 %??? Input argument "x" is undefined.
11 
12 %Error in ==> fun at 4
13 %fx = 3*x - 10.^x +5;
14 
15 %在指令窗口调用
16 >> z = fzero('fun',0.5)
17 
18 z =
19 
20     0.8837

6.非线性方程组的求解(cite from:http://blog.sina.com.cn/s/blog_56ef652d0100ebew.html)

  对于非线性方程组F(X)=0,用fsolve函数求其数值解。

fsolve函数的调用格式为X=fsolve('fun',X0,option) 其中X为返回的解,fun是用于定义需求解的非线性方程组的函数文件名,X0是求根过程的初值,option为最优化工具箱的选项设定。最优化工具箱提供 了20多个选项,用户可以使用optimset命令将它们显示出来。如果想改变其中某个选项,则可以调用optimset()函数

来完成。

  例 如,Display选项决定函数调用时中间结果的显示方式,其中‘off’为不显示,‘iter’表示每步都显示,‘final’只显示最终结果。 optimset(‘Display’,‘off’)将设定Display选项为‘off’。

例  求下列非线性方程组在(0.5,0.5) 附近的数值解。

 1 function fx = fun( p )
 2 %UNTITLED Summary of this function goes here
 3 %   Detailed explanation goes here
 4 x = p(1);
 5 y = p(2);
 6 fx(1) = x-0.6*sin(x)-0.3*cos(y);
 7 fx(2) = y-0.6*cos(x)+0.3*sin(y);
 8 
 9 
10 end
11 
12 
13 
14 
15 
16 >> x = fsolve('fun',[0.5 0.5]')
17 
18 Equation solved.
19 
20 fsolve completed because the vector of function values is near zero
21 as measured by the default value of the function tolerance, and
22 the problem appears regular as measured by the gradient.
23 
24 <stopping criteria details>
25 
26 
27 x =
28 
29     0.6354
30     0.3734

 注意:x = [1 2 3]和x = [1,2,3]是一样的都是行向量

 

写得有些乱,不过也从侧面反映出我思考了这个问题,但由于见识有限,还望大神不吝赐教。

目录
相关文章
|
3月前
|
监控 安全 应用服务中间件
网站出现“SSL handshake failed“?SSL握手失败(525)的错误修复指南
本文详细解析了Cloudflare中常见的SSL握手失败(525)错误,从问题定义到根源分析,再到具体解决方案,提供了一站式修复指南。通过检查证书域名匹配、有效性及时钟同步等问题,结合Nginx/Apache配置调整与Cloudflare设置优化,帮助用户彻底解决525错误。同时,文章还提供了预防措施,如自动续期和SSL状态监控,确保网站长期稳定运行。跟随步骤操作,可有效避免SSL相关故障,保障网站安全访问。
2028 0
网站出现“SSL handshake failed“?SSL握手失败(525)的错误修复指南
国家互联网信息办公室关于发布第十批深度合成服务算法备案信息的公告
2025年3月12日,国家网信办公布第十批深度合成算法备案信息,共395款算法通过公示。根据《互联网信息服务深度合成管理规定》,境内深度合成服务提供者和技术支持者需履行备案手续。具体信息可在中国互联网信息服务算法备案系统查询,疑议请发邮件至指定邮箱。附件含完整备案清单。
|
10月前
|
监控 网络协议 Java
一些适合性能测试脚本编写和维护的工具
一些适合性能测试脚本编写和维护的工具
376 59
|
10月前
|
机器学习/深度学习 算法 Serverless
基于WOA-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM
本项目利用鲸鱼优化算法(WOA)优化支持向量机(SVM)参数,针对乳腺癌早期诊断问题,通过MATLAB 2022a实现。核心代码包括参数初始化、目标函数计算、位置更新等步骤,并附有详细中文注释及操作视频。实验结果显示,WOA-SVM在提高分类精度和泛化能力方面表现出色,为乳腺癌的早期诊断提供了有效的技术支持。
|
消息中间件 存储 运维
RabbitMQ-消息消费时的可靠性保障
将这些实践融入到消息消费的处理逻辑中,可以很大程度上保障RabbitMQ中消息消费的可靠性,确保消息系统的稳定性和数据的一致性。这些措施的实施,需要在系统的设计和开发阶段充分考虑,以及在后续的维护过程中不断的调整和完善。
204 0
|
11月前
|
API 微服务
Traefik 微服务 API 网关教程(全)
Traefik 微服务 API 网关教程(全)
|
12月前
|
数据采集 JSON 数据格式
Python:南京地铁每日客流数据的爬虫实现
Python:南京地铁每日客流数据的爬虫实现
208 1
|
SQL 数据挖掘
SQLBolt,一个练习SQL的宝藏网站
SQLBolt,一个练习SQL的宝藏网站
242 0
|
消息中间件 存储 NoSQL
深度解密Kafka:从内部存储结构到关键技术的全景透视
深度解密Kafka:从内部存储结构到关键技术的全景透视
|
SQL 存储 关系型数据库
字节二面:说一下你对MySQL加锁的理解?
昨天在群里看到大家在讨论一个 MySQL 锁的问题,就是执行 select ... for update 语句,如果查询条件没有索引字段的话,是加「行锁」还是加「表锁」?