台湾国立大学郭彦甫Matlab教程笔记(18) root finding(symbolic)

本文主要是介绍台湾国立大学郭彦甫Matlab教程笔记(18) root finding(symbolic),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

today:
symbolic approach 运用符号的方式求根
numeric root solvers数值的方式求根
recursive functions 递归函数

problem statement问题陈述

suppose you have a mathematical function f(x) and you want to finx x0 such that f(x0)=0,e.g.
在这里插入图片描述
how do you solve the problem using MATLAB?

analytical solutions 解析解,求根公式
graphical illstration图形描述
numerical solutions 数值解

今天focus analytical solution and numerical sulution

symbolic root finding approach 符号方法

performing mathematics on symbols ,not numbers 把数值变成 symbol符号形式
the symbols math are performed using 'symbolic varibles’符号变量

怎么做呢?
use sym or syms to create symbolic varibles

举例:如何把x宣告成 symbolic 的形式
syms x%x变成 symbolic varible
x+x+x
(x+x+x)/4

运行结果可以看到:
在这里插入图片描述

还有一个指令
x=sym(‘x’);

下面要定义一个函数,用symbolic 的形式

在这里插入图片描述

运行结果:
在这里插入图片描述

现在知道了 symbolic varible ,就要用symbolic 的方式解决方程式求根的问题

symbolic root finding :solve()符号法求根

function : solve finds roots for equations

在这里插入图片描述
如何用matlab来求解呢?
第一步,需要让x变成 symbolic varible
第二步,y表示出来
第三步solve(y,x)参数是方程在前,自变量在后面

例程代码:

syms x;
y=x*sin(x)-x;
solve(y,x)%solve 直接让y=0,不用手动再令成零。

得到上面方程的根:
在这里插入图片描述
需要注意的是,这个结果ans 也是symbolic variable 不是数值变量

练习题:
在这里插入图片描述
我的练习:

syms x;
y=(cos(x)).^2-(sin(x).^2);
solve(y,x)

运行结果:得到第一个方程的根是 pi/4
在这里插入图片描述
第二题:
代码:

syms x;
y=(cos(x)).^2+(sin(x)).^2;
solve(y,x)

执行结果发现这个方程无解。根据高中的知识,确实y=1,不会等于0
在这里插入图片描述

下一个问题

solving multiple equations多个方程求解

只需要多声明symbolic varibles

例题:解二元一次方程组
在这里插入图片描述
例程代码:

syms x y;
eq1=x-2*y-5;
eq2=x+y-6;
A=solve(eq1,eq2,x,y)%两个方程放在前面

运行上面代码,我们就解出来这个方程组:但是得到的是一个structure,

在这里插入图片描述

如何显示structure中的元素呢?
A.x
A.y
得到方程组的解:

在这里插入图片描述
再来看下一个问题

solving equations expressed in symbols解带符号的方程

举例:

在这里插入图片描述

例程代码:(新版matlab运行不了)

syms x a b
solve('a*x^2-b')

执行时出现错误:
在这里插入图片描述
好像不能这样用(solve()里面方程用单引号‘’好像已经不能这样来处理了)
在这里插入图片描述
换一种写法试试

syms x a b;
y=a*x^2-b;
solve(y,x)

发现行得通,运行结果得到用a和b表示的方程的解

在这里插入图片描述
上面这个例题中x是未知数,如果让b是未知数,a和x是已知,我们怎么解呢?

x is always the first choice to be solved,一般x是默认的未知数
what if one wants to express b in terms of a and x?
如果想要b是未知数的话,需要改变一下指令

如下程序:(代码有问题)

syms x a b 
y=a*x^2-b;
solve(y,'b')%意思是b是 unknown 未知的

发现这段代码出现错误:
在这里插入图片描述
改正:b不需要加单引号。就像solve(y,x)一样,x是未知数。
代码:

syms x a b 
y=a*x^2-b;
solve(y,b)%意思是b是 unknown 未知的

得到结果:用x和a表示出来的b

在这里插入图片描述

练习题:

