MATLAB 符号函数转换为数值函数? 10
我要求函数的一阶偏导为零的那个点,因此设为符号函数,用diff求一阶偏导,用solve求解,但最后怎么把结果转化为数值呢?...
我要求函数的一阶偏导为零的那个点,因此设为符号函数,用diff求一阶偏导,用solve求解,但最后怎么把结果转化为数值呢?
展开
4个回答
2015-11-13 · 知道合伙人教育行家
关注
展开全部
1. 最简便的办法:利用 matlabFunction(这个函数只适用于2009a及更新的版本)
syms x
y=exp(x)*x^2+x+1
g = matlabFunction(y)
2. eval + vectorize 函数:vectorize 的目的是将字符串(string)表达式里的 * / ^ 替换为 .* ./ .^ ,以支持向量运算。eval 执行该字符串后得到函数句柄
syms x
y=exp(x)*x^2+x+1
g = eval(['@(x)',vectorize(y)])
3. str2func + vectorize 函数:str2func 函数可以直接将字符串转化为函数句柄
syms x
y=exp(x)*x^2+x+1
g = str2func(['@(x)',vectorize(y)])
4. str2num + vectorize
syms x
y=exp(x)*x^2+x+1
g = str2num(['@(x)',vectorize(y)])
syms x
y=exp(x)*x^2+x+1
g = matlabFunction(y)
2. eval + vectorize 函数:vectorize 的目的是将字符串(string)表达式里的 * / ^ 替换为 .* ./ .^ ,以支持向量运算。eval 执行该字符串后得到函数句柄
syms x
y=exp(x)*x^2+x+1
g = eval(['@(x)',vectorize(y)])
3. str2func + vectorize 函数:str2func 函数可以直接将字符串转化为函数句柄
syms x
y=exp(x)*x^2+x+1
g = str2func(['@(x)',vectorize(y)])
4. str2num + vectorize
syms x
y=exp(x)*x^2+x+1
g = str2num(['@(x)',vectorize(y)])
展开全部
直接重新复制结果,粘贴就计算出来了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看情况,如果是数值的表达式,用double就可以了
如果里面含有字母,就用subs函数来替换
如果里面含有字母,就用subs函数来替换
追问
小弟在做非线性最优化,用的是含有字母的函数,而且是迭代运算的,N个变量(这里设为符号变量,为了求函数的微分)同时迭代,第i个变量求解时,其余(N-1)个变量视为常数,敢问大神我该怎么处理啊
追答
那就用subs替换了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一开始是符号后面就没法变了。
可以开始时将要算的变量用以个矩阵表示 如0:0.01:20来表示 再解 就是数值解了
可以开始时将要算的变量用以个矩阵表示 如0:0.01:20来表示 再解 就是数值解了
追问
这样还能对函数进行diff 和solve 吗?
追答
可以diff,int,不过solve好像不行吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询