到目前为止,我如何从f(x)创建等级n的导数:
f = exp(-(x/2)),f1 = diff (f), f2 = diff (f1), f3 = diff(f2), f4 = diff(f3), f5 = diff(f4)
此命令可以执行以下操作:
此命令无法执行的操作:
如何添加我需要的功能,让我更轻松? 有没有办法更优雅地做到这一点?
脚本的语法应该与此java片段等效:
int n;
String function;
//User input function
//User input diff level n
System.out.print("f(x)= " + function);
for(i = 1; i < n; i++){
function = diff(function);
system.out.print("f"+ i + "(x): " + function);
}
我在matlab中尝试过这个,但我不知道我在做什么:
syms x
int n = 0;
string f;
n = str2double(input('Enter an integer: ','s'));
if isnan(n) || fix(n) ~= n
disp('Please enter an integer')
end
disp('f(x) = ', f);
f = str2function(input('Enter a function(String): ','s'));
if isnan(f) || fix(f) ~= f
disp('Please enter a String')
end
while n > 1
n = n-1;
f = diff(f);
disp('f',n,'(x)=', f)
end
答案 0 :(得分:2)
for循环可用于填充包含不同衍生物的向量。
syms x
f = exp(-(x/2)); % function
n = 5; % number of derivatives
derivatives = sym('A', [1 n]); % allocate memory
for ii=1:n
derivatives(ii) = diff(f,ii);
end
在matlab中你不能定义类型,所以只需
n = 0;
没有int
。您正确获取输入,但只询问一次。当给出不正确的输入时,程序继续并且用户不能输入新的输入。我使用while循环来继续询问输入,直到它是正确的:
n = str2double(input('Enter an integer: ','s'));
while isnan(n) || fix(n) ~= n
disp('Please enter an integer')
n = str2double(input('Enter an integer: ','s'));
end
对于f
,我想sym
,而不是函数。 disp
无法用于符号变量,但fprintf
可以:
fprintf('f(x) = %s\n', char(f));
然后我会使用for循环而不是一段时间,因为你事先知道会有多少次迭代。
总代码:
syms x
n = str2double(input('Enter an integer: ','s'));
while isnan(n) || fix(n) ~= n
disp('Please enter an integer')
n = str2double(input('Enter an integer: ','s'));
end
f = sym(input('Enter a function(String): ','s'));
fprintf('f(x) = %s\n', char(f));
derivatives = sym('A', [1 n]);
for ii=1:n
derivatives(ii) = diff(f,ii);
fprintf('f^{(%i)}(x) = %s\n', ii, char(derivatives(ii)));
end
我尝试使用上标来获取衍生品,但我似乎无法管理......如果我发现,我会更新答案。