首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将1x1sym转换为函数/表达式?

如何将1x1sym转换为函数/表达式?
EN

Stack Overflow用户
提问于 2019-04-26 02:05:09
回答 1查看 135关注 0票数 0

下面你可以找到实现的牛顿法。

代码语言:javascript
复制
function y = NewtonRoot(Fun, DFun, Xest,Err, imax)
%Fun - function
%DFun- derivative of F
%Xest - initial estimate of solution
%Err - maximum error
%y - solution

%EXAMPLE: NewtonRoot(@(x)x^2-4,@(x)2*x,1.3, 0.001, 100)

for i= 1: imax
    Xi = Xest - feval(Fun,Xest)/feval(DFun,Xest);
    if abs((Xi-Xest)/Xest) < Err
        y = Xi;
        break
    end
    Xest= Xi;
end

if i== imax
    fprint('Solution was not obtained in %i iterations.\n', imax)
    y=('No answer');
end

它正在工作:

代码语言:javascript
复制
NewtonRoot(@(x)x^2-4,@(x)2*x,1.3, 0.001, 100)

但实际上我想要计算一个更复杂的函数的导数。因此,我尝试使用diff函数,但它不起作用…你能帮帮我吗?

这是我的试探性的:

代码语言:javascript
复制
syms y(x) x
y=@(x)x^2-4
dy = diff(y,x)

NewtonRoot(y,@(x)diff(y,x),1.3, 0.001, 100)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-26 08:03:03

您可以使用matlabFunction函数,该函数允许将符号表达式转换为函数句柄。因此,对于这个示例:

代码语言:javascript
复制
syms y(x) x
y=@(x)x^2-4;
dy = diff(y,x);

NewtonRoot(y, matlabFunction( diff(y,x)), 1.3, 0.001, 100)

这显然效果很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55855245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档