声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1374|回复: 6

[编程技巧] 关于fzero求解出错的问题

[复制链接]
发表于 2006-12-24 23:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
小弟一初学者,在用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);   
运行后还是报错,而且错误似乎没变,百思不得其解啊,请高人指点啊
回复
分享到:

使用道具 举报

发表于 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有什么依据吗?
发表于 2006-12-25 11:25 | 显示全部楼层
修改:den1=fsolve(@fun,x0);
发表于 2006-12-25 12:14 | 显示全部楼层
原帖由 隐身猪 于 2006-12-25 01:17 发表
请问上面的朋友,改为myqr有什么依据吗?



qr是matlab自带的内建函数
发表于 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,结果发现还是运行不了。难道是我的机子有问题?我机子是双核的,难道问题出在这里?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-12 14:19 , Processed in 0.066951 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表