所以,我一直在用matlab做这项工作,每当我试图得到答案时,就会弹出一个新问题。在提示上重复次数最多的是
??? Input argument "x" is undefined.
这项工作是用matlab推导出来的,我必须用两种不同的推导方法推导出一个函数,我必须得到那个表。非常感谢所有想要回答的人,我对此主题非常感兴趣。
clc,clear;
h=1;
x=1.2;
derivada1=derivada_1(x,h);
derivada2=derivada_2(x,h);
for i=0:1:10
fprintf('%.10f %.10f %.10f\n',h*(10.^(-i)),derivada1,derivada2);
end
我必须得到的功能是
function [ fx ] = funcion( x )
%UNTITLED2 Summary of this function goes here
% Detailed explanation goes here
fx=x.^3-3*x.^2-x+3;
end
方法1
function [ dfx1 ] = derivada_1( x,h )
%UNTITLED4 Summary of this function goes here
% Detailed explanation goes here
fx=feval(funcion,x);
fh2=feval(fx,x+h);
fh3=feval(fx,x-h);
dfx1=(fh2-fh3)/(2*h);
end
方法2
function [ dfx2 ] = derivada_2( x,h )
%UNTITLED4 Summary of this function goes here
% Detailed explanation goes here
fx=feval(funcion,x);
fh1=feval(fx,x+2*h);
fh2=feval(fx,x+h);
fh3=feval(fx,x-h);
fh4=feval(fx,x-2*h);
dfx2=(-fh1+8*fh2-8*fh3+fh4)/(12*h);
end
答案 0 :(得分:1)
你真的使用In [8]: cat test.txt
01,test1,202,290,A,290
02,test2,303,730,A,0
03,test3,404,180,N,180
In [9]: from csv import reader
In [10]: for row in reader(open("test.txt")):
if row[4] == "A" and float(row[3]) > float(row[5]):
print(row)
....:
['02', 'test2', '303', '730', 'A', '0']
过度复杂了,它很简单:
In [11]: "2" > "1234"
Out[11]: True
In [12]: float("2") > float("1234")
Out[12]: False
原始代码的问题是您没有使用函数句柄。 feval
评估function [ dfx1 ] = derivada_1(x,h )
fh2=funcion(x+h);
fh3=funcion(x-h);
dfx1=(fh2-fh3)/(2*h);
end
并将返回的值传递给feval,但feval(funcion,x)
需要输入参数。相反,它应该像funcion
传递一个函数句柄(在其他编程语言中也称为函数指针)。