matlab中dsolve的用法

由§1.3中的(4)方程(d2y/dx2)*x=[1+(dy/dx)2]1/2/2,并且有已知条件:
y(100)=0;
dy/dx(100)=0。
故编写的matlab程序如下:
>>y=desolve(‘t*D2y=sqrt(1+Dy^2)/2’,’y(100)=0’‘Dy(100)=0’);
y=subs(y,t,‘x’);
得到y=sqrt(x).*(x-300)/30+200/3
在饿狼的运动曲线上取点x=25,并借助matlab:
>>y=sqrt(x).*(x-300)/30+200/3,x=25,y
得到y=20.833,并且求得切线在(25,20.833)点的斜率为-3/4,故求得饿狼运动曲线在点(25,20.833)处的切线方程:
z=0.75*(25-x)+20.833。
在matlab环境下运行得到函数y=sqrt(x).*(x-300)/30+200/3,然后再编辑elang.m文件:
x=linspace(0,100,500);
y=sqrt(x).*(x-300)/30+200/3;
z=0.75*(25-x)+20.833;
plot(0,y,'y',x,y,'r',x,z,'c')
在matlab环境下调用elang.m文件
>>elang

但是我运行后,老是达不到想要的结果呀
y=dsolve('t*D2y=sqrt(1+Dy^2)/2','y(0)=0','Dy(100)=0','t');
y=subs(y,'t','x')
y =

(10*x^(1/2)*(x/100 - 3))/3
-(10*x^(1/2)*(x/100 - 3))/3
完全不行呀,怎么解决呐

照着原题写,有时候subs替换容易出莫名其妙的问题,当然多数情况是对的,建议直接写。
>> y=dsolve('D2y*x=sqrt(1+Dy^2)/2','y(100)=0,Dy(100)=0','x');
>> y
y =
(10*x^(1/2)*(x/100 - 3))/3 + 200/3
- (10*x^(1/2)*(x/100 - 3))/3 - 200/3追问

这个表达式是正确的吗?关键后面写的,又说没有定义X的变量呀,y=sqrt(x).*(x-300)/30+200/3,x=25,y,怎么解决????

追答

微分方程有两个函数解,应根据实际情况进行取舍;而你用的是desolve所以出错,无此函数所以出错。。
后面文字读不通不知道要表达什么意思。

说说你要的是什么结果,

追问

我QQ;3131212614,方便沟通,

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-19
使用dsolve命令求解微分方程。
方法/步骤
在matlab命令窗口输入help dsolve
可以得到关于dsolve函数的一些帮助。基本的使用方式是dsolve('equ');
其中,equ表示方程,返回结果为带有常量的符号解,
例一:
syms y(x);
dsolve(diff(y) == y+ 1)
或者
dsolve('Dy = y + 1','x')
都是dy/dx = y + 1 的解
高阶情况:
Dy = diff(y);
D2y = diff(y, 2);

例二:
使用D代替diff时,默认变量为t,

dsolve('D2y = x*y')
ans =
C27*exp(t*x^(1/2)) + C28*exp(-t*x^(1/2))
要使变量为x使用
>> dsolve('D2y = x*y','x')
ans =
C30*airy(0, x) + C31*airy(2, x)
相似回答