隐身猪 发表于 2006-12-24 23:46

关于fzero求解出错的问题

小弟一初学者,在用fzero求解方程时遇到这样的问题,请高人指点啊!方程如下:
function qr
clear;format long;
tic
global R T P A B C D E F G H I J;
P=8;
T=483;
R=0.082057;
x0=10;
      A=10;
      B=2;
      C=3;
      D=4;
      E=5;
      F=6;
      G=7;
      H=8;
      I=5;
      J=2;
      den1=fzero(@fun,x0);   
t1=toc
disp(den1);   

   function f=fun(x)
   global R T P A B C D E F G H I J;   
   f=P*T^4-x*R*T^5-(B*x*T^5-A*T^4-C*T^2+D*T-E)*x^2-(H*R*T^5-G*T^4-J*T^3)*x^3-I*(G+J*T^3)*x^6-C*x^3*T^2*(1+F*x^2)*exp(-F*x^2);
程序报错:
??? Error using ==> fzero
Too many input arguments.

Error in ==> qr at 19
      den1=fzero(@fun,x0);

于是我又把A B C D E F G H I J设为fzero的传递参数,如下:
function qr
clear;format long;
tic
global R T P;
P=8;
T=483;
R=0.082057;
x0=10;
      A=10;
      B=2;
      C=3;
      D=4;
      E=5;
      F=6;
      G=7;
      H=8;
      I=5;
      J=2;
      den1=fzero(@fun,x0,[],A,B,C,D,E,F,G,H,I,J);   
t1=toc
disp(den1);   

   function f=fun(x,A,B,C,D,E,F,G,H,I,J)
   global R T P;   
   f=P*T^4-x*R*T^5-(B*x*T^5-A*T^4-C*T^2+D*T-E)*x^2-(H*R*T^5-G*T^4-J*T^3)*x^3-I*(G+J*T^3)*x^6-C*x^3*T^2*(1+F*x^2)*exp(-F*x^2);

??? Error using ==> fzero
Too many input arguments.

Error in ==> qr at 19
      den1=fzero(@fun,x0,[],A,B,C,D,E,F,G,H,I,J);   
运行后还是报错,而且错误似乎没变,百思不得其解啊,请高人指点啊

eight 发表于 2006-12-25 00:13

原帖由 隐身猪 于 2006-12-24 23:46 发表
小弟一初学者,在用fzero求解方程时遇到这样的问题,请高人指点啊!方程如下:
function qr
clear;format long;
tic
global R T P A B C D E F G H I J;
P=8;
T=483;
R=0.082057;
x0=10;
      A=10 ...


将文件名和函数名改为myqr

隐身猪 发表于 2006-12-25 01:17

请问上面的朋友,改为myqr有什么依据吗?

huqingwan 发表于 2006-12-25 11:25

修改:den1=fsolve(@fun,x0);

eight 发表于 2006-12-25 12:14

原帖由 隐身猪 于 2006-12-25 01:17 发表
请问上面的朋友,改为myqr有什么依据吗?


qr是matlab自带的内建函数

xjzuo 发表于 2006-12-25 14:55

回复

稍微修改了一下,可以求解.
一般尽量不要用全局变量.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function f=myfunf(x)
   global R T P A B C D E1 F G H I1 J1;   
   f=P*T^4-x*R*T^5-(B*x*T^5-A*T^4-C*T^2+D*T-E1)*x^2...
-(H*R*T^5-G*T^4-J1*T^3)*x^3-I1*(G+J1*T^3)*x^6-C*x^3...
*T^2*(1+F*x^2)*exp(-F*x^2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function myqr  %%%此处应听取eight的建议改函数名
clear all
format long
tic
global R T P A B C D E1 F G H I1 J1
P=8;
T=483;
R=0.082057;
x0=10;
      A=10;
      B=2;
      C=3;
      D=4;
      E1=5;
      F=6;
      G=7;
      H=8;
      I1=5;
      J1=2;
      den1=fzero(@myfunf,x0);   
t1=toc
den1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
t1 =
   0.18700000000000

den1 =
   0.13207430034183

[ 本帖最后由 xjzuo 于 2006-12-25 14:59 编辑 ]

隐身猪 发表于 2006-12-26 14:33

xjzuo朋友,你的代码在我机子上还是无法运行,总是报有错:
??? Error using ==> fzero
Too many input arguments.

Error in ==> E:\work\myqr.m
On line 20==> den1=fzero(@myfunf,x0);   


我开始还以为是7.0在我机子上有问题,就装了个6.5,结果发现还是运行不了。难道是我的机子有问题?我机子是双核的,难道问题出在这里?
页: [1]
查看完整版本: 关于fzero求解出错的问题