在这里插入图片描述
第一个题目:用symbolic 的方式求解一个圆的方程,其中只把x当作未知数
第二个题目:用符号的方法求一个矩阵的逆矩阵(matrix inverse)
思路:需要把a,b,c,d声明成 syms,同时需要一个求逆矩阵的指令,老师讲好像是inv()

我的练习:
第一题代码:

syms x y a b r;
f=(x-a).^2+(y-b).^2-r.^2;%方程
solve(f,x)%求解根

计算结果:

在这里插入图片描述
第二题解决:
先查一查inv()函数是何方神圣,发现inv()确实可以求逆矩阵
在这里插入图片描述

syms a b c d;
A=[a,b;c,d];%用symbolic 形式表示的矩阵
inv(A)%求逆矩阵的指令

运行结果,得到A矩阵的逆矩阵
在这里插入图片描述

【总结一下】
本文学习了方程求根的一中方法,用symbolic 的方法,可以显式的表达出来一个结果,很直观。
声明符号变量使用 关键字 syms
求根使用函数solve()
解方程组 也可以使用solve()函数,只需要加上几个形参。
同样可以解带有a,b等字母系数的方程

这篇关于台湾国立大学郭彦甫Matlab教程笔记(18) root finding(symbolic)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/466073

相关文章

Nexus安装和启动的实现教程

《Nexus安装和启动的实现教程》:本文主要介绍Nexus安装和启动的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Nexus下载二、Nexus安装和启动三、关闭Nexus总结一、Nexus下载官方下载链接:DownloadWindows系统根

CnPlugin是PL/SQL Developer工具插件使用教程

《CnPlugin是PL/SQLDeveloper工具插件使用教程》:本文主要介绍CnPlugin是PL/SQLDeveloper工具插件使用教程,具有很好的参考价值,希望对大家有所帮助,如有错... 目录PL/SQL Developer工具插件使用安装拷贝文件配置总结PL/SQL Developer工具插

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示

Java Spring 中的监听器Listener详解与实战教程

《JavaSpring中的监听器Listener详解与实战教程》Spring提供了多种监听器机制,可以用于监听应用生命周期、会话生命周期和请求处理过程中的事件,:本文主要介绍JavaSprin... 目录一、监听器的作用1.1 应用生命周期管理1.2 会话管理1.3 请求处理监控二、创建监听器2.1 Ser

MySQL 安装配置超完整教程

《MySQL安装配置超完整教程》MySQL是一款广泛使用的开源关系型数据库管理系统(RDBMS),由瑞典MySQLAB公司开发,目前属于Oracle公司旗下产品,:本文主要介绍MySQL安装配置... 目录一、mysql 简介二、下载 MySQL三、安装 MySQL四、配置环境变量五、配置 MySQL5.1

MQTT SpringBoot整合实战教程

《MQTTSpringBoot整合实战教程》:本文主要介绍MQTTSpringBoot整合实战教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录MQTT-SpringBoot创建简单 SpringBoot 项目导入必须依赖增加MQTT相关配置编写

在Java中基于Geotools对PostGIS数据库的空间查询实践教程

《在Java中基于Geotools对PostGIS数据库的空间查询实践教程》本文将深入探讨这一实践,从连接配置到复杂空间查询操作,包括点查询、区域范围查询以及空间关系判断等,全方位展示如何在Java环... 目录前言一、相关技术背景介绍1、评价对象AOI2、数据处理流程二、对AOI空间范围查询实践1、空间查

Logback在SpringBoot中的详细配置教程

《Logback在SpringBoot中的详细配置教程》SpringBoot默认会加载classpath下的logback-spring.xml(推荐)或logback.xml作为Logback的配置... 目录1. Logback 配置文件2. 基础配置示例3. 关键配置项说明Appender(日志输出器

Kali Linux安装实现教程(亲测有效)

《KaliLinux安装实现教程(亲测有效)》:本文主要介绍KaliLinux安装实现教程(亲测有效),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载二、安装总结一、下载1、点http://www.chinasem.cn击链接 Get Kali | Kal