当前位置: 首页 > news >正文

函数用法记录——MATLAB符号计算

本文是学习中国大学MOOC中南大学的科学计算与MATLAB语言 课程后,做的课程学习笔记,特此声明。

符号对象

sym

sym用于创建符号变量或符号表达式。可以将数值、字符串或表达式转换为符号形式。例如:

x = sym('x'); % 创建符号变量x expr = sym('x^2 + 2*x + 1'); % 创建符号表达式 t = sym(2); %t赋值为2 sin(sym(pi/3)); % 输出的是3^(1/2)/2 sin(pi/3); %输出的是一个小数,是数值 a = 5; b = -8; x = sym('a'); y = sym("b"); w = (a+b)*(a-b); %输出为-39 s = (x+y)*(x-y); %输出为a和b构成的一个式子 eval(s); % 输出的是39,将表达式带入数值后计算出来

有关系运算函数,也可以使用运算符。

syms

syms是快速创建多个符号变量的快捷方式。可以同时定义多个符号变量,无需显式调用sym。例如:

syms x y z; % 同时创建符号变量x、y、z

eval

eval用于计算符号表达式的数值结果。可以将符号表达式转换为数值形式。例如:

syms x; expr = x^2 + 2*x + 1; result = eval(subs(expr, x, 2)); % 计算x=2时的表达式值

assume

assume用于为符号变量设置假设条件,例如定义变量的范围或性质。例如:

syms x; assume(x > 0); % 假设x为正数 assume(x, 'positive'); % 指定表达式x属于集合positive

factors

factors用于对符号表达式进行因式分解。例如:

syms x; expr = x^2 - 4; factor_expr = factor(expr); % 分解为(x-2)(x+2)

expand

expand用于展开符号表达式,将乘积或幂展开为多项式形式。例如:

syms x; expr = (x + 1)^2; expanded_expr = expand(expr); % 展开为x^2 + 2x + 1

collect

collect用于合并符号表达式中同类项,可以指定合并的变量。例如:

syms x y; expr = x*y + x^2 + 2*x*y; collected_expr = collect(expr, x); % 按x合并 sym a; s = a^2 + 2*x + 1; collect(s); % 对s合并,因为这里面只有一个符号变量,所以直接说也行

numden

numden用于提取符号表达式的分子和分母。例如:

syms x; expr = (x^2 + 1)/(x + 1); [n, d] = numden(expr); % 分子和分母

coeffs

coeffs用于提取符号多项式的系数。可以指定变量和排序方式。例如:

syms x; expr = 3*x^2 + 2*x + 1; coefficients = coeffs(expr, x); % 提取系数

simplify

simplify用于简化符号表达式,自动应用多种数学规则。例如:

syms x; expr = sin(x)^2 + cos(x)^2; simplified_expr = simplify(expr); % 简化为1

sym2poly

sym2poly用于将符号多项式转换为系数向量。例如:

syms x; expr = x^2 + 2*x + 1; coefficients = sym2poly(expr); % 转换为[1 2 1]

poly2sym

poly2sym用于将系数向量转换为符号多项式。例如:

coefficients = [1 2 1]; expr = poly2sym(coefficients, sym('x')); % 转换为x^2 + 2x + 1

symvar

symvar用于查找符号表达式中的变量。例如:

syms x y z; expr = x^2 + y*z; variables = symvar(expr); % 返回[x y z] vmain = symvar(expr, 1); %返回x,因为这是主变量

符号微积分

limit 函数

用于计算符号表达式的极限。语法格式为:limit(f, x, a)计算当x趋近于af的极限。

示例:

syms x; f = sin(x)/x; limit(f, x, 0) % 返回 1 limit(f, x, 0, 'right') %右极限,左极限变成left

diff 函数

用于求符号表达式的导数。语法格式为:diff(f, x)计算fx的一阶导数。

示例:

syms x; f = x^3 + 2*x^2; diff(f, x) % 返回 3*x^2 + 4*x

diff(f, x, n)计算fxn阶导数。

int 函数

用于计算符号表达式的不定积分和定积分。语法格式为:int(f, x)计算fx的不定积分。

示例:

syms x; f = 3*x^2 + 4*x; int(f, x) % 返回 x^3 + 2*x^2

int(f, x, a, b)计算fxab的定积分。

示例:

syms x; f = exp(-x^2); int(f, x, 0, inf) % 返回 sqrt(pi)/2

级数

symsum 函数

symsum是 MATLAB 中用于计算符号求和的函数,适用于对符号表达式进行求和操作。其语法如下:

S = symsum(f, k, a, b)
  • f:需要求和的符号表达式,通常包含求和变量k
  • k:求和变量(符号变量)。
  • a:求和的下限。
  • b:求和的上限(可以是无穷大inf)。

示例: 计算从k=1k=10k^2的和:

syms k S = symsum(k^2, k, 1, 10)

taylor 函数

taylor是 MATLAB 中用于生成符号表达式的泰勒级数展开的函数。其语法如下:

T = taylor(f, x, a, 'Order', n)
  • f:需要展开的符号表达式。
  • x:展开变量(符号变量)。
  • a:展开点(默认为 0,即麦克劳林级数)。
  • 'Order', n:指定展开的阶数(默认为 6)。

示例: 对sin(x)x=0处展开 5 阶泰勒级数:

syms x T = taylor(sin(x), x, 'Order', 5)

符号方程求解

solve 函数

solve是 MATLAB 中用于求解代数方程或方程组的函数。它能够处理线性方程、非线性方程以及符号表达式。

语法:

S = solve(eqn, var) S = solve(eqn1, eqn2, ..., eqnN, var1, var2, ..., varN)

示例:

syms x eqn = x^2 + 2*x + 1 == 0; sol = solve(eqn, x);

solve可以返回实数或复数解,适用于多项式方程、超越方程以及多变量方程组。如果方程无解或无法找到解析解,可能返回空解或数值近似解。有时候,solve函数得出的结果不对。

dsolve 函数

dsolve用于求解常微分方程(ODE)或微分方程组,支持解析解计算。

语法:

S = dsolve(eqn) S = dsolve(eqn1, eqn2, ..., eqnN, cond1, cond2, ..., condN) S = dsolve(eqn1, eqn2, ..., eqnN, cond1, cond2, ..., condN, v) %v是指定方程的变量,也可以不带

示例:

syms y(t) ode = diff(y, t) == t*y; sol = dsolve(ode);
http://www.jsqmd.com/news/636048/

相关文章:

  • uniapp Uview框架中u-search组件实现动态搜索与数据过滤
  • Tiktokenizer高性能架构设计:深入解析Token可视化引擎的实现原理
  • WPF DataContext实战:三种绑定方式深度解析
  • 构建“私有第二大脑”:基于 Graph-RAG 的本地知识图谱 Agent 搭建指南
  • OpenClaw:AI Agent引擎驱动的企业全流程智能助手
  • “一眼识万物”:用Rokid AI Glasses与灵珠平台打造植物百科助手
  • AIAgent为何总“好心办坏事”?SITS2026首席科学家解密价值对齐的5个隐性断层及实时干预协议
  • mPDF终极指南:PHP PDF生成库的深度技术解析与实战应用
  • 【RJ 45连接器】RJ45 网络连接器 3D 模型 3 零件装配体 SolidWorks 源文件 含 STEP/IGS 通用格式
  • Python 函数完全指南:参数、返回值与高级用法
  • 告别模糊截图:html-to-image 终极高清图像生成指南
  • PCILeech DMA攻击工具深度实战指南:掌握无驱动内存取证核心技术
  • 网络攻防实践五 20252901程宇
  • 终极指南:使用icloudpd命令行工具轻松备份你的iCloud照片库
  • OpCore Simplify终极指南:三分钟完成黑苹果完美配置
  • 运维怎么转行网络安全?(非常详细)从零基础入门到精通,收藏这一篇就够了
  • Python GUI程序怎么避免卡顿_利用多线程实现后台异步处理
  • C++ string类
  • 360Controller:macOS平台Xbox游戏控制器驱动深度解析与实战指南
  • 如何通过Java程序监控Oracle表空间_JDBC定时执行巡检SQL并推送报警指标
  • 别急着换卡!双T4虚拟机掉卡报错RmInitAdapter failed,我的排查思路和重启大法复盘
  • Chinook数据库:一站式多数据库平台教学与测试解决方案
  • FOC电流采样实战:从采样电阻到ADC的完整信号链设计
  • 3步解锁B站AI视频总结:让学习效率飙升300%的秘密武器
  • Palantir实战指南:单细胞转录组拟时分析的Python实现与优化
  • 重新定义Windows字体个性化:No!! MeiryoUI深度解析与使用指南
  • AI元人文:意义行为原生论的发生学阐明与伦理中间件建构
  • 别再用RAG硬凑了!:用知识图谱原生支撑AIAgent决策流——从Schema建模、实体对齐到因果推理的全链路工程实践
  • 如何快速配置黑苹果:OpCore-Simplify自动化工具的终极指南
  • 利用龙虾优化代码项目