台湾国立大学郭彦甫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

相关文章

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA