用1stOpt解出非线性方程组的解作为初值用Matlab求解,解不出来

这是一个非线性方程组(Matlab表示):

function  f= solveMagneticDipoleEquation(x)

%UNTITLED Summary of this function goes here

%   Detailed explanation goes here

%已知数

a=-150;

b=150;

Bx=-48030;

By=29370;

Bz=-19077.3;

%未知数

Bt=x(1);

c=x(2);

m=x(3);

n=x(4);

p=x(5);

Rl=sqrt(a.^2+b.^2+c.^2);

f(1)=Bt*(3*(m*a+n*b+p*c)*a/Rl.^5-m/Rl.^3)/Bx-1;

f(2)=Bt*(3*(m*a+n*b+p*c)*b/Rl.^5-n/Rl.^3)/By-1;

f(3)=Bt*(3*(m*a+n*b+p*c)*c/Rl.^5-p/Rl.^3)/Bz-1;

f(4)=m.^2+n.^2+p.^2-1;

end复制代码

用一开始建模型的人给的粗略的初始值范围,用默认设置选项,解出的解明显不对,警告提示要用Levenberg-Marquardt算法,后改用这种算法options=optimset('Display','iter','Algorithm','Levenberg-Marquardt');结果还是一样。

于是使用1stOpt软件,网上只能下载到免安装的1.5版本,使用如下代码:

Parameters Bt[10^10,10^12];

Parameters c[160,200];

Parameters m[-0.55,0.54];

Parameters n[-0.52,0.54];

Parameters p[0.65,1];

Parameters Rl;

Constant a=-150;

Constant b=150;

Constant Bx=-48030;  //Bx,By,Bz是变参数,从文件中读出一行再解一次方程,每次解出来的解存入放入数组,最后求出平均值

Constant By=29370;

Constant Bz=-19077.3;

//BatchFileModel;

//VarConstant Bx="Sheet1[A1:A240]";

//VarConstant By="Sheet1[B1:B240]";

//VarConstant Bz="Sheet1[C1:C240]";

//DataFile "D:\Mag1230.xls[Sheet1[A1:A240]]";

//RowDataSet;

//Bx="Sheet1[A1:A240]";

//By="Sheet1[B1:B240]";

//Bz="Sheet1[C1:C240]";

//EndRowDataSet;

Function Bt*(3*(m*a+n*b+p*c)*a/Rl^5-m/Rl^3)/Bx-1=0;

Bt*(3*(m*a+n*b+p*c)*b/Rl^5-n/Rl^3)/By-1=0;

Bt*(3*(m*a+n*b+p*c)*c/Rl^5-p/Rl^3)/Bz-1=0;

m^2+n^2+p^2-1=0;

Rl-sqrt(a^2+b^2+c^2)=0;复制代码

结果为:

====== 结果======

迭代数: 148

计算用时(时:分:秒:毫秒): 00:00:00:482

计算中止原因:达到收敛判定标准

优化算法:最大继承法

函数表达式 1: bt*(3*(m*(-150)+n*150+p*c)*(-150)/rl^5-m/rl^3)/(-48030)-1-(0)

2: bt*(3*(m*(-150)+n*150+p*c)*150/rl^5-n/rl^3)/29370-1-(0)

3: bt*(3*(m*(-150)+n*150+p*c)*c/rl^5-p/rl^3)/(-19077.3)-1-(0)

4: m^2+n^2+p^2-1-(0)

5: rl-sqrt((-150)^2+150^2+c^2)-(0)

目标函数值: 0

Bt: 999812590445.556

c: 161.888089867363

m: 0.401079546362512

n: -0.0464426102549249

p: 0.914865171182263

Rl: 266.847809885904

====== 计算结束======

当然每次运行结果都会有点不同,但大致都在这个范围内。

因为我要继续一步作分析,Bx,By,Bz是测试数据,要从表格中读出的,对应每一组数据求一次方程组,相当于变常量,按照上面注释中采用的两种方法,都没有达到我预期的效果,软件把它也当做变量去求解了,也有可能是用的方法不对,但我从手册中找不到其它方法了。因为Matlab编程方便,可以实现我的需求,于是我又转回Matlab,用1stOpt解出非线性方程组的解作为初值用Matlab求解,依然求不出解,除了算法的设置,误差和迭代次数的设置都是因为解不出正确的解,自己调的,但是依然没用。

x0=[999999999999 161.9 0.401 -0.0465 0.9148 266.856];

options=optimset('Display','iter','MaxFunEvals',10^5,'TolFun',1e-18,'TolX',1e-18,'MaxIter',1e4,'Algorithm','Levenberg-Marquardt');

[x val]= fsolve(@solveMagneticDipoleEquation,x0,options);复制代码请问:如何用Matlab可以解出这个方程组的解?

