24小时热门版块排行榜    

查看: 1238  |  回复: 5
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

greetrunners

金虫 (著名写手)

[求助] MATLAB, 代码错误,请大侠帮忙看看。

[t12 t21 t13 t31 t23 t32]=lsqnonlin(@lsqfun3,1,1,1,1,1,1)
Undefined function or variable 'a2'.

Error in lsqfun3 (line 8)
k1=(a2.^2*t21*exp(-0.3*t21)*exp(-0.3*t21)+a3.^2*t31*exp(-0.3*t31)*exp(-0.3*t31)+a2.*a3*exp(-0.3*t21)*exp(-0.3*t31)*(t21+t31))./((a1+a2.*exp(-0.3*t21)+a3*exp(-0.3*t31)).^2);

Error in lsqnonlin (line 197)
            initVals.F = feval(funfcn{3},xCurrent,varargin{:});

Caused by:
    Failure in initial user-supplied objective function evaluation. LSQNONLIN cannot continue.


为了减少输出的参数,编写以下函数,出现了上述问题。
function obj=lsqfun3(t12,t21,t13,t31,t23,t32)
%t12,t21,t13,t31,t23,t32,是所需要关联的NRTL方程参数;
%a1,a2,a3,是组分1,2,3,液相平衡数据;
%y1,y2,y3,是组分1,2,3,气相平衡数据;
%ps1,ps2,ps3,是组分1,2,3的饱和蒸汽压;
%p==101.35;
p=101.35;
k1=(a2.^2*t21*exp(-0.3*t21)*exp(-0.3*t21)+a3.^2*t31*exp(-0.3*t31)*exp(-0.3*t31)+a2.*a3*exp(-0.3*t21)*exp(-0.3*t31)*(t21+t31))./((a1+a2.*exp(-0.3*t21)+a3*exp(-0.3*t31)).^2);
k2=(a2.^2*t12*exp(-0.3*t12)+a2.*a3*exp(-0.3*t12)*exp(-0.3*t32)*(t12-t32))./((a1*exp(-0.3*t12)+a2+a3*exp(-0.3*t32)).^2);
k3=(a3.^2*t13*exp(-0.3*t13)+a2.*a3*exp(-0.3*t13)*exp(-0.3*t23)*(t13-t23))./((a1*exp(-0.3*t13)+a2*exp(-0.3*t23)+a3).^2);
k4=(a1.^2*t21*exp(-0.3*t21)+a1.*a3*exp(-0.3*t21)*exp(-0.3*t31)*(t21-t31))./((a1+a2*exp(-0.3*t21)+a3*exp(-0.3*t31)).^2);
k5=(a1.^2*t12*exp(-0.3*t12)^2+a3.^2*t32*exp(-0.3*t32)^2+a1.*a3*exp(-0.3*t12)*exp(-0.3*t32)*(t12+t32))./((a1*exp(-0.3*t12)+a2+a3*exp(-0.3*t32)).^2);
k6=(a3.^2*t23*exp(-0.3*t23)+a1.*a3*exp(-0.3*t13)*exp(-0.3*t23)*(t23-t13))./((a1*exp(-0.3*t13)+a2*exp(-0.3*t23)+a3).^2);
k7=(a1.^2*t31*exp(-0.3*t31)+a1.*a2*exp(-0.3*t21)*exp(-0.3*t31)*(t31-t21))./((a1+a2*exp(-0.3*t21)+a3*exp(-0.3*t31)).^2);
k8=(a2.^2*t32*exp(-0.3*t32)^2+a1.*a2*exp(-0.3*t12)*exp(-0.3*t32)*(t32-t12))./((a1*exp(-0.3*t12)+a2+a3*exp(-0.3*t32)).^2);
k9=(a1.^2*t13*exp(-0.3*t13)^2+a2.^2*t23*exp(-0.3*t23)^2+a1.*a2*exp(-0.3*t13)*exp(-0.3*t23)*(t13+t23))./((a1*exp(-0.3*t13)+a2*exp(-0.3*t23)+a3).^2);
gama1=exp(k1+k2+k3);
gama2=exp(k4+k5+k6);
gama3=exp(k7+k8+k9);
y1c=ps1.*gama1.*a1./p;
y2c=ps2*gama2*a2./p;
y3c=ps3*gama3*a3./p;
obj=sum(sum((y1c-y1).^2+(y2c-y2).^2+(y3c-y3).^2));
>> y1=[0.8907
0.8924
0.733
0.7731
0.698
0.7778
0.7622
0.7796
0.7934];
y2=[0.1082
0.1067
0.6626
0.5623
0.732
0.4326
0.3978
0.3766
0.3473];
y3=[0
0
0
0
0
0
0
0
0];
a1=[0.8918
0.8933
0.3374
0.4377
0.268
0.5674
0.6022
0.6234
0.6527];
a2=[0.10723
0.10649
0.62613
0.53391
0.70928
0.42518
0.39054
0.37007
0.34364];
a3=[0.00097
0.00021
0.03647
0.02839
0.02272
0.00742
0.00726
0.00653
0.00366];
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

努力!努力!努力!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

greetrunners

金虫 (著名写手)

引用回帖:
2楼: Originally posted by libralibra at 2013-01-30 17:17:00
function obj=lsqfun3(t12,t21,t13,t31,t23,t32)
%t12,t21,t13,t31,t23,t32,是所需要关联的NRTL方程参数;
%a1,a2,a3,是组分1,2,3,液相平衡数据;
%y1,y2,y3,是组分1,2,3,气相平衡数据;
%ps1,ps2,ps3,是 ...

