在matlab中使用未定常数
我想在s域中解一个方程组。因此,建立矩阵形式的方程组:在matlab中使用未定常数,matlab,linear-algebra,symbolic-math,Matlab,Linear Algebra,Symbolic Math,我想在s域中解一个方程组。因此,建立矩阵形式的方程组: a=[.4*s+s+5 -5; -5 .5*s+5] c=[3/s; 3/(2*s)] (1/s)*a*b=c 我只是得到一个错误,s是未定义的。 我怎样才能用s来解b呢?Matlab(自然)不会做符号计算——这正是您的代码试图做的。Matlab的变量需要是具体的数字、数组或结构等。它们不能只是任意数字的占位符 (除非:您使用Matlab的。我没有真正使用它,因为我更喜欢在Maple或Mathematica等环境中进行符号计算。您
a=[.4*s+s+5 -5; -5 .5*s+5]
c=[3/s; 3/(2*s)]
(1/s)*a*b=c
我只是得到一个错误,s是未定义的。
我怎样才能用s来解b呢?Matlab(自然)不会做符号计算——这正是您的代码试图做的。Matlab的变量需要是具体的数字、数组或结构等。它们不能只是任意数字的占位符
(除非:您使用Matlab的。我没有真正使用它,因为我更喜欢在Maple或Mathematica等环境中进行符号计算。您甚至可以在Wolfram Alpha网站上解决您的问题)
但是,如果选择s的特定值,则计算所需的值很容易:
s = 5;
a=[.4*s+s+5 -5; -5 .5*s+5];
c=[3/s; 3/(2*s)];
b = s*(a\c);
在这里,我使用了用于进行线性反演的
你现在应该有这个
(1/s)*a*b-c
是零向量
编辑:我查看了符号工具箱。看起来这正是您想要的(但您需要获得符号工具箱的许可并安装它才能工作):
Matlab不会(自然地)进行符号计算——这正是您的代码所要做的。Matlab的变量需要是具体的数字、数组或结构等。它们不能只是任意数字的占位符
(除非:您使用Matlab的。我没有真正使用它,因为我更喜欢在Maple或Mathematica等环境中进行符号计算。您甚至可以在Wolfram Alpha网站上解决您的问题)
但是,如果选择s的特定值,则计算所需的值很容易:
s = 5;
a=[.4*s+s+5 -5; -5 .5*s+5];
c=[3/s; 3/(2*s)];
b = s*(a\c);
在这里,我使用了用于进行线性反演的
你现在应该有这个
(1/s)*a*b-c
是零向量
编辑:我查看了符号工具箱。看起来这正是您想要的(但您需要获得符号工具箱的许可并安装它才能工作):
使用符号运算符执行计算的代码为:
syms s; %This defines 's' as a symbolic token
a=[.4*s+s+5 -5; -5 .5*s+5]; %a and c inherit the symbolic properties from s
c=[3/s; 3/(2*s)];
result = solve('(1/s)*a*b=c','b') %Solve is the general symbolic toolbox algebraic solver.
这就产生了
result =
(c*s)/a
一般来说,Matlab作为数值工具箱的性能最好。因此,根据您的应用程序,我将采用另一种方法,如Ian Hincks在另一个答案中演示的方法。但有时这种情况需要符号解决方案。使用符号运算符执行计算的代码是:
syms s; %This defines 's' as a symbolic token
a=[.4*s+s+5 -5; -5 .5*s+5]; %a and c inherit the symbolic properties from s
c=[3/s; 3/(2*s)];
result = solve('(1/s)*a*b=c','b') %Solve is the general symbolic toolbox algebraic solver.
这就产生了
result =
(c*s)/a
一般来说,Matlab作为数值工具箱的性能最好。因此,根据您的应用程序,我将采用另一种方法,如Ian Hincks在另一个答案中演示的方法。但有时这种情况需要一个象征性的解决方案