Matlab问题与功能

时间:2016-02-14 20:19:26

标签: matlab

所以,我一直在用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

Code

Table of results

1 个答案:

答案 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传递一个函数句柄(在其他编程语言中也称为函数指针)。