MATLAB 符号函数转换为数值函数?
发布网友
发布时间:2022-04-29 17:53
我来回答
共4个回答
热心网友
时间:2023-10-26 12:12
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)])
热心网友
时间:2023-10-26 12:13
直接重新复制结果,粘贴就计算出来了
热心网友
时间:2023-10-26 12:13
看情况,如果是数值的表达式,用double就可以了
如果里面含有字母,就用subs函数来替换追问小弟在做非线性最优化,用的是含有字母的函数,而且是迭代运算的,N个变量(这里设为符号变量,为了求函数的微分)同时迭代,第i个变量求解时,其余(N-1)个变量视为常数,敢问大神我该怎么处理啊
追答那就用subs替换了
热心网友
时间:2023-10-26 12:14
一开始是符号后面就没法变了。
可以开始时将要算的变量用以个矩阵表示 如0:0.01:20来表示 再解 就是数值解了追问这样还能对函数进行diff 和solve 吗?
追答可以diff,int,不过solve好像不行吧
热心网友
时间:2023-10-26 12:12
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)])
热心网友
时间:2023-10-26 12:13
直接重新复制结果,粘贴就计算出来了
热心网友
时间:2023-10-26 12:13
看情况,如果是数值的表达式,用double就可以了
如果里面含有字母,就用subs函数来替换追问小弟在做非线性最优化,用的是含有字母的函数,而且是迭代运算的,N个变量(这里设为符号变量,为了求函数的微分)同时迭代,第i个变量求解时,其余(N-1)个变量视为常数,敢问大神我该怎么处理啊
追答那就用subs替换了
热心网友
时间:2023-10-26 12:14
一开始是符号后面就没法变了。
可以开始时将要算的变量用以个矩阵表示 如0:0.01:20来表示 再解 就是数值解了追问这样还能对函数进行diff 和solve 吗?
追答可以diff,int,不过solve好像不行吧
热心网友
时间:2023-10-26 12:12
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)])
热心网友
时间:2023-10-26 12:12
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)])
热心网友
时间:2023-10-26 12:13
直接重新复制结果,粘贴就计算出来了
热心网友
时间:2023-10-26 12:13
看情况,如果是数值的表达式,用double就可以了
如果里面含有字母,就用subs函数来替换追问小弟在做非线性最优化,用的是含有字母的函数,而且是迭代运算的,N个变量(这里设为符号变量,为了求函数的微分)同时迭代,第i个变量求解时,其余(N-1)个变量视为常数,敢问大神我该怎么处理啊
追答那就用subs替换了
热心网友
时间:2023-10-26 12:14
一开始是符号后面就没法变了。
可以开始时将要算的变量用以个矩阵表示 如0:0.01:20来表示 再解 就是数值解了追问这样还能对函数进行diff 和solve 吗?
追答可以diff,int,不过solve好像不行吧
热心网友
时间:2023-10-26 12:13
直接重新复制结果,粘贴就计算出来了
热心网友
时间:2023-10-26 12:13
看情况,如果是数值的表达式,用double就可以了
如果里面含有字母,就用subs函数来替换追问小弟在做非线性最优化,用的是含有字母的函数,而且是迭代运算的,N个变量(这里设为符号变量,为了求函数的微分)同时迭代,第i个变量求解时,其余(N-1)个变量视为常数,敢问大神我该怎么处理啊
追答那就用subs替换了
热心网友
时间:2023-10-26 12:14
一开始是符号后面就没法变了。
可以开始时将要算的变量用以个矩阵表示 如0:0.01:20来表示 再解 就是数值解了追问这样还能对函数进行diff 和solve 吗?
追答可以diff,int,不过solve好像不行吧
热心网友
时间:2023-11-17 13:10
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)])
热心网友
时间:2023-11-17 13:11
直接重新复制结果,粘贴就计算出来了
热心网友
时间:2023-11-17 13:11
看情况,如果是数值的表达式,用double就可以了
如果里面含有字母,就用subs函数来替换追问小弟在做非线性最优化,用的是含有字母的函数,而且是迭代运算的,N个变量(这里设为符号变量,为了求函数的微分)同时迭代,第i个变量求解时,其余(N-1)个变量视为常数,敢问大神我该怎么处理啊
追答那就用subs替换了
热心网友
时间:2023-11-17 13:12
一开始是符号后面就没法变了。
可以开始时将要算的变量用以个矩阵表示 如0:0.01:20来表示 再解 就是数值解了追问这样还能对函数进行diff 和solve 吗?
追答可以diff,int,不过solve好像不行吧