matlab的1stopt,用1stOpt解出非线性方程组的解作为初值用Matlab求解,解不出来相关推荐

  1. matlab 非线性方程数值解法,非线性方程组的几种数值解法+matlab源代码

    摘要很多领域都有涉及到非线性方程组,例如天气预报,石油地质勘探,电力系统计算等,甚至商业领域也有非线性优化问题,这些问题要从本质上解决就是求出非线性方程组的解.但是目前已知的数值解法并不完善,选择不同 ...

  2. 用matlab求不动点迭代,科学网—数值分析--非线性方程组不动点迭代法matlab程序 - 殷春武的博文...

    %%%程序编写者  西北工业大学自动化学院    Email: yincwxa2013@mail.nwpu.edu.cn %%  All rights reserved clear clc x1=in ...

  3. matlab 解非齐次方程组,各位看一下为什么这里的LU解不出非齐次线性方程组?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 function x=solvebyLU(A,b) % 该函数利用LU分解法求线性方程组Ax=b的解 flag=isexist(A,b); %调用第一小节 ...

  4. matlab非线性方程组求解得到矩阵,非线性方程组求解——附Matlab原程序

    在科学与工程计算中,经常遇到求解非线性方程组的问题:非线性方程组在收敛速度及收敛性比线性方程组要差,特别对于非凸的非线性方程组,其求解更是困难.下面简要介绍非线性方程组的三种解法--牛顿法.拟牛顿法. ...

  5. python牛顿法解非线性方程组_科学网—求解多元非线性方程组F(x)=0的Newton-Raphson方法及其MATLAB实现 - 王福昌的博文...

    科学网对公式支持不太好,在博客园有相同博文 牛顿迭代法可以推广到多元非线性方程组 $boldsymbol{F}(boldsymbol{x})=boldsymbol{0}$的情况,称为牛顿-- 拉夫逊方 ...

  6. matlab多元方程整数解,matlab多元非线性方程组解法

    流放之路一天赚几百是真的吗 你想太多了.如果是搬砖收入的话一天能有2E就不错了.当然脸正的时候也可以一次就赚上10E.5173上1E=3+. 用MATLAB解多元非线性方程组,CSS布局HTML小编今 ...

  7. matlab怎么求解多元非线性方程组,MATLAB求解多元非线性方程组

    我想求解一个非常复杂的方程组,原理很简单,就是解三个方程求出三个未知数a.b.c,但每一个方程都包含exp.log.sqrt函数,不知道能否用MATLAB求出解来,我试着写了程序,但是运行不出来,我第 ...

  8. python牛顿法解非线性方程组_萌新请教牛顿法求解三元非线性方程组

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 请问牛顿迭代法求解三元非线性方程组,不同迭代初值貌似有很多不同结果,如何求解到满足要求的解,0 FindRoot[{-6.565159793181527` ...

  9. c语言割线法解非线性方程,用割线法解非线性方程组.doc

    用割线法解非线性方程组 自动化学院1011203050 陈晓祺 拟牛顿法解下列方程组 先将拟牛顿法的程序代码如下 Function[r,m]=mulVlineF,x0,A, eps) Format l ...

  10. 数据可视化——Matlab平台读取颜色条图片制作出自己的颜色条

    数据可视化--Matlab平台读取颜色条图片制作出自己的颜色条 概述:基于matlab平台,读取一张已有的颜色条图片,依据该图片制作属于自己的颜色条,并将制作好的颜色条用于数据可视化. 绘制图形的颜色 ...

最新文章

  1. 面试 -- ListView对其指定的子Item进行单独的刷新
  2. 如果遇到Hadoop集群正常,MapReduce作业运行出现错误,如何来查看作业运行日志(图文详解)...
  3. 云端能力知几许?12人众测华为云企业级Kubernetes集群实力
  4. Dirichlet分布与多项分布的共轭性
  5. Hadoop教程(三):HDFS、MapReduce、程序入门实践
  6. 在 KubeSphere 中部署 Harbor
  7. 深入浅出学Hive:Hive参数
  8. 每日一题:leetcode456.132模式
  9. fckeditor代码总结
  10. oracle函数 TO_MULTI_BYTE(c1)
  11. 数据中心存储改造方案
  12. 正则应用之——日期正则表达式
  13. leetcode LCP 03. 机器人大冒险
  14. [转]我的世界观(一)
  15. 这些有趣的Python库一定会亮到你
  16. 漫谈Linux系统的二次定制
  17. (openCV 十)ML_SVM
  18. 公众号文章中怎样添加音乐、音频
  19. IBM将自愿离职变常态 柳传志教你优雅回应裁员
  20. 越狱Season 1-Episode 4: Cute Poison

热门文章

  1. 在windows下安装 Ruby on rails 的血泪史
  2. 如何自己制作身份证扫描件?
  3. MTK手机烧录与调试
  4. 富士通Fujitsu DPK1180K 打印机驱动
  5. 查看CPU和其他硬件温度的软件
  6. 饶阳彻查“黑砖窑”事件 卡酷族×××涉案人
  7. 【稀饭】react native 实战系列教程之数据存储
  8. 【Java】soap协议发送webservice请求工具类
  9. 化学公式编辑器如何给图形着色
  10. 手把手教你sql触发器的使用