在matlab中使用未定常数

在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等环境中进行符号计算。您

我想在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等环境中进行符号计算。您甚至可以在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在另一个答案中演示的方法。但有时这种情况需要一个象征性的解决方案