Matlab符号函数的生成及求符号函数的函数值
一、引言
符号函数是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命令做一次转换,然后就可以计算该符号函数的函数值了。
例1:
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
例2:
clear all
clc
fun = @(x)x.^2 + 2*sin(3*x);%生成符号函数
x = [ -5 : 0.5 : 5 ];
funs = sym( fun ) %将符号函数fun转换成系统可以进行运算的符号函数形式
yfun = matlabFunction( funs )%将funs转换成可以进行数值计算的函数
y = yfun( x )%计算符号函数的函数值,形式同数学上函数表达式
plot( x, y );
format compact
运行结果:
Matlab符号函数的生成及求符号函数的函数值相关推荐
- jiegputo matlab转置,matlab实现用免疫克隆算法求二元函数的最优值(附源码)
用免疫克隆算法求二元函数的最优值 求下面函数的最小值(最优解) Goldstein-Price函数: f1(x)=[1+(x1+x2+1)2(19-14x1+3x12-14x2+6x1x2+3 ...
- 用一个随机数函数去生成另一个随机数函数:rand(a)生成rand(b)以及rand(a,b) 生成rand(c,d)
让我们把这个问题泛化一下,从特殊到一般.现在我给你两个生成随机数的函数Randa, Randb.Randa和Randb分别产生0到a的随机数和0到b的随机数,a,b不相等 (相等就没必要做转换了).现 ...
- cass 河流走向 符号_3分钟生成CASS专属符号库的小诀窍,你get了吗?
池塘符号自动添加注记 CASS10.1的池塘符号,绘制完成后不能自动标注"塘",如下图. 需要调整成能自动标注"塘"的符号,如下图. 修改方法 CASS9.2以 ...
- mysql拼音函数_Mysql生成姓名拼音的函数
一.创建拼音对照表 复制代码 代码如下: -- 创建汉字拼音对照临时表 CREATE TABLE IF NOT EXISTS t_base_pinyin ( pin_yin_ varchar(255) ...
- matlab数组求一阶导数,用matlab求符号函数数组或函数矩阵的导数实例教程
用matlab求符号函数数组或函数矩阵的导数实例教程 在符号矩阵中,矩阵的每个元素都可以存放符号函数,这是对符号函数数组的求到运算是对数组元素逐个进行的.接下来就以实例向大家介绍一下用matlab对符 ...
- Matlab使用符号对象求二元函数积分并做图
一.需求 需要做一个正态分布函数的概率密度图,打算使用符号对象syms做图. 二.使用方法 2.1 syms函数声明符号对象 syms 可以声明符号对象,以便求解方程的导数/积分的函数. 2.2 ...
- matlab中sign函数的使用(提取符号)
仅用于记录自己学习过程中遇到的函数 matlab中sign函数的使用,提取符号 一.语法 Y = sign(x) 返回与 x 大小相同的数组 Y,其中 Y 的每个元素是: 1,前提是 x 的对应元素大 ...
- MATLAB学习第八天(数组,符号,函数)
目录 MATLAB数组 MATLAB中的特殊阵列 MATLAB幻方 MATLAB多维数组 详细例子 MATLAB数组函数 详细示例 MATLAB数组排序 MATLAB单元阵列 注意 详细例子 MATL ...
- MATLAB中的微积分运算(数值符号)
显然这个函数是单词differential(微分)的简写,用于计算微分.实际上准确来说计算的是差商. 如果输入一个长度为n的一维向量,则该函数将会返回长度为n-1的向量,向量的值是原向量相邻元素的差, ...
- matlab离散方波信号,MATLAB - 在ODE15s函数中生成方波信号?(MATLAB - Generate square signal in ODE15s function?)...
MATLAB - 在ODE15s函数中生成方波信号?(MATLAB - Generate square signal in ODE15s function?) 我试图从函数内部生成一个方形信号,通过O ...
最新文章
- [JavaScript Java] 初识Closure Tools(一)
- UVa 11374 机场快线
- 慎用window.showModalDialog()
- Pearson相关系数 - Pearson's Correlation Coefficient
- windows下揪出java程序占用cpu很高的线程
- Android中将一个图片切割成多个图片[转]
- centos7安装csvn
- Bootstrap 调用插件
- 网络安全 Security+(SY0-601)学习笔记
- How-to: Do Statistical Analysis with Impala and R
- 读Zepto源码之IOS3模块
- 前段基础html常用标签,web前端开发网络课程,HTML常用的五种标签
- 图解sql内外连接和左连接left join和右连接right join
- SpringAOP+自定义注解模拟shiro框架实现
- CodeBlock13.12对gcc与g++的更新
- SPI通信协议详解(一)
- 程序员年薪30万,被准丈母娘各种刁难,网友说:分手吧!
- Viddy上视频营销最成功的6家公司
- 索尼Z2(L50t)刷CM12教程
- android entries属性,ListPreference需要设置两个属性:android:entries和android:entryValues...
热门文章
- vue3中lottie动画的实现
- python3.7版本简介_Python实例100个(基于最新Python3.7版本)
- ug冲模标准件库_UG标准件库|标准件库下载|3DSource零件库|海量CAD模型
- STL库和Boost库
- win10本地策略组脚本
- ubuntu18.04 卸载Anaconda3
- github java 性能,JavaGuide/手把手教你定位常见Java性能问题.md at master · Github-Programer/JavaGuide · GitHub...
- STM32/STM32L151 RTC唤醒低功耗STOP(停机模式)
- java生成10000人随机姓名及手机号的excel
- Windows Server 2008 R2 企业版操作说明手册