MATLAB关于符号变量的迭代运算

MATLAB关于符号变量的迭代运算

参考资料:matlab批量创建符号变量并放数组里 - 简书 (jianshu.com)

y = sym(zeros(1,4));
for m = 1:4
    y(m) = ['x' num2str(m)]; 
end 

以上程序可以用于符号变量的迭代计算中。 比如需要获得如下符号表达式:
{ y 1 = x 1 sin ⁡ ( x 1 ) y 2 = x 1 sin ⁡ ( x 1 ) + x 2 sin ⁡ ( x 2 ) ⋮ y n = ∑ k = 1 n x k sin ⁡ ( x k ) ; \begin{cases} y_1 &= x_1 \sin(x_1) \\ y_2 &= x_1 \sin(x_1) + x_2 \sin(x_2) \\ &\vdots \\ y_n &= \sum_{k=1}^{n} x_k \sin(x_k); \end{cases} y1y2yn=x1sin(x1)=x1sin(x1)+x2sin(x2)=k=1nxksin(xk);
可以使用如下程序实现。这里n=4,结果如下图所示。

n = 4;
syms x [n 1]
y = sym(zeros(n,1));  % 将double转换为sym
for i = 1:n
    for k = 1:i
        y(i) = y(i) + x(k)*sin(x(k));
    end
end

在这里插入图片描述

但是若在以上程序的第三行代码去掉sym,就会报错。

n = 4;
syms x [n 1]
y = zeros(n,1);  % double类型
for i = 1:n
    for k = 1:i
        y(i) = y(i) + x(k)*sin(x(k));  
    end
end

在这里插入图片描述

这是因为此时y是一个double类型的数组,而符号类型(sym)是无法放在一个double类型的数组中的。因此,必须先将zeros(n,1)转换为sym类型的数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值