当前位置:网站首页>Matlab符号函数的生成及计算其函数值
Matlab符号函数的生成及计算其函数值
2022-08-10 09:21:00 【撼山拔月】
一、引言
符号函数是Matlab的一个非常重要的功能,可以用来表示数学上的函数,同时也是进行数值计算。创建符号函数的方法有多种,本文给出了四种生成符号函数的方法及求符号函数函数值的方法。
四种生成符号函数的方法:有利用字符串表达式生成符号函数、利用syms定义符号变量生成符号函数、利用sym和@生成符号函数法、利用函数文件生成符号函数等方法。
求符号函数的函数值,可以使用命令“matlabFunction”来把符号函数转换成可以像数学上计算函数值的表示形式来计算自变量在某些点处的函数值。
二、符号函数的生成
1、字符串法
就是在字符串中直接写函数表达式,例如:
y = 'sin(x) - cos(x) + exp(x)'
则可以得到运行结果:
y =
'sin(x) - cos(x) + exp(x)'
此时,系统会自动识别x为自变量。
需要注意的是,如果使用了系统提供的一些数学函数符号的话,自变量必须使用一对圆括号括起来,否则系统就不认识了(如果非要问为什么,那只能回答“这是系统的语法规则”)
注意:此法适用于matlab7.1及之前的版本,新版本单纯将其视为字符串。
2、syms法(此法是最常用的方法)
首先利用syms命令定义自变量,然后再生成符号函数,例如:
syms x;
y1 = sin(x) - cos(x) + exp(x)
y2 = x^3 + 5*x^2 + 10*x + 1
syms x y
z = x * exp( -x^2 - y^2 )
输出结果:
y1 =
exp(x) - cos(x) + sin(x)
y2 =
x^3 + 5*x^2 + 10*x + 1
z =
x*exp(- x^2 - y^2)
当对这些函数求导函数时,系统会自动识别自变量,当遇到多元函数求导数时,缺省的自变量就是排在第一个位置的自变量。例如
diff( y1 )
diff( y2 )
diff( z )%对缺省自变量x求导函数
diff( z, 'x' )%等同于diff( z ),也可以写成diff( z, x )
diff( z, 'y' )%对指定的自变量y求导函数
输出结果为:
ans =
3*x^2 + 10*x + 10
ans =
exp(- x^2 - y^2) - 2*x^2*exp(- x^2 - y^2)
ans =
exp(- x^2 - y^2) - 2*x^2*exp(- x^2 - y^2)
ans =
-2*x*y*exp(- x^2 - y^2)
3、利用sym和@法
首先利用@声明变量,在其后写符号函数表达式,此时就可以得到符号函数了。之后使用sym转换成符号函数,就可以进行其它符号运算了,例如:
y = @(t)sin(t) - cos(t) + exp(t)
ys = sym( y )
dy = diff( ys )
Idy = int( dy )
fplot( y, [ -2*pi, 2*pi ] )
figure;
fplot( ys, [ -2*pi, 2*pi ] )
figure;
fplot( dy, [ -2*pi, 2*pi ] )
输出结果:
y =
包含以下值的 function_handle:
@(t)sin(t)-cos(t)+exp(t)
ys =
exp(t) - cos(t) + sin(t)
dy =
cos(t) + exp(t) + sin(t)
Idy =
exp(t) - 2^(1/2)*cos(t + pi/4)


4、函数文件法
就是利用函数文件来生成符号函数。例如生成函数x^n,可以如下实现:
%xpower.m
function output=xpower(n)
syms x
output=x^n;
三、符号函数的数值运算
对于符号函数,除了做符号运算之外,往往还需要计算符号函数在某些点处的函数值,此时需要使用matlabFunction命令做一次转换,然后就可以计算该符号函数的函数值了。例如:
clear all
clc
syms x;
y1 = sin(x) - cos(x) + exp(x);
y2 = x^2 - 10*x + 16;
y1f = matlabFunction( y1 );
y2f = matlabFunction( y2 );
x1 = [ 0, pi ];
y1v = y1f( x1 )%计算符号函数y1f在x1的函数值,x1可以是单坐标,也可以说数组
x2 = [ 2 8 ];
y2v = y2f( x2 )
输出结果:
y1v =
0 24.1407
y2v =
0 0
边栏推荐
- Shell functions and arrays
- 日期类(暑假每日一题 19)
- 不想再干会计了,蝶变向新,勇往直前,最后成功通过转行测试实现月薪翻倍~
- 浅谈DAO+DeFi+NFT模式开发代码技术方案丨链游元宇宙NFT盲盒项目技术开发逻辑(源码程序)
- 【Enterprise Architecture】Agile and Enterprise Architecture: Strategic Alliance
- Ask next CDC mysql to Doris. Don't show the specific number of lines, how to do?
- Flink部署 完整使用 (第三章)
- shell------常用小工具,sort,uniq,tr,cut
- 傅立叶级数与傅里叶变换
- 并发的基本概念,操作,容器
猜你喜欢

【API Management】What is API Management and why is it important?

微信小程序--》小程序生命周期和WXS使用

IDEA中xml文件头报错:URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs)

【API 管理】什么是 API 管理,为什么它很重要?

Spotify expresses its architectural design using the C4 model

浅析JWT安全问题

【API架构】REST API 行业辩论:OData vs GraphQL vs ORDS

CAD转WPF: 关于CAD图纸文件转换为WPF矢量代码文件(xaml文件)的技巧

DAY25: Logic Vulnerability

DAY26: GetShell project
随机推荐
js--------对象数组转换成二维数组(excel表格导出)
爬虫-爬取某小说网站
PTA Exercise 2.2 Rotate an Array Left
The implementation of the seemingly useless component (text gradient) in NaiveUI is so simple
【 WeChat applet 】 read page navigation
数据库注入提权总结(一)
【企业架构】敏捷与企业架构:战略联盟
DAY25:逻辑漏洞
[OAuth2] 20. OAuth2 Extended Protocol PKCE
多线程知识点总结之温故而知新
J9数字论:关于DAO 特点的宏观分析
浅析JWT安全问题
多线程浅谈
ARM体系结构2:处理器内核和汇编指令集
2022-08-09 第六小组 瞒春 学习笔记
JVM探究
js-----数组转换成树形结构
并发的基本概念,操作,容器
keepalived:主备配置
【API架构】REST API 行业辩论:OData vs GraphQL vs ORDS