MATLAB17:若锂出的作业题3求解常微分方程

一、若锂出的作业题3

   求解常微分方程,并给特定值x,算出结果。

二、dsolve()函数

  • 用法:y=dsolve('eqn1','eqn2',...,'cond1','cond2',...,'var')

   eqni表示方程,condi表示初值,var表示微分方程中的自变量,系统默认为t。

   D为微分符号,D2表示二阶微分,D3表示三阶微分。

三、subs()函数

  • subs能够在符号表达是和符号矩阵中进行置换操作。

   R = subs(S,old,new) %用new置换表达式中的old,然后将置换完成的表达式附值给R

四、eval()函数

  • eval的功能简单来说就是可以把字符串当做命令来执行

五、sym函数

  • 在MATLAB中,sym函数用于创建符号数字、符号变量、符号对象。
  • 符号对象的类型是sym,可以通过class(S)来验证,这里S是一个符号对象。
  • 符号变量的优点是,使用符号变量运算得到的只是一个解析解。

六、sym类型转换为字符类型

  • z=subs(y,x,0.1); 得出的结果存在sym类型中
  • k=char(z); 强制将sym类型转换为字符型
  • result=eval(k); 执行字符串命令,得到最后结果

七、MATLAB程序1

clear  ;
syms y x R d a0 a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 w ;
       
[y]=dsolve('D2y+y= -134.4*(a0 + a1*cos(x*w) + b1*sin(x*w)+a2*cos(2*x*w) + b2*sin(2*x*w) + a3*cos(3*x*w) + b3*sin(3*x*w) +a4*cos(4*x*w) + b4*sin(4*x*w) + a5*cos(5*x*w) + b5*sin(5*x*w) +a6*cos(6*x*w) + b6*sin(6*x*w) + a7*cos(7*x*w) + b7*sin(7*x*w))' ,'y(3.14)=0','Dy(20.55)=0','x') ; 
       a0 =      -15.5;
       a1 =         172.6 ;
       b1 =        22.52  ;       
       a2 =       28.28 ;
       b2 =      -67.42 ;
       a3 =       27.05  ;
       b3 =        -38.29  ;
       a4 =      -100.1 ;
       b4 =      -16.67 ;
       a5 =       -52.05 ;
       b5 =      -29.36 ;       
       a6 =       -61.18 ;
       b6 =      6.185  ;
       a7 =       -39.73  ;
       b7 =      -32.74 ;
       w =      0.02822;
sym_y= subs(y,{'a0','a1','a2','a3','a4','a5','a6','a7','b1','b2','b3','b4','b5','b6','b7','w'},{a0,a1,a2,a3,a4,a5,a6,a7,b1,b2,b3,b4,b5,b6,b7,w});
sym_y 
% 把x=0.5代入,求解
z=subs(sym_y,x,  0.5 ); 
k=char(z); 
result=eval(k)

八、MATLAB程序2

clear all
syms y x R d ;
       a0 =      -15.5;
       a1 =         172.6 ;
       b1 =        22.52  ;       
       a2 =       28.28 ;
       b2 =      -67.42 ;
       a3 =       27.05  ;
       b3 =        -38.29  ;
       a4 =      -100.1 ;
       b4 =      -16.67 ;
       a5 =       -52.05 ;
       b5 =      -29.36 ;       
       a6 =       -61.18 ;
       b6 =      6.185  ;
       a7 =       -39.73  ;
       b7 =      -32.74 ;
       w =      0.02822;
       

rr=['D2y+y= -134.4*(',num2str(a0), '+', num2str(a1),'*cos(x*',num2str(w),') +', num2str(b1),'*sin(x*',num2str(w),')+',num2str(a2),'*cos(2*x*',num2str(w),') +', num2str(b2),'*sin(2*x*',num2str(w),') + ',num2str(a3),'*cos(3*x*',num2str(w),') +', num2str(b3),'*sin(3*x*',num2str(w),') +',num2str(a4),'*cos(4*x*',num2str(w),') +', num2str(b4),'*sin(4*x*',num2str(w),') +', num2str(a5),'*cos(5*x*',num2str(w),') +', num2str(b5),'*sin(5*x*',num2str(w),') +',num2str(a6),'*cos(6*x*',num2str(w),') +', num2str(b6),'*sin(6*x*',num2str(w),') +', num2str(a7),'*cos(7*x*',num2str(w),') +', num2str(b7),'*sin(7*x*',num2str(w)];
rr=[rr,'))'];  
rr
[y]=dsolve(rr,'y(3.14)=0','Dy(20.55)=0','x');
y
z=subs(y,x,0.1);
k=char(z); 
result=eval(k);
result
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容