latex()、ploy2sym()、symsum()的妙用
过冷水在进行学习过程中总是遇到一些看似无关紧要的问题,做起来却很繁琐,比如给你一个函数:
做具体计算的时候需要把它写入Matlab中,按照阅读习惯你总是会写成这样:
y=log(n1/(x1*n1+x2*n2*m21))+x2*((n2*m21)/(x1*n1+x2*n2*m21)-(n1*m12)/(x2*n2+x2*n1*m12)) ...
-(x2^2/2)*((c1*m21^2*log(m21))/(x1+x2*m21)^2-(c2*m12*log(m12)/(x2*n2+x1*n1*m12)^2))
有人问我你这个输入对不对,有没有错误,我就笑了当然是对的,不信你自己去检查啊!过冷水在实际运行中重视要检查好几遍公式有没有输错项。一旦计算错误,总是怀疑是不是自己公式输错了回头再核验一遍,检查一遍输入公式感觉过了好几个世纪。为何matlab不能人性化的以我们比较习惯的方式呈现公式?还是电脑语言和人脑思维有不可逾越的鸿沟?知道我接触到latex()函数。还是自己接触的知识少。关于latex()你可以这样用:
Y=latex(y)
咋一看,这有什么用?更加复杂了,纯粹是画蛇添足。若是读者之前有看过推文matlab绘图(五),用一点点贯通的思想就可以把该形式和绘图联系起来。
figure1 = figure('Color',[1 1 1]);
axes1 = axes('Parent',figure1,'Position',[0.13 0.11 0.8 0.8]);
axis off
hold(axes1,'on');
text('Parent',axes1,'FontSize',16,'FontName','Times New Roman','Interpreter','latex','String',str,'Position',[-0.0829467939972715 0.339583333333333 0],'Visible','on');
set(axes1,'FontName','Times New Roman','FontSize',14,'FontWeight','bold');
这段代码将会给出我们这么一副图,这样对比起来是不是就容易的多了,这个灵感也是过冷水无意间想到的,简单的代码我们要学会妙用。在实践过程中,过冷水还遇到多项式拟合的问题,在我们不知道实验数据结构的时候通常都是先画出图像,对图像进行结构分析然后再用具体函数去拟合系数。多项式拟合大家用的比较多一点,便捷一点的方法是用工具箱拟合多项式,可以实时调节参数如下图:
左边方框给出了我们拟合结果,对于初入新手而言多项式已经确定,任务完成,过冷水在经常使用工具箱拟合时颇感不便,每次确定好系数后都需要手敲系数重新输入公式真的好麻烦,一点都不自动化,于是自己就总结出了一套小技巧。1工具箱确定函数形式;2 p=polyfit(x,y,n)求系数;3 y=ploy2sym(p);
X=linspace(0.12,1,50);x=1./X;y=(x.^4.*exp(x))./(exp(x)-1).^2;
p=polyfit(x,y,5);
f=poly2sym(p)
f =
- (7818024459947303*x^5)/2305843009213693952 + (6155067065834809*x^4)/72057594037927936 - (1694715688677703*x^3)/2251799813685248 + (5570666957581787*x^2)/2251799813685248 - (6080212468662527*x)/4503599627370496 + 4204837723286035/9007199254740992
很便捷吧!因为为热爱,所以精通。过冷水在学习过程的总是会遇到比人遇不到的麻烦,你学或者不学困难都在哪里,不增不减,与其逃避,不如做真正的勇士,去坦然面对如下问题:
请问这是该如何才能是实现其编程化,这是一个大复杂的问题,我们的把复杂的问题简单化,来看看这么一个问题:
这个时候又有一个函数symsum,可以实现累计求和的目的。
syms n
symsum((-1)^n*0.5^n/n,n,1,inf)
ans =
-log(3/2)
通过该函数可以实现符号表达式的累计求和,为我们的big problem 提供解决思路。具体怎么实现还是一个复杂的问题,思路讲起来有点麻烦,预知后事且听下回分解。
- dedecms自增标签[field:global.autoindex/]的运用
- dedecms调用副栏目文章怎么操作
- 12个非常有用的JavaScript技巧
- 使用JPA中@Query 注解实现update 操作
- 配合dedecms内容模型实现后台输入栏目id前端输出文章列表
- SpringBoot之前端文件管理
- Spring Boot 设置静态资源访问
- IDEA更换主题
- 用正则表达式给字符串属性值都加上双引号
- Spring Boot修改启动端口
- Packet for query is too large (12238 > 1024). You can change this value
- win10下端口被占用解决办法
- 微信小程序开发教程第九章:微信小程序拍照收纳开发以及删除名片等
- centos 安装sbt
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【java设计模式系列】2. 单例模式(Singleton)
- 跨域请求的解决方案
- 【排序】快速排序
- 因为BitMap,白白搭进去8台服务器...
- java所有的“锁”大总结,以后面试再也不怕遇到锁了
- 【Java8新特性】03 Stream流式数据处理
- 慎用JSON.stringify
- 【Java8新特性】04 详解Lambda表达式中Predicate Function Consumer Supplier函数式接口
- ubuntu下的进程控制系统————Supervisor
- 如何高效、快速、准确地完成ML任务,这4个AutoML库了解一下
- [译]如何用 Typescript 写一个完整的 Vue 应用程序
- Docker上手系列:Docker入门hello world
- 前端应该知道的 HTTP 知识
- React 学习笔记(基础篇)
- 前端性能优化《一》——Chrome Performance 页面性能调试