[已答复] 无法从 function_handle 转换为 double。

[复制链接]
13216343 发表于 2021-4-4 17:24:21
clear all
clc
dbstop if error
m=999;
cs(1)=0;
cs(2)=@(x) 1;
for n=0:m
    j=n+1;
    dt(j)=factorial(2*n);
    cs(j)=@(x) cs(j)+(-1).^n.*x^(2.*n)./dt(j);
end

运行后提示:无法从 function_handle 转换为 double。
请问这怎么解决

9 条回复


WarnerChang 发表于 2021-4-4 17:41:11
cs(j)=@(x) cs(j)+(-1).^n.*x^(2.*n)./dt(j);你这个是一个函数吧!不是一个数值,所以提示了错误!
可以把你想要解决的问题描述清楚呢,光看代码也不知道怎么给你纠正

13216343 发表于 2021-4-4 17:59:36
WarnerChang 发表于 2021-4-4 17:41
cs(j)=@(x) cs(j)+(-1).^n.*x^(2.*n)./dt(j);你这个是一个函数吧!不是一个数值,所以提示了错误!
可以把 ...

对,是一个函数,我是想把这个函数赋值到矩阵中。

WarnerChang 发表于 2021-4-4 18:47:44
13216343 发表于 2021-4-4 17:59
对,是一个函数,我是想把这个函数赋值到矩阵中。

那恐怕不行,只能把函数计算所得到的值赋值到矩阵中吧!

20141303 发表于 2021-4-5 09:35:55
仅供参考
  1. clear all
  2. clc

  3. syms x
  4. m=999;
  5. cs=zeros(1,m+1)+0*x;

  6. cs(1)=0;

  7. for n=0:m
  8.     j=n+1;
  9.     dt(j)=factorial(2*n);
  10.     cs(j)= cs(j)+(-1).^n.*x^(2.*n)./dt(j);
  11. end
  12. csf=matlabFunction(cs);
复制代码

13216343 发表于 2021-4-5 15:09:47

非常感谢呀:handshake

13216343 发表于 2021-4-5 15:10:58

非常感谢呀:handshake

13216343 发表于 2021-4-8 17:46:48
本帖最后由 13216343 于 2021-4-8 18:32 编辑

还有些问题想请教您,这样是形成了一个函数吗?那怎么调用呢?比如,怎么把矩阵中的所有元素累加后求(0-2)上的数值积分呢?

20141303 发表于 2021-4-9 08:42:15
仅供参考
  1. clear all
  2. clc

  3. syms x
  4. m=999;
  5. cs=zeros(1,m+1)+0*x;

  6. cs(1)=0;

  7. for n=0:m
  8.     j=n+1;
  9.     dt(j)=factorial(2*n);
  10.     cs(j)= cs(j)+(-1).^n.*x^(2.*n)./dt(j);
  11. end
  12. csf=matlabFunction(cs);
  13. s=integral(matlabFinction(sum(cs)),0,2);
复制代码

13216343 发表于 2021-4-9 13:46:30

非常感谢呀,:handshake
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表