matlab之fsolve方法求解复杂非线性方程常见问题(入门)

问题描述

二十六道二次方程,共二十个未知数。

考虑了matlab中可用的各类算法,最后采用fsolve函数解该复杂非线性方程。

参考:非线性方程(组):MATLAB内置函数 solve, vpasolve, fsolve, fzero, roots [MATLAB] - GentleMin - 博客园

一、使用fsolve最简单函数求解

将具体的方程定义为root.m文件

用fsolve函数最简单的形式进行求解,x0采用实际模拟结果替代。

myfun = @test_root0426;
x0 = [……];
x = fsolve(myfun,x0)

运行结果出现问题:

1.输入参数位数太小数量级基本在10的-5次方以下,matlab显示不全

通过format long命令,获得长位数结果

2.无法运行获得结果,代码错误

x0 = [……];

root(x0)

可以通过在root.m文件下输入如下命令,进行单独运行。如果root.m能够成功计算,说明问题出现在主文件main.m下,对主文件进行检查即可。

报错Solver stopped prematurely.检查原因是main.m中变量定义遗漏。

3.调整部分联动数值后,发现计算结果没有改变。计算结果与初值过于接近,且初值改变,计算结果也随之改变。

发现是由于fsolve函数的特性,初值对其影响很大。

 原因是fsolve本身使用的算法:优化方法,即用优化方法求解函数距离零点最近,具体方法为信赖域方法。包含预处理共轭梯度(PCG)、狗腿(dogleg)算法和Levenberg-Marquard

  • 14
    点赞
  • 143
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值