matlab评估,在MATLAB中评估符号表达式

我试图在某些输入值处评估一个无限余弦系列的函数.

编辑:发布图像来描述无限系列的样子

x8oHK.png

我编写了以下代码来在MATLAB中描述它.

function func = cosfun_hat(a,i)

syms m x;

assume(m,'integer');

assumeAlso(m > 0);

sum(x) = sqrt(1-a^2)*symsum(sqrt(2)*a^m*cos(i*sym(pi)*x*2^m+1),m,0,Inf);

func(x) = sum(x);

end

我想评估返回的’function’函数来获取某些输入范围的数值,例如x_in = 0:0.001:1.

%Trying to evaluate func at x = 2

%In the command window I write

func = cosfun_hat(0.5,2);

func(2)

返回符号表达式:

(2^(1/2)*3^(1/2)*sum((1/2)^m*(exp(- pi*exp(m*log(2))*4*i - i)/2 + exp(pi*exp(m*log(2))*4*i + i)/2), m == 0..Inf))/2

我尝试使用subs来评估表达式:

%In the command window

syms y;

w(y) = func(y);

y = 2;

subs(w);

但是这会返回相同的符号表达式.我是符号MATLAB的新手.

谢谢!

编辑根据@NickyMattsson的评论,我试过了

vpa(func(2))

返回表达式的数值.

然而,

vpa(func(0.1))返回一个符号表达式:

ans =

1.2247448713915890490986420373529*numeric::sum((1/2)^m*(exp(- (pi*exp(m*log(2))*i)/5 - i)/2 + exp((pi*exp(m*log(2))*i)/5 + i)/2), m == 0..Inf)

使用double(func(0.1))同样的问题,double不返回任何东西而且卡住了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值