全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
288 0
2015-04-06
含参数非线性方程组求解方法总结
以fsolve求解方程组a*log(x1)+x2^2-5=0;exp(x1)+b*sin(x2)-10=0为例。
方法一:全局变量法
  • function glo
  • global a b
  • %主函数定义全局变量
  • a=3;
  • b=4;
  • x0=[1 1];
  • x=fsolve(@tes,x0)
  • function y=tes(x)
  • global a b
  • %子函数定义全局变量
  • y=[a*log(x(1))+x(2)^2-5;
  •     exp(x(1))+b*sin(x(2))-10];
  • %以上存为glo.m
  • %在命令窗口输入
  • glo
  • %得到:
  • Optimization terminated: first-order optimality is less than options.TolFun.
  • x =
  •    1.80833796874946   1.79520903756128


[color=rgb(51, 102, 153) !important]复制代码

方法二:嵌套函数法
注:此方法在MATLAB7.0以上版本可用
  • function nesti
  • function y=tes(x)
  • %使用嵌套函数时,嵌套函数可以直接调用主函数变量
  • y=[a*log(x(1))+x(2)^2-5;
  •     exp(x(1))+b*sin(x(2))-10];
  • end
  • %使用嵌套函数时,嵌套函数和主函数都必须用end表示函数结束
  • a=3;
  • b=4;
  • x0=[1 1];
  • x=fsolve(@tes,x0)
  • end
  • %以上存为nesti.m
  • %在命令窗口输入
  • nesti
  • %得到:
  • Optimization terminated: first-order optimality is less than options.TolFun.
  • x =
  •    1.80833796874946   1.79520903756128


[color=rgb(51, 102, 153) !important]复制代码

方法三:没有名字(推荐使用方法)
  • function unname
  • a=3;
  • b=4;
  • x0=[1 1];
  • x=fsolve(@tes,x0,[],a,b)
  • %[]表示fsolve的输入参数options采用默认值
  • function y=tes(x,a,b)
  • y=[a*log(x(1))+x(2)^2-5;
  •     exp(x(1))+b*sin(x(2))-10];
  • %以上存为unname.m
  • %在命令窗口输入
  • unname
  • %得到:
  • Optimization terminated: first-order optimality is less than options.TolFun.
  • x =
  •    1.80833796874946   1.79520903756128




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群