一、若锂出的作业题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