latex()、ploy2sym()、symsum()的妙用

时间:2022-07-22
本文章向大家介绍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 提供解决思路。具体怎么实现还是一个复杂的问题,思路讲起来有点麻烦,预知后事且听下回分解。