2015-03-10 3 views
2

Я пытаюсь вычислить функцию в Scilab, используя следующие шаги:Вычислить н-й производной в любой точке с помощью Scilab

x=poly(0,'x') 
y=(x^18+x^11)^3 // function (the function is variable) 
y1=derivat(y) // first derivate 
y2=derivat(y) //second derivate 
y3=derivat(y) //third derivate 

мне нужно оценить 3 производных в любой точке.

Я знаю функцию: evstr(expression), но она не работает с возвращаемым значением производной.

Я стараюсь использовать: string(y), но он возвращает что-то странное.

Как это сделать, чтобы вернуть значение derivat в строку для оценки с помощью evstr или как я могу оценить n-ю производную в любой точке с помощью Scilab.

ответ

0

Для оценки символьного полинома в определенной точке или точках используйте команду horner. Пример:

t = 0:0.1:1 
v1 = horner(y1, t) 
plot(t, v1) 
+0

И когда не является многочленом, у меня есть проблема, когда есть функция тригонометрической функции или логарифма –

+0

Scilab не поддерживает символическое дифференцирование произвольных функций; 'Дериват' работает только для многочленов и рациональных функций. Вы можете вычислить производную численно, если хотите (команда 'diff', например). –

0

This ближайший я получил к решению этой проблемы.

Он предлагает использовать:

old = 'f'; 
for i=1:n 
    new = 'd'+string(i)+'f'; 
    deff('y='+new+'(x)','y=numderivative('+old+',x)'); 
    old=new; 
end 

Я знаю, это ужасно, но я думаю, что нет лучшего решения, по крайней мере, в Scilab.