一个具有象征意义的实现问题

4视图(30天)
穆罕默德Shojaei Arani
穆罕默德Shojaei Arani 2022年12月25日
评论道: 保罗 2022年12月26日
你好,
我需要定义一个系统符号函数的一组状态变量。我解释下面的例子:
信谊x y
信谊μ(x, y) (2 - 1)
信谊σ(x, y) (2 - 2)
par =符号(“par”, [1 - 6]);
μ(x, y) = (par (1) * x + par (2) * y,票面价值(3)* x + par (4) * y];
σ(x, y) = (par (5) 0; 0 par (6)];
这里,它wotks。然而,正如你所看到的在上面函数μ(x)是一个向量作为bi-variate功能。一个相当不专业的方式来定义μ(x)将如下
信谊mu1 (x, y) mu2 (x, y)
mu1 (x, y) = par (1) * x + par (2) * y; mu2 (x, y) = par (3) * x + par (4) * y
同样地,函数的σ(x)我可以定义4项子功能(这不是如此美丽)。我想要做的是重复同样的伎俩我用于符号函数μ(x, y)和σ(x, y)符号变量x和y。我的意思是说下面的
信谊x [2 1]
信谊μ(x) (2 - 1)
信谊σ(x) (2 - 2)
par =符号(“par”, [1 - 6]);
μ(x) = (par (1) * x (1) + (2) * x(2)相当;par (3) * x (1) + par (4) * x (2)];
σ(x) = (par (5) 0; 0 par (6)];
不幸的是,MATLAB不接受这一点。
我想知道thisa是可能的吗?
谢谢,
Babak

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2022年12月26日
我需要定义一个系统符号函数的一组状态变量。
在MATLAB中,不可能定义一系列()可转位的象征功能。
信谊2μ(x, y) [1]
定义一个 符号函数命名 μ 预计两个参数并返回一个2 x 1阵列的条目是其他符号函数的调用。如果你尝试使用μ(1),那么这将尝试调用单一的象征和一个标量函数的输入 1 如果——这将给你一个错误 y 在函数定义使用。
信谊1μ(x) [2]
定义一个名为μ的象征功能,预计一个参数并返回一个数组2 x 1的条目是其他符号函数的调用。
不可能在MATLAB符号函数定义为期望一个向量输入索引。你 可以 定义之类的东西
信谊x
μ(x) = x ' * x
μ(x) =
μ([2 5 1])
ans =
但注意,共轭,移动了元素单独进行处理,而不是参数当作一个向量,矩阵乘以它的转置。
当你定义一个符号函数,MATLAB处理右手边第一个表达式,然后利用symfun()包装成一个符号函数的结果。当右边是正在处理,任何命名变量是立即扩展到其当前值,和任何剩余的名字命名变量作为标量变量。所以x * x可以转化为有效。* x '因为MATLAB将x是一个标量。
如果你做了
信谊3 x [1]
μ(x) = x ' * x
μ(x1, x2, x3) =
右手边是评价第一,这个名字 x 扩展到向量符号变量,这些都是经营,和symfun()是用于包装产生的矩阵为独立变量的函数, 成一个变量的函数。
你会做什么如果你想要一个单变量的输入吗?例如,你可以
μ= matlabFunction(μ,“var”,{x})
μ=function_handle与价值:
@ (in)重塑([in1(: 1)。*连词(in1 (: 1)), in1(: 1)。*连词(in1 (:, 2)), in1(: 1)。*连词(in1 (:, 3)), in1(:, 2)。*连词(in1 (: 1)), in1(:, 2)。*连词(in1 (:, 2)), in1(:, 2)。*连词(in1 (:, 3)), in1(:, 3)。*连词(in1 (: 1)), in1(:, 3)。*连词(in1 (:, 2)), in1(:, 3)。*连词(in1 (:, 3))], [3 3])
当你使用matlabFunction“var”选项,然后你通过单元阵列,每个条目数组中指定的一组变量是被包装成一个参数。生成的匿名函数μ可以1 x 3矢量传递给它,当调用将返回3 x 3矩阵。但是请注意这不是一个 象征性的 函数。

答案(1)

卡里姆
卡里姆 2022年12月25日
我不能完全确定我了解你正在寻找。然而,如果我们的目标是创建数组,保存符号方程你可以试试下面的方法。 μ σ intialized作为只是象征性的表情witouth dimmensions等等。之后我们可以填补他们。这为你工作吗?
信谊x [2 (1)
信谊票面价值[1 - 6]
信谊μσ
%创建μ
μ(x) = (par (1) * x (1) + (2) * x(2)相当;票面价值(3)* x (1) + par (4) * x (2)]
μ(x1, x2) =
%创建σ
σ(x) =((5) 0相当;0 par (6)]
σ(x1, x2) =
4评论
保罗
保罗 2022年12月26日
只要μ(x)是一个矢量值函数,计算雅可比矩阵也许你意思?
信谊x [2 (1)
信谊票面价值[1 - 6]
μ(x) = (par (1) * x (1) + (2) * x(2)相当;票面价值(3)* x (1) + par (4) * x (2)];
雅可比矩阵(μ,x)
ans (x1, x2) =

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!