matlab matlab的function函数定义一个函数,但一直出来说输入参数数目不足。我用的是2014版本,不知道数目原因啊?

扫二维码下载作业帮
1.75亿学生的选择
下载作业帮安装包
扫二维码下载作业帮
1.75亿学生的选择
MATLAB 编写求矩形面积函数rect,没有输入参数时显示提示信息,当只输入一个参数时,以该函数作为正
扫二维码下载作业帮
1.75亿学生的选择
function SRECT = SRECT(a,b)
switch(nargin)
SRECT = a*a;
SRECT = a*b;
disp('请输入矩形的长和宽数据!');
怎么这程序像C语言啊?
为您推荐:
其他类似问题
扫描下载二维码查看: 237|回复: 15|关注: 0
用fsolve解复杂函数方程组显示输入参数不足
<h1 style="color:# 麦片财富积分
新手, 积分 5, 距离下一级还需 45 积分
现在有一个二元方程组,想用fsolve函数求解。这里X(1),X(2)是未知量,fun中F(2)中的DT是随着主函数循环而变化的量,所以DT我定义成了全局变量。出现的问题是报错“输入参数不足”,实在不知是那个参数没输进去,求高手解答。
PS:由于方程形式很复杂用solve无法得到精确解,用牛顿迭代法也很麻烦(难以求微分,实在不行了再用)。
主函数:& && && && && && && && && && && &&&
m1=-475; m2=-526; k1=0.295; k2=0.144; D1=9.7*10^-9; D2=2.5*10^-8;
GT=1.1*10^-7; c0(1)=0.01; c0(2)=0.01;
DT=0.2;& &&&%之后会每循环一次变化的,这是初始值
x=fsolve(fun,X);
function F=fun(X)
GT=1.1*10^-7;m1=-475; m2=-526;D1=9.7*10^-9; D2=2.5*10^-8;c0(1)=0.01; c0(2)=0.01;k1=0.295; k2=0.144;
F(1)=-X(2)-2*3.14^2*GT/(m1*X(2)*X(1)/2/D1*c0(1)*(1-k1)/(1-(1-k1)*X(2)*X(1)/2/D1*exp(X(2)*X(1)/2/D1)*(-0.-log(X(2)*X(1)/2/D1)+X(2)*X(1)/2/D1))+m2*X(2)*X(1)/2/D2*c0(2)*(1-k2)/(1-(1-k2)*X(2)*X(1)/2/D2*exp(X(2)*X(1)/2/D2)*(-0.-log(X(2)*X(1)/2/D2)+X(2)*X(1)/2/D2)));
F(2)=-DT+m1*(c0(1)-c0(1)/(1-(1-k1)*X(2)*X(1)/2/D1*exp(X(2)*X(1)/2/D1)*(-0.-log(X(2)*X(1)/2/D1)+X(2)*X(1)/2/D1)))-m2*(c0(2)-c0(2)/(1-(1-k2)*X(2)*X(1)/2/D2*exp(X(2)*X(1)/2/D2)*(-0.-log(X(2)*X(1)/2/D2)+X(2)*X(1)/2/D2)));
<h1 style="color:# 麦片财富积分
顶一下,怕沉了
<h1 style="color:# 麦片财富积分
用过fsolve的大神来呀
<h1 style="color:# 麦片财富积分
有没有好心人
<h1 style="color:#7 麦片财富积分
关注者: 50
x=fsolve(fun,X);中X是多少?代码没给出,可能是这个值不对
另外,你确定一下,fun([0 0]) 类似这样的命令是不是能正常返回结果
论坛优秀回答者
<h1 style="color:#6 麦片财富积分
关注者: 70
x1: 0.48379
<h1 style="color:# 麦片财富积分
x1: 0.48379
请问你是怎么改的呀,能看看程序吗
<h1 style="color:# 麦片财富积分
x=fsolve(fun,X);中X是多少?代码没给出,可能是这个值不对
另外,你确定一下,fun([0 0]) 类似这样的命令 ...
写了个简单的试了下,fun([])是没问题的。改为了
[x,fval] = fsolve('fun',x0)
可还是不行,报错如下:
错误使用 trustnleqn (line 28)
Objective function is returning undefined values at initial point. FSOLVE cannot continue.
出错 fsolve (line 366)
& & [x,FVAL,JACOB,EXITFLAG,OUTPUT,msgData]=...
<h1 style="color:# 麦片财富积分
x1: 0.48379
大神,请问我错在了哪里呀?
论坛优秀回答者
<h1 style="color:#6 麦片财富积分
关注者: 70
换1stOpt求解试试,比Matlab简单的多:
Constant GT=1.1*10^(-7),m1=-475, m2=-526,D1=9.7*10^(-9), D2=2.5*10^(-8),
& && && &c01=0.01, c02=0.01,k1=0.295, k2=0.144,DT=0.2;
Parameter X(2);
Function
-X(2)-2*3.14^2*GT/(m1*X(2)*X(1)/2/D1*c01*(1-k1)/(1-(1-k1)*X(2)*X(1)/2/D1*exp(X(2)*X(1)/2/D1)*(-0.-ln(X(2)*X(1)/2/D1)+X(2)*X(1)/2/D1))+m2*X(2)*X(1)/2/D2*c02*(1-k2)/(1-(1-k2)*X(2)*X(1)/2/D2*exp(X(2)*X(1)/2/D2)*(-0.-ln(X(2)*X(1)/2/D2)+X(2)*X(1)/2/D2)));
-DT+m1*(c01-c01/(1-(1-k1)*X(2)*X(1)/2/D1*exp(X(2)*X(1)/2/D1)*(-0.-ln(X(2)*X(1)/2/D1)+X(2)*X(1)/2/D1)))-m2*(c02-c02/(1-(1-k2)*X(2)*X(1)/2/D2*exp(X(2)*X(1)/2/D2)*(-0.-ln(X(2)*X(1)/2/D2)+X(2)*X(1)/2/D2)));
复制代码
x1: 0.136486
x2: 5.5E-6
6#结果有点误差,Matlab代码的Log()函数在1stOpt改为ln()
站长推荐 /3
利用MATLAB进行投资组合优化
Powered by查看: 2105|回复: 7|关注: 0
求助matlab的M文件定义函数,报告输入参数不足的错误
<h1 style="color:# 麦片财富积分
新手, 积分 6, 距离下一级还需 44 积分
function y=odefunliu1(t,y)
f=-5*y(1)*y(3);& && && && && && && && &%定义微分方程
g=5*y(3)*y(1)-0.03*y(2);
h=0.03*y(2)-0.05*y(3);
j=0.05*y(3);
y=[f;g;h;j];
这是M文件,下面是运行报的错误
&& odefunliu1
错误使用 odefunliu1 (line 2)
输入参数的数目不足。
MATLAB 基础讨论版块优秀回答者
<h1 style="color:#2 麦片财富积分
关注者: 8
odefunliu1(1,2)
需要像这样调用
<h1 style="color:# 麦片财富积分
odefunliu1(1,2)
需要像这样调用
我的第一步就是这样额格式,要换成数字吗?
MATLAB 基础讨论版块优秀回答者
<h1 style="color:#2 麦片财富积分
关注者: 8
我的第一步就是这样额格式,要换成数字吗?
看你截图中的command window中直接输入了odefunliu1,所以报错。
你的函数需要接受两个输入参数才能正确执行。
<h1 style="color:# 麦片财富积分
看你截图中的command window中直接输入了odefunliu1,所以报错。
你的函数需要接受两个输入参数才能正确 ...
已解决&&谢谢了
<h1 style="color:# 麦片财富积分
怎么解决的,我现在也是遇到同样的问题
论坛优秀回答者
<h1 style="color:#43 麦片财富积分
关注者: 297
怎么解决的,我现在也是遇到同样的问题
函数如果不会调用请买一本书,学学基础语法
<h1 style="color:# 麦片财富积分
主要是现在已经急着用,要是不急的话还能慢慢来啊,所以求指教
站长推荐 /3
利用MATLAB进行投资组合优化
Powered by

我要回帖

更多关于 matlab function定义 的文章

 

随机推荐