Matlab学习记录18

书籍:Matlab实用教程

外出回来,还是用Matlab2021a

电脑信息:Intel® Xeon® CPU E5-2603 v3 @ 1.60GHz

系统类型:64位操作系统,基于X64的处理器 windows10 专业版

第3章MATLAB的符号计算

3.1 符号表达式的建立

3.1.1 创建符号常量

cpp 复制代码
>> a=sym(sin(2))
 
a =
 
4095111552621091/4503599627370496
>> a1=2*sqrt(5)+pi

a1 =

    7.6137

Matlab2021a与之前的版本也不同,sym改为str2sym

cpp 复制代码
>> a2=sym('2*sqrt(5)+pi')
错误使用 sym>convertChar (第 1580 行)
Character vectors and strings in the first argument can only specify a variable or number. To evaluate character vectors and strings representing symbolic expressions, use 'str2sym'.

出错 sym>tomupad (第 1296 行)
        S = convertChar(x);

出错 sym (第 234 行)
                S.s = tomupad(x);
 
>> a2=str2sym('2*sqrt(5)+pi')
 
a2 =
 
pi + 2*5^(1/2)
 
>> a3=sym(2*sqrt(5)+pi)
 
a3 =
 
2143074082783949/281474976710656
 
>> a4=sym(2*sqrt(5)+pi,'d')
 
a4 =
 
7.613728608589372726100918953307
 
>> a31=a3-a1
 
a31 =
 
0
 
>> a5='2*sqrt(5)+pi'

a5 =

    '2*sqrt(5)+pi'

3.1.2 创建符号变量和表达式

1、使用sym命令创建符号变量和表达式

cpp 复制代码
>> sym('x','real')
 
ans =
 
x
 
>> sym('y','real')
 
ans =
 
y
>> z=str2sym('x+iy')
 
z =
 
iy + x
 
>> real(z)
 
ans =
 
x + real(iy)
>> sym('x','unreal')
错误使用 sym/assume (第 590 行)
输入 应与以下值之一匹配:

'integer', 'rational', 'real', 'positive', 'clear'

输入 'unreal' 与任何有效值均不匹配。

出错 sym (第 253 行)
                    assume(S, n);
 
>> f1=str2sym('a*x^2+b*x+c')
 
f1 =
 
a*x^2 + b*x + c

2、使用syms命令创建符号变量和符号表达式

cpp 复制代码
>> syms a b c x
>> f2=a*x^2+b*x+c
 
f2 =
 
a*x^2 + b*x + c
 
>> syms('a','b','c','x')
>> f3=a*x^2+b*x+c
 
f3 =
 
a*x^2 + b*x + c

3.1.3 符号矩阵

cpp 复制代码
>> A=str2sym('[a,b;c,d]')
 
A =
 
[a, b]
[c, d]
 
>> syms a b c d
>> A=[a b;c d]
 
A =
 
[a, b]
[c, d]
 
>> B='[a,b;c,d]'

B =

    '[a,b;c,d]'

>> C=str2sym(B)
 
C =
 
[a, b]
[c, d]

3.2 符号表达式的代数运算

3.2.1 符号表达式的代数运算

cpp 复制代码
>> syms a11 a12 a21 a22
>> A=[a11 a12;a21 a22]
 
A =
 
[a11, a12]
[a21, a22]
 
>> det(A)
 
ans =
 
a11*a22 - a12*a21
 
>> eig(A)
 
ans =
 
a11/2 + a22/2 - (a11^2 - 2*a11*a22 + a22^2 + 4*a12*a21)^(1/2)/2
a11/2 + a22/2 + (a11^2 - 2*a11*a22 + a22^2 + 4*a12*a21)^(1/2)/2

>> f=str2sym('2*x^2+3*x+4')
 
f =
 
2*x^2 + 3*x + 4
 
>> g=str2sym('5*x+6')
 
g =
 
5*x + 6
 
>> f+g
 
ans =
 
2*x^2 + 8*x + 10
 
>> f*g
 
ans =
 
(5*x + 6)*(2*x^2 + 3*x + 4)

3.2.2 符号数值任意精度控制和运算

cpp 复制代码
>> a=str2sym('2*sqrt(5)+pi')
 
a =
 
pi + 2*5^(1/2)
 
>> digits
 
Digits = 32
 
>> vpa(a)
 
ans =
 
7.6137286085893726312809907207421
 
>> vpa(a,20)
 
ans =
 
7.6137286085893726313
 
>> digits(15)
>> vpa(a)
 
ans =
 
7.61372860858937
>> a1=2/3

a1 =

    0.6667

>> a2=sym(2/3)
 
a2 =
 
2/3
 
>> digits
 
Digits = 15
 
>> a3=vpa('2/3',32)
 
a3 =
 
0.66666666666666666666666666666667
 
>> format long
>> a1

a1 =

   0.666666666666667

3.2.3 符号对象与数值对象的转换

cpp 复制代码
>> a1=str2sym('2*sqrt(5)+pi')
 
a1 =
 
pi + 2*5^(1/2)
 
>> b1=double(a1)

b1 =

   7.613728608589373

>> a2=vpa(str2sym('2*sqrt(5)+pi'),32)
 
a2 =
 
7.6137286085893726312809907207421 
>> b2=numeric(a2)
函数或变量 'numeric' 无法识别。
 
>> b3=eval(a1)

b3 =

   7.613728608589373
相关推荐
mykj15513 小时前
英语单词APP解锁学习新方式,智能高效背单词
学习·英语单词app
kruptos3 小时前
分布式系统怎么“选主“?Raft 共识一次讲清
开发语言·分布式·php·共识算法
吴声子夜歌4 小时前
ApacheCommons——commons-cli(命令行参数解析)
java·开发语言·apache
知识分享小能手4 小时前
深度学习学习教程,从入门到精通,深度学习中的正则化 — 完整知识点与代码示例(7)
人工智能·深度学习·学习
benchmark_cc5 小时前
REST API 和 Python SDK 应该怎么选?量化交易数据接口选型实战
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
王的宝库5 小时前
Go 项目结构:从单文件到标准工程布局
开发语言·后端·golang
~kiss~5 小时前
Agent 的 未来吗?String: An Agentic OS Where Every App Is a Markdown File
学习
Tairitsu_H5 小时前
[C++] 深入理解红黑树:封装set与map
开发语言·c++·set·map·红黑树·模拟实现
泡海椒5 小时前
JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑
java·开发语言·okhttp
小智老师PMP5 小时前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理