MATLAB教程_11方程式求根_台大郭彦甫课程笔记
MATLAB教程_11方程式求根_台大郭彦甫课程笔记
- 一、符号寻根法(解析法)
- 1、使用sym()或syms()创建符号变量
- 2、符号根查找:solve()
- 3、解多重方程
- 4、求解用符号表示的方程
- 5、符号微分:diff()
- 6、符号积分:int()
- 7、符号与数字
- 二、数值方法
- 1、Review of [Function Handles](https://blog.csdn.net/weixin_45433350/article/details/113394742) (@)
- 2、fsolve()
- 3、fzero()
- 4、可以给函数fsolve()和fzero()附加选项
- 6、数值寻根方法
解一个函数的方法:
1. 解析解
2. 图解
3. 数值解
一、符号寻根法(解析法)
对符号而不是数字进行数学运算
使用“符号变量”执行符号数学
1、使用sym()或syms()创建符号变量
syms()
>> syms x %简单,建议使用
>> x + x + x
ans =
3*x
>> (x + x + x)/4
ans =
(3*x)/4>> y = x^2-2*x-8
y =
x^2 - 2*x - 8
sym()
>> x=sym('x');
>> x + x + x
ans =
3*x
>> (x + x + x)/4
ans =
(3*x)/4
2、符号根查找:solve()
函数“solve”找到方程的根
1)基本解法
>> syms x
>> y = x*sin(x)-x
y =
x*sin(x) - x
>> solve(y,x) %解的是令y=0时函数的根
ans =0
pi/2
2)简化解法
>> syms x
solve(x*sin(x)-x, x)
ans =0
pi/2
- 练习1:cos(x)2−sin(x)2=0cos(x)^2-sin(x)^2=0cos(x)2−sin(x)2=0和cos(x)2+sin(x)2=0cos(x)^2+sin(x)^2=0cos(x)2+sin(x)2=0【解得的答案不完整】
>> syms x
>> y = cos(x)^2-sin(x)^2;
>> solve(y,x)
ans =
pi/4
%在[0,2π]应该有两个解
>> clear;
f=@(x) cos(x)^2-sin(x)^2
fzero(f,0)
f =包含以下值的 function_handle:@(x)cos(x)^2-sin(x)^2
ans =-0.7854
%用数值方法求解也只有一种解>> syms x
y = cos(x)^2+sin(x)^2;
solve(y,x)
ans =
Empty sym: 0-by-1
%应该有虚数解
3、解多重方程
举例——二元一次方程式{x−2y=5x+y=6\begin{cases} x-2y=5 \\ x+y=6 \end{cases}{x−2y=5x+y=6
>> syms x y
eq1 = x - 2*y - 5;
eq2 = x + y - 6;
A = solve(eq1,eq2,x,y)
A =包含以下字段的 struct:x: [1×1 sym]y: [1×1 sym]
>> A.x %查看x,y的值时,用的是“ . ”
ans =
17/3
>> A.y
ans =
1/3
4、求解用符号表示的方程
如果给我们一个用符号表示的函数怎么办?
ax2−b=0ax^2-b=0ax2−b=0
>> syms x a b
solve('a*x^2-b')
检查对函数 'solve' 的调用中是否缺失参数或参数数据类型不正确。
>> solve(a*x^2-b)
ans =
b^(1/2)/a^(1/2)
-b^(1/2)/a^(1/2)
求bbb的解怎么办?
改变solve括号中的xxx为bbb
>> syms x a b
solve(a*x^2-b,b)
ans =
a*x^2
- 练习2:用符号方法求解这个方程(x−a)2+(y−b)2=r2(x-a)^2+(y-b)^2=r^2(x−a)2+(y−b)2=r2
>> syms x y a b r
eq = (x-a).^2 + (y-b).^2 - r.^2;
solve(eq,x)
ans =
a + (b + r - y)^(1/2)*(r - b + y)^(1/2)
a - (b + r - y)^(1/2)*(r - b + y)^(1/2)
- 练习3:用符号方法求矩阵逆inv(A)
>> syms a b c d
A = [a b; c d];
inv(A)
ans =
[ d/(a*d - b*c), -b/(a*d - b*c)]
[-c/(a*d - b*c), a/(a*d - b*c)]
5、符号微分:diff()
计算符号函数的导数:y=4x5y=4x^5y=4x5
>> syms x
y = 4*x^5;
yprime = diff(y)
yprime =
20*x^4
- 练习4:计算微分法
f(x)=ex2x3−x+3,dfdx=?f(x)=\frac{e^{x^2}}{x^3-x+3}, \; \frac{df}{dx}=?f(x)=x3−x+3ex2,dxdf=?
g(x)=x2+xy−1y3+x+3,dfdx=?g(x)=\frac{x^2+xy-1}{y^3+x+3}, \; \frac{df}{dx}=?g(x)=y3+x+3x2+xy−1,dxdf=?
syms x y
f(x) = exp(x^2)/(x^3 - x + 3);
g(x) = (x^2 + x*y - 1)/(y^3 + x + 3);
>> fprime = diff(f(x))
fprime =
(2*x*exp(x^2))/(x^3 - x + 3) - (exp(x^2)*(3*x^2 - 1))/(x^3 - x + 3)^2
>> gprime = diff(g(x))
gprime =
(2*x + y)/(y^3 + x + 3) - (x^2 + y*x - 1)/(y^3 + x + 3)^2
6、符号积分:int()
计算符号函数的积分:
提示:使用subs()
>> syms x;
y = x^2*exp(x);
z = int(y)
z =
exp(x)*(x^2 - 2*x + 2)
>> z = z-subs(z, x, 0)
z =
exp(x)*(x^2 - 2*x + 2) - 2
- 练习5:
>> syms x;
y = (x^2 - x +1)/(x + 3);
int(y,[0,10])
ans =
log(302875106592253/1594323) + 10
7、符号与数字
优势 | 劣势 | |
---|---|---|
Symbolic | 解析解 | 有时候解决不了 |
让你凭直觉了解解的形式 | 可能太复杂了 | |
Numeric | 总能找到解决办法 | 很难得出更深的理解 |
可以使解决方案精确 | ||
易于编码 |
二、数值方法
用MATLAB中的一些内建的数值运算、函式来解方程式的根
1、Review of Function Handles (@)
•handle是指向函数的指针
•可用于将函数传递给其他函数
2、fsolve()
•数值根解算器
•例如,求解此方程:
MATLAB教程_11方程式求根_台大郭彦甫课程笔记相关推荐
- 台大李宏毅课程笔记3——New Optimization for Deep Learning深度学习新优化
台大李宏毅课程笔记3 SGD with Momentum(SGDM) RMSProp Adam SWATS AdaXXX Adam分析 AMSGrad AdaBound SGDM分析 Cyclical ...
- 廖雪峰讲python高阶函数求导_廖雪峰python课程笔记
1. 可以通过 print(os.sys.path) 来查看python可导入的包的路径情况,这会打印出一个list.当我们import某一个包时,python会根据这个list,从前向后搜寻相匹配的 ...
- MATLAB 方程式求根
文章目录 前言 一.Problem Statement 二.Symbolic Root Finding Approach 符号求根法 三.Symbolic Root Finding: solve() ...
- matlab求两向量夹角_MATLAB教程-台大郭彦甫-第十节,含练习答案
10-数值微积分 一.Polynomial differentiation and integration(多项式微分与积分) (一)Differentiation(微分) 1.The derivat ...
- 【台大郭彦甫】Matlab入门教程超详细学习笔记七:数值微积分(附PPT链接)
数值微积分 前言 一.多项式微积分 1. 多项式计算 2. 多项式微分 3. 多项式积分 二.数值微积分 1. 数值微分法 2. 高阶微分法 3. 数值积分法 三.回顾Function Handles ...
- 【台大郭彦甫】Matlab入门教程超详细学习笔记二:基本操作与矩阵运算(附PPT链接)
Matlab入门教程超详细学习笔记二:基本操作与矩阵运算 前言 一.基本操作 1.把matlab当作计算器使用 2.变量 3.控制格式输出 二.矩阵运算 1.矩阵 2.矩阵索引 3.使用:创建向量 4 ...
- 【台大郭彦甫】Matlab入门教程超详细学习笔记五:初阶绘图(附PPT链接)
初阶绘图 前言 一.基础绘图 1.plot() 绘制二维线图 2.legend()添加图例 3.title()和*label()添加标题与坐标轴 4.text()和annotation()增加注解 二 ...
- 【台大郭彦甫】Matlab入门教程超详细学习笔记六:高阶绘图(附PPT链接)
高阶绘图 前言 一.进阶二维绘图 1. 对数图 2.一图双y轴 3. 直方图 4. 条形图 5. 饼状图 6. 极坐标图 7. 阶梯图与取样图 8. 箱线图以及误差线图 9. 填充图 二.配色 1.R ...
- 【台大郭彦甫】Matlab入门教程超详细学习笔记四:数据类型与文件读写(附PPT链接)
变量类型与文件读写 前言 一.变量类型 1.numeric(数值类型) 2.char(字符类型) 3.string(字符串类型) 4.structure(结构体) 5.cell(元胞数组) 5.高维数 ...
最新文章
- 华为云classroom应用_华为任正非:将来所有应用都会长在云土地上,但现在还不是...
- 2021年,Azure云遇到. NET5,注定开启高光时刻,微软的心,真大!
- python语言程序设计赵璐课后答案_Python语言程序设计
- java集合对字符串或对象去重
- java ttf_使用iText从* .ttf文件创建字体
- 用C#制作PDF文件全攻略 (专至csdn)
- Android设备新型恶意软件,融合银行木马、键盘记录器和移动勒索软件等功能
- 捷信达酒店管理系统密码修改SQL语句
- python周报第十九周
- Android Q共享音频输入
- [4G5G专题-45]:物理层-基带子载波数字调制解调(星座图, 相位调制PSK, 正交幅度相位调制QAM)
- mmap之内存映射文件与常规文件操作比较
- 诗词收集——用于人文素养扫盲
- Windows 10 键盘快捷方式速查表
- java泊松分布随机数,C语言生成泊松分布随机数
- grub4dos引导启动linux,grub4dos中怎么样调用syslinux引导
- 【JAVA】RequestResponse
- 笑话--老外与山东妞(爆笑)
- G3D 渲染引擎简介
- Python:Turtle图形绘制