c++调用matlab lsqnonlin,求问这个LSQNONLIN函数的调用要怎么修改才能运行?

function [f] = NSmodel(x)

%UNTITLED4 此处显示有关此函数的摘要

%   此处显示详细说明

global coupon dur fre price yrdif

inv_dur=1./dur;

w=inv_dur/sum(inv_dur);

n=length(price);

price_1=zeros(size(price));

for i=1:n

t=(yrdif(i)-floor(yrdif(i))):1.0/fre(i):yrdif(i);

c=ones(size(t)).*coupon(i)/fre(i);

c(end)=c(end)+100;

coef=t/x(4);

r=x(1)+x(2)*(1-exp(-coef))/coef+x(3)*((1-exp(-coef))/coef-exp(-coef));

price_1(i)=sum(c.*exp(-r.*t));

end

f=w.*(price_1-price);

end

x0=[0 0 0 0.5]

lb=[-0.1 -0.1 -0.1 0]

ub=[0.1 0.1 0.1 0.75]

options=optimset('Algorithm','Levenberg-Marquardt',...

'Display','iter');

x=lsqnonlin(@NSmodel,x0,lb,ub);

以下是错误描述:

错误使用 lsqncommon (line 66)

The Levenberg-Marquardt algorithm does not handle bound constraints and the trust-region-reflective algorithm requires at least as many

equations as variables; aborting.

出错 lsqnonlin (line 236)

[xCurrent,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ...

出错 Untitled6 (line 7)

x=lsqnonlin(@NSmodel,x0,lb,ub);

5724a1379ceb16a514510c7aa4f77048.gif

2017-12-2 08:34 上传

点击文件名下载附件

61.25 KB, 下载次数: 3

数据就这些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值