2015-04-07 92 views
1

我想在这个函数中返回两个数组(牛顿方法)。但是当我在matlab中运行这个脚本。它只会返回第一个数组。我应该如何解决它?如何在matlab中返回多个值?

function [iter errorn]=Newton(func,dfunc,x0) 
    i=1; 
    solution=fzero(func,x0); 
    while abs(x0-solution)>1e-06 
     iter(i)=i; 
     x0=x0-func(x0)./dfunc(x0); 
     errorn(i)=abs(x0-solution); 
     i=i+1; 
    end 
    end 

该函数的调用方式:

[email protected](x)x^3-2*x-5; 
[email protected](x)3*x^2-2; 
[iter,y1N]=Newton(f1,df1,4) 

但MATLAB返回错误:too many arguments

+1

你的函数调用在哪里? –

+0

检查你的函数调用多少**输出变量**你分配给这个函数 –

+0

f1 = @(x)x^3-2 * x-5; df1 = @(x)3 * x^2-2;这是我的函数调用,但matlab有错误“太多的参数”我不明白为什么@ Karthick Rajan @Santhan Salai –

回答

3

一个多变量添加到函数调用的输出。将变量名称替换为问题的变量名称。

[firstArray, secondArray] = Newton(func,dfunc,x0); 

检查函数是否作为单独的function.m文件创建,并且它对matlab(在路径中)是可见的。

另请参阅hbaderts注释 - 与函数名称相同的变量名称可能会覆盖该函数。

+0

谢谢,意识到matlab不会覆盖现有变量,所以我需要更改变量名称。 –