matlab预先定义好的量 多参量函数的问题

查看: 2906|回复: 7|关注: 0
fmincon函数中表达式存在多个参数,如何表达呢?
<h1 style="color:# 麦片财富积分
新手, 积分 6, 距离下一级还需 44 积分
一下是我写的程序,主要有3个问题:
1、m1表达式中,有多个参数,请问m1=(w-c+(delta^2*y)/(2*psi))*y-(w-zeta)*int('(y-(alpha-beta*p)*gamma)*(1/(s*(2*pi)^0.5))*(alpha-beta*p)',0,y)-(delta*y)^2/(4*psi)这样的写法正确吗?
2、参数的值是不是可以这样赋值?
3、运行以下程序的时候,只是得到一个m1的值,不是应该得到一个w,和favl的值么?
程序如下:
function m1=pimm(w)
m1=(w-c+(delta^2*y)/(2*psi))*y-(w-zeta)*int('(y-(alpha-beta*p)*gamma)*(1/(s*(2*pi)^0.5))*(alpha-beta*p)',0,y)-(delta*y)^2/(4*psi)
[w,fval]=fmincon(@pimm,w0,[],[],[],[],0,20,[]);
请大家帮帮忙解决这个问题,在此感激不尽
论坛优秀回答者
帖子最佳答案
关注者: 724
|此回复为最佳答案
这样肯定是不行的,string 类型表达式里 ''&&,参数的值不可能自动代入。另外,函数定义文件不要和调用写在一起,如果你想放在一起,就把函数定义写成匿名函数。比如:
a = double(int((y1-(alpha-beta*p)*gamma)*(1/(s*(2*pi)^0.5))*(alpha-beta*p),0,y));
pimm=@(w)(w-c+(delta^2*y)/(2*psi))*y-(w-zeta)*a-(delta*y)^2/(4*psi);
[w,fval]=fmincon(pimm,w0,[],[],[],[],0,20)
<h1 style="color:# 麦片财富积分
这样肯定是不行的,string 类型表达式里 ''&&,参数的值不可能自动代入。另外,函数定义文件不要和调用写在 ...
非常谢谢您的回复,对我很有帮助。
不过程序中pimm=@(w)(w-c+(delta^2*y)/(2*psi))*y-(w-zeta)*a-(delta*y)^2/(4*psi);还是会报错:& && && &??? pimm=@(w)(w-c+(delta^2*y)/(2*psi))*y-(w-zeta)*a-(delta*y)^2/(4*psi);
& && && & |
Error: &identifier& expected, &(& found.
查看了表达式,括号是对称的,我的matlab版本是6.1 会不会有这个影响还是有其他原因呢?
论坛优秀回答者
帖子最佳答案
关注者: 724
非常谢谢您的回复,对我很有帮助。
不过程序中pimm=@(w)(w-c+(delta^2*y)/(2*psi))*y-(w-zeta)*a-(delta ...
我这里是没有问题的,6.1 版本确实太旧了,不清楚是否支持匿名函数
<h1 style="color:# 麦片财富积分
我这里是没有问题的,6.1 版本确实太旧了,不清楚是否支持匿名函数
我装了新版本就可以了,真的非常非常感谢您的帮助
<h1 style="color:# 麦片财富积分
我这里是没有问题的,6.1 版本确实太旧了,不清楚是否支持匿名函数
您好,还有个问题想咨询您syms y1
a = double(int((y1-(alpha-beta*p)*gamma)*(1/(s*(2*pi)^0.5))*exp(-(gamma/(alpha-beta*p)-1)^2/(2*s^2))*(alpha-beta*p),0,y))复制代码这个求积分是对gamma求的积分
1、为什么是定义syms y1?
2、还有是我对gamma求积分,我之前将gamma赋值为1,这会不会矛盾呢?
论坛优秀回答者
帖子最佳答案
关注者: 724
您好,还有个问题想咨询您这个求积分是对gamma求的积分
1、为什么是定义syms y1?
2、还有是我对gamma求 ...
你的 gamma 在前面不是被定义成了常数 1 吗?所以我认为你是对y求积分,而你的 y 在前面也定义了数值,所以,我就改成了 y1。
<h1 style="color:# 麦片财富积分
你的 gamma 在前面不是被定义成了常数 1 吗?所以我认为你是对y求积分,而你的 y 在前面也定义了数值,所 ...
噢噢,原来是这样,这是我的错误。
那就把gamma=1这个去掉,和改成syms gamma 应该就可以了
真的谢谢您呢:loveliness:
站长推荐 /1
MATLAB中文论坛是全球最大的 MATLAB & Simulink 中文社区。用户免费注册会员后,即可下载代码,讨论问题,请教资深用户及结识书籍作者。立即注册加入我们吧!
MATLAB官方社交平台
MATLAB中文论坛微社区如何编写一个matlab函数能接受任意多个参数_百度知道
如何编写一个matlab函数能接受任意多个参数
我有更好的答案
((x-0,z)%创建MATLAB函数,起名叫((y+2)^2-3)+23*z;把上面两行存在一个文件里.5)^3+0.2)+1&#47。w=1&#47,yfunctionw=hump(x.m然后在命令行输入w=hump(5
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。【图文】Matlab在求解优化问题中的应用_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Matlab在求解优化问题中的应用
&&Matlab在求解优化问题中的应用
大小:654.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢matlab的M文件调用另一个M文件的多个结果时出现 ”输出太多参数 &错误_百度知道
matlab的M文件调用另一个M文件的多个结果时出现 ”输出太多参数 &错误
E=eye(n,n);l=solve(det(x*E-AH*A))for i=1:n
D{1也就是说matlab的M文件怎样调用另一个M文件的多个结果,如:function Q(A)l=[];[m,n]=size(A);AH=A&#39;
不好意思,漏了一点A=[1 1 0;0 0 1];Q(A)这样输出有三个结果
我有更好的答案
i}=l(i)*E-AH*A;endoutput = D;
%%%% 将D返回将以上代码存储于一个命名为Q的m文件然后调用函数,只要用rusult{i} i = 1 ;A=[1 1 0;0 0 1];&gt, -1,
1]result{3} = [
0;;E=eye(n,n),
0]如果你要调用result里的每一个元胞元素:&gt, -1;&gt,
0][ -1, -1,
0;result = Q(A),n]=size(A);AH=A&#39,
%%% 获得的result是一个1*3的元胞&&celldisp(result)result{1} = [ -1,
1首先你需要定义函数的返回值,没有返回值,你退出这个函数后就什么都得不到。function output = Q(A)
%%%%%% 加入返回值l=[];[m,在命令窗口或另外一个m文件输入;l=solve(det(x*E-AH*A));for i=1:n
D{1, -1]result{2} = [
采纳率:74%
来自团队:
为您推荐:
其他类似问题
matlab的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。苹果/安卓/wp
积分 1145, 距离下一级还需 230 积分
权限: 自定义头衔, 签名中使用图片, 隐身
道具: 彩虹炫, 涂鸦板, 雷达卡, 热点灯, 金钱卡, 显身卡, 匿名卡, 抢沙发下一级可获得
权限: 设置帖子权限道具: 提升卡
购买后可立即获得
权限: 隐身
道具: 金钱卡, 彩虹炫, 雷达卡, 热点灯, 涂鸦板
苦逼签到天数: 518 天连续签到: 1 天[LV.9]以坛为家II
各位大侠,本人遇难,烦请各位大侠相助。我现在想设计一个函数,有一个输出,多个输入,但是输入变量的个数不确定。
这个统一的函数应该怎么编呢?
举例来说,function y = fsum (a, b, x1, x2, x3, ......, xp)
这里的p是不确定的,有时候我想输入4个x,即x1,x2,x3,x4,有时候又想输入5个,即x1,x2,x3,x4,x5。等等情况。
那请问这个统一的函数怎么编写呢?
我以前编的都是固定数量个输入变量的函数,这个不会了。
先行感谢,用后必报。
载入中......
matlab里可以动态设置变量个数
把输入项里用矩阵表示,每一列表示你的输入具体参数,再在主函数里控制你的输入具体情况
本帖最后由 daq1987 于
23:25 编辑
我不确定这个行不行,我也只是一知半解。
function y = fsum (varargin) 即varargin的用法。
MATLAB的M函数文件还可以具有个数不确定的输入、输出参数,也就是说,在定义M函数文件的时候,不指明输入、输出参数的个数,而是在程序中通过编写程序完成具体参数的确定,完成该功能主要依靠varargin和varargout函数
(复制过来的,改不了字体大小了=。=)
总评分:&热心指数 + 1&
[y1,y2,y3] = function(x1,x2,x3)
function 是你的函数名称
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
论坛法律顾问:王进律师

我要回帖

更多关于 matlab预先定义好的量 的文章

 

随机推荐