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

相关文章

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.