Matlab符号计算与数值计算对比 |
您所在的位置:网站首页 › 符号工具箱可以处理哪些运算 › Matlab符号计算与数值计算对比 |
Matlab的符号计算,需要用到一些常用符号工具箱函数
\qquad 例如画出 f ( x ) = x 2 f(x)=x^2 f(x)=x2 在 [ 0 , 3 ] [0,3] [0,3] 上的微分值: \qquad (1) 首先构造符号变量x,符号表达式f(x) = x^2;再利用工具箱函数 df = diff(f) 直接求出其导数为 df = 2*x。因此,符号计算的过程不会产生误差。 \qquad (2) 微分值可以直接使用工具箱函数subs(df,x1)或者subs(df,x,x1),其中x代表符号表达式df中所采用的符号变量(或者通过symvar(df)自动获取),x1 为待求解的点 \qquad 多变量函数在涉及到需要采用不同符号变量的时候,可以采用subs(df,symvar(df),x1)的方式 \qquad (3) 通过vpa(x,n) 设置符号数x的精度为n \qquad (4) 最后将符号数强制类型转换为浮点型数值 \qquad 其中,(2)~(4) 综合在一起就是val = double(vpa(subs(df,symvar(df),x0),4)); % symbolic syms x f2 = x^2 figure(2),ezplot(f2,[0,3]);hold on; x1 = 0:0.1:3; val2 = diff1_s(f2, x1); plot(x1,val2) legend('x^2','2x') function val = diff1_s(f, x1) df = diff(f); % symbolic math toolbox val = double(vpa(subs(df,symvar(df),x1),4)); end运行结果: \qquad Matlab的数值计算,可以采用“匿名函数”作为函数的参数。\qquad 相应的数学运算(例如积分、微分),需要编写对应的数值算法,例如画出 f ( x ) = x 2 f(x)=x^2 f(x)=x2 在 [ 0 , 3 ] [0,3] [0,3] 上的微分值: \qquad (1) 微分运算可以采用“中心差分”的公式,因此数值计算包含了计算误差 \qquad (2) 由于是数组运算,定义匿名函数时采用了“点乘”的方式,配合数值运算的需要 % numerical x1 = 0:0.1:3; f1 = @(x)(x.^2) figure(1) plot(x1,f1(x1));hold on; val1 = diff1_c(f1,x1,0.1); plot(x1,val1); legend('x^2','2x') function val = diff1_c(f,x,h) val = (f(x+h)-f(x-h))/(2*h); end运行结果: 以最速下降法的实现为例,可参考: 1.《最速下降法的实现及可视化——基于matlab符号计算》 2.《最速下降法的python实现——基于数值计算》 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |