假设你有一个微分方程,你想在matlab中用dsolve
函数求解,但首先你必须向用户询问初始值,根据他输入的内容,程序会给出答案。
我该怎么做?
您想知道如何获得用户输入吗?然后,您可以使用input()
函数。示例:
reply = input('Do you want more? Y/N [Y]: ', 's');
其中's'
参数意味着不会评估用户的输入,即,字符只是作为MATLAB字符串返回。也许您希望用户输入一个要由dsolve
求解的表达式。你可以做一些类似的事情:
expression = input('Which expression do you want to solve?','s');
dsolve(expression)
如果用户输入'Dx = -a*x'
,那么您将获得dsolve('Dx = -a*x')
。
input()
web文档中的更多信息。
您尝试过(根据您的评论):
a=input('y(0) = ');
b=input('y''(0) = ');
c=input('input the first of the domain : ');
d=input('input the last of the domain : ');
sym x;
y=dsolve('D2y+Dy+y=cos(x)','y(0)=a','Dy(0)=b','x');
h=ezplot(y,[c d]);
sym x
不会做任何事情,因为您忽略了输出。你可以放心地忽略这一点。
现在,为了让用户输入dsolve
命令,您必须编写代码来创建相应的字符串:
y=dsolve('D2y+Dy+y=cos(x)',['y(0)=' num2str(a)],['Dy(0)=' num2str(b)],'x');
或者,使用带有's'
标志和['y(0)=' a]
的input
。