应该如何定义?
努力!努力!努力!
3楼2013-01-30 19:08:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
greetrunners: 金币+10, ★★★很有帮助, 谢谢 2013-01-31 09:39:29
xzhdty: 金币+1, 谢谢骠骑将军 2013-01-31 11:08:38
function obj=lsqfun3(t12,t21,t13,t31,t23,t32)
%t12,t21,t13,t31,t23,t32,是所需要关联的NRTL方程参数;
%a1,a2,a3,是组分1,2,3,液相平衡数据;
%y1,y2,y3,是组分1,2,3,气相平衡数据;
%ps1,ps2,ps3,是组分1,2,3的饱和蒸汽压;
%p==101.35;
p=101.35;
k1=(a2.^2*t21*exp(-0.3*t21)*exp(-0.3*t21)+a3.^2*t31*exp(-0.3*t31)*exp(-0.3*t31)+a2.*a3*exp(-0.3*t21)

===============
函数中a2,a3没定义啊,怎么就开始用了
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2013-01-30 17:17:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

引用回帖:
3楼: Originally posted by greetrunners at 2013-01-30 19:08:17
应该如何定义?...

这...你自己知道吧?
起码函数的定义应该是

function ret_value = foo(input_value)
param1 = ...
param2 = ...
% then use param1 and param2 to calculate the others
...
end

你得先定义参数,然后使用,你的函数前面几行看着写的挺清楚,可是那是注释,你没有定义a2,a3....几乎所有要用的参数
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
4楼2013-01-30 20:43:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

greetrunners

金虫 (著名写手)

引用回帖:
2楼: Originally posted by libralibra at 2013-01-30 17:17:00
function obj=lsqfun3(t12,t21,t13,t31,t23,t32)
%t12,t21,t13,t31,t23,t32,是所需要关联的NRTL方程参数;
%a1,a2,a3,是组分1,2,3,液相平衡数据;
%y1,y2,y3,是组分1,2,3,气相平衡数据;
%ps1,ps2,ps3,是 ...

可以帮我修改一下吗?
努力!努力!努力!
5楼2013-01-31 12:14:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 哪位老哥知道今年的国自然具体哪一天放榜? +13 Ldrop2023 2026-08-13 16/800 2026-08-18 12:25 by 淀粉搬运工
[基金申请] 今天维护系统维护 祝所有人 高中 +4 gjjjzhong 2026-08-18 5/250 2026-08-18 12:18 by ziyangfang
[基金申请] 欢迎发来filecode的Mz6后的代码验证其规律 +44 医学老男孩 2026-08-13 98/4900 2026-08-18 12:14 by wenky
[基金申请] 2027广东省杰青 +3 奶牛小黑 2026-08-15 8/400 2026-08-18 11:47 by gltch
[基金申请] 快农历七夕节了,轻松一下,男人悄悄话,女施主请不要进来。 +4 Tide man 2026-08-14 5/250 2026-08-18 11:35 by Tide man
[论文投稿] 投稿咨询 +4 wwm09 2026-08-17 5/250 2026-08-18 11:25 by 無關想念
[基金申请] 时间戳变了,能看出什么问题? +5 基诺咪客 2026-08-17 6/300 2026-08-18 11:06 by hunter无悔
[基金申请] 93BebMhtakh前后11位开头都是大写 +4 且听虎啸 2026-08-17 5/250 2026-08-18 00:49 by 蔡棒棒菂
[基金申请] 感觉是下周放榜了 +6 angus9576 2026-08-17 11/550 2026-08-17 23:57 by angus9576
[基金申请] 今天系统多次维护,明天很可能放榜! +8 zju2000 2026-08-16 9/450 2026-08-17 12:20 by lmz0216
[基金申请] 时间戳又变了8-15 +13 archvillain 2026-08-15 25/1250 2026-08-16 20:13 by zhaosm1982
[基金申请] 咱们一起用铁证分析2026国家社科基金中标与否 +7 启萌科技 2026-08-12 26/1300 2026-08-16 12:35 by 启萌科技
[精细化工] 招聘 金属平磨液,抛光液研发工程师 +3 小天0311 2026-08-14 3/150 2026-08-16 07:31 by H9PLUS
[基金申请] 各位道友,我要去昆明玩几天,回来见。 +7 Tide man 2026-08-14 8/400 2026-08-15 01:11 by arzu_hma
[基金申请] 是这周出结果还是下周出结果? +4 yuleib84 2026-08-11 4/200 2026-08-14 23:05 by lfy8008
[硕博家园] 读博的好处 +4 lnee 2026-08-11 4/200 2026-08-14 10:20 by ahsoarli
[基金申请] 重要来源:本周末出结果 +10 瞬息宇宙 2026-08-12 10/500 2026-08-13 15:46 by likettle
[基金申请] 不应该看fileCode +7 且听虎啸 2026-08-12 9/450 2026-08-13 14:27 by flydreamws
[基金申请] Filecode 又变了,巨变 +3 WH3796 2026-08-12 4/200 2026-08-13 14:13 by 小木虫6752397
[基金申请] 2019年青年基金涵评意见,大家看看几个A,几个B? +11 Tide man 2026-08-11 11/550 2026-08-13 07:35 by 撸猫猫
信息提示
请填处理意见