начальные значения для Dsolve в Matlab

Предположим, что у вас есть дифференциальное уравнение, и вы хотите решить его с помощью функции dsolve в Matlab, но сначала вы должны запросить у пользователя начальные значения, и в соответствии с тем, что он введет, программа даст ответ.

Как мне это сделать?


person user1652400    schedule 06.09.2012    source источник
comment
Я впечатлен тем, что вы уместили все это в одном предложении. Но что ты сделал? Если вы не знаете, как использовать dsolve, прочтите справку по нему. Если вы не знаете, как получить информацию от пользователя, пора приступить к чтению руководств. Здесь вы получите больше помощи, если покажете, что приложили усилия.   -  person    schedule 06.09.2012
comment
спасибо, но я прочитал справку по Dsolve и функциям ввода, это часть моей программы: a=input('y(0) = '); б = ввод ('у'' (0) = '); c=input('введите первый домен: '); d=input('введите последний домен: '); символ х; y=dsolve('D2y+Dy+y=cos(x)','y(0)=a','Dy(0)=b','x'); h=ezplot(y,[c d]); Я знаю, что 'y(0)=a' и 'Dy(0)=b' неверны с этим синтаксисом, и это моя проблема, как я могу это сделать??   -  person user1652400    schedule 07.09.2012


Ответы (2)


Вы хотите знать, как получить пользовательский ввод? Затем вы можете использовать функцию 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()веб-документации.

person Yamaneko    schedule 07.09.2012

Вы пытались (согласно вашему комментарию):

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');

Или используйте input с флагом 's' и ['y(0)=' a].

person Christopher Creutzig    schedule 17.03.2013