Matlab符号计算与数值计算对比

您所在的位置:网站首页 符号工具箱可以处理哪些运算 Matlab符号计算与数值计算对比

Matlab符号计算与数值计算对比

2024-07-13 20:11| 来源: 网络整理| 查看: 265

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