第7章 符号计算——7.4 符号表达式替换

简介: 第7章 符号计算——7.4 符号表达式替换

7.4  符号表达式替换


在处理一些结构较为复杂、变量较多的数学模型时,引入一些新的变量进行代换,以简化其结构,从而达到解决问题的目的,这种方法叫作变量代换法。


例如,求不定积分74ae37d87ac7a473ee04f97b762e856d_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png,设8401e30e03e929dd163f9248ab4f15d1_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png,则

21e3d52020f45a0a7fc6059a882403ac_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

变量代换法是一种非常有效的解题方法,尤其是在处理一些复杂的不等式问题时,效果明显。合理代换往往能简化题目的信息,凸显隐含条件,沟通量与量之间的关系,对发现解题思路、优化解题过程有着重要的作用。

MATLAB提供了subs函数和subexpr函数进行变量代换,或者叫作符号表达式的替换。subs函数利用符号变量或符号表达式替换目标符号表达式中的符号变量(包括符号常量);subexpr函数利用符号变量替换目标符号表达式中的某个子符号表达式。


7.4.1  subs替换函数


函数subs可以用指定符号替换符号表达式中的某一特定符号,其调用格式如下。

● R=subs(S):用工作区中的变量值替代符号表达式S中的所有符号变量。如果没有指定某符号变量的值,则返回值中该符号变量不被替换。

● R=subs(S,New):用新符号变量New替代原来符号表达式S中的默认变量。确定默认变量的规则与函数findsym的规则相同。

● R=subs(S,Old,New):用新符号变量New替代原来符号表达式S中的变量Old。当New是数值形式的符号时,实际上用数值代替原来的符号来计算表达式的值,只是所得结果仍然是字符串形式。


7-21subs替换函数示例。

在命令行窗口中输入:

syms x y t;
f = sym(x^2 + x * y + y^2)
x = 2;
subs(f)

输出结果:

f =
x^2 + x*y + y^2
ans =
y^2 + 2*y + 4


在命令行窗口中输入:

y = 2;
subs(f)

输出结果:

ans =
12


在命令行窗口中输入:

subs(f, t^2)

输出结果:

ans =
t^4 + t^2*y + y^2


在命令行窗口中输入:

subs(f, {'x', 'y'}, {3, 4})

输出结果:

ans =
37



7.4.2  subexpr替换函数


函数subexpr将表达式中重复出现的字符串用变量代替,其调用格式如下。

● [Y,SIGMA]=subexpr(S,SIGMA):指定用变量SIGMA的值(必须为符号对象)来代替符号表达式(可以是矩阵)中重复出现的字符串。替换后的结果由Y返回,被替换的字符串由SIGMA 返回。

● [Y,SIGMA]=subexpr(S,'SIGMA'):这种形式和上一种形式的不同之处在于,第二个输入参数是字符或字符串,它用来替换符号表达式中重复出现的字符串。其他参数与上面的形式相同。


7-22subexpr替换函数示例。

在命令行窗口中输入:

syms  a b c d x
solutions = solve(a * x^3 + b * x^2 + c * x + d == 0, x, 'MaxDegree', 3)

输出结果:

solutions =
                                                                                                                                                                                                                                                                                                                        (((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (- b^2/(9*a^2) + c/(3*a))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2))^(1/3) - b/(3*a) - (- b^2/(9*a^2) + c/(3*a))/(((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (c/(3*a) - b^2/(9*a^2))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2))^(1/3)
 (- b^2/(9*a^2) + c/(3*a))/(2*(((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (c/(3*a) - b^2/(9*a^2))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2))^(1/3)) - (3^(1/2)*((- b^2/(9*a^2) + c/(3*a))/(((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (c/(3*a) - b^2/(9*a^2))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2))^(1/3) + (((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (- b^2/(9*a^2) + c/(3*a))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2))^(1/3))*1i)/2 - b/(3*a) - (((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (- b^2/(9*a^2) + c/(3*a))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2))^(1/3)/2
 (- b^2/(9*a^2) + c/(3*a))/(2*(((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (c/(3*a) - b^2/(9*a^2))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2))^(1/3)) + (3^(1/2)*((- b^2/(9*a^2) + c/(3*a))/(((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (c/(3*a) - b^2/(9*a^2))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2))^(1/3) + (((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (- b^2/(9*a^2) + c/(3*a))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2))^(1/3))*1i)/2 - b/(3*a) - (((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (- b^2/(9*a^2) + c/(3*a))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2))^(1/3)/2


继续输入:

[r, sigma] = subexpr(solutions)

输出结果:

r =
                                                                  sigma - b/(3*a) - (- b^2/(9*a^2) + c/(3*a))/sigma
 (- b^2/(9*a^2) + c/(3*a))/(2*sigma) - b/(3*a) - (3^(1/2)*(sigma + (- b^2/(9*a^2) + c/(3*a))/sigma)*1i)/2 - sigma/2
 (- b^2/(9*a^2) + c/(3*a))/(2*sigma) - b/(3*a) + (3^(1/2)*(sigma + (- b^2/(9*a^2) + c/(3*a))/sigma)*1i)/2 - sigma/2
sigma =
(((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (- b^2/(9*a^2) + c/(3*a))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2))^(1/3)

相关文章
|
3月前
|
XML 安全 Java
【SpringSecurity新手村系列】(5)RBAC角色权限与账户状态校验
本章在数据库认证基础上,通过 RBAC 三表(用户-角色-权限)把角色与权限从数据库接入 Spring Security,并补齐账户状态字段(过期、锁定、启用等),实现“可登录 + 可授权 + 可控状态”的完整认证闭环。
252 4
|
3月前
|
Linux 数据安全/隐私保护 iOS开发
为知笔记Docker私有部署全流程教程
本文详解为知笔记Docker私有部署全流程:从Docker安装、数据目录创建、容器启动到浏览器访问,涵盖默认账号密码、端口配置及更新脚本编写。支持多平台,5账号内免费,适合追求沉浸式UI体验的用户自建笔记服务。(239字)
566 5
为知笔记Docker私有部署全流程教程
|
人工智能 Serverless 定位技术
MCP云托管最优解,揭秘国内最大MCP中文社区背后的运行时
近期,中国第一 AI 开源社区魔搭(ModelScope)推出全新 MCP 广场,上架千余款热门的 MCP 服务。从当下火热的高德地图、网页抓取再到独家的支付宝,开发者/机构可以查看近 1500 种 MCP 的功能与应用场景,并通过 MCP 实验场直接上手使用。魔搭的加入无疑对国内 MCP 的发展开启了加速键。
|
9月前
|
移动开发 监控 小程序
java家政平台源码,家政上门清洁系统源码,数据多端互通,可直接搭建使用
一款基于Java+SpringBoot+Vue+UniApp开发的家政上门系统,支持小程序、APP、H5、公众号多端互通。涵盖用户端、技工端与管理后台,支持多城市、服务分类、在线预约、微信支付、抢单派单、技能认证、钱包提现等功能,源码开源,可直接部署使用。
686 24
|
8月前
|
并行计算 数据挖掘 5G
MATLAB R2024b 数据分析软件,安装详细步骤,附安装包
MATLAB R2024b 发布,聚焦性能提升与稳定性优化,支持GPU加速、5G/6G工具链及HDL代码生成,新增NPU硬件支持,配合深色界面与调试增强,助力高效科学计算与工程设计。
4509 5
|
10月前
Motrix教程来了!让你的下载不限速!全网最仔细的教程来咯!
Motrix是一款高效、简洁的下载工具,支持HTTP、FTP、BT等多种协议,具备智能分片、断点续传、批量下载等功能,适用于电影、游戏、文档等各类文件高速下载,提升用户下载体验。
1565 0
|
敏捷开发 人工智能 双11
240小时,中国东航从“出海”到“入海”,连接世界的精彩
在全球化3.0时代,中国“单方面免签”、“240小时过境免签”等政策正为航空业注入新动能。作为国家战略的重要航空实施主体,中国东方航空集团有限公司(以下简称东航)深度融入“一带一路”建设,持续将政策优势转化为航线网络优势,切实推动“让世界看中国”的国家战略落地实施,加速中国企业全球化布局进程。 近日,在阿里云主办的「2025中企出海大会」主论坛上,中国东方航空股份有限公司市场营销部副总经理徐喆发表题为《中国东航:连接世界的精彩》的主题演讲,与业界共话政策开放下航空业的出海实践,探索AI时代民航全球化发展的新路径。
550 3
|
SQL 运维 关系型数据库
OBProxy 路由策略与使用运维-路由实现
OBProxy 路由策略与使用运维-路由实现
462 0
|
XML 存储 大数据
Harmony os next~HarmonyOS Ability与页面跳转开发详解
HarmonyOS采用分布式架构,其Ability体系包括Page、Service、Data和Form四大类型Ability。Page Ability支持多页面跳转与数据传递,Service Ability用于后台任务,Data Ability提供数据共享接口,Form Ability实现轻量化卡片服务。本文详细解析了各Ability的开发方法、生命周期管理、跨Ability通信及最佳实践,帮助开发者掌握HarmonyOS应用开发的核心技能。
1125 0
|
设计模式 JSON JavaScript
Javascript实现购物车的详细代码
Javascript实现购物车的详细代码
661 3