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

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit