求取多解的非线性代数方程所有数值解的方法-Matlab(转载小木虫)

本文介绍了如何使用Matlab解决非线性代数方程组,获取所有数值解的详细步骤。通过实例解析,展示了在Matlab环境中运用特定算法来寻找多解的过程。
摘要由CSDN通过智能技术生成
0. 引言
一些非线性方程在实数范围内存在多解,本帖要讨论的正是求得所有的这些解的方法。多解方程,其解的个数不同,求解难度也不同,本帖将针对解个数较少和解个数较多的两种情况,各举一例进行讨论,并提出相应的方法和代码,作者希望本帖提出的方法和代码能具有较强的普适性。
本帖所采用软件及其版本:
(1)1stOpt 1.5
(2)MATLAB 2010a
(3)Maple 18

1. 解个数较少的情况
例:求出如附图1所示方程的全部解(方程出处:http://muchong.com/bbs/viewthread.php?tid=9911763&fpage=1)。
具体步骤如下:

步骤1:画出方程图形,直观上确定解的个数
为了画出方程图形,首先须正确输入该方程,如果输入的原始方程都是错误的,就更不用谈结果的正确性。
因此,在步骤1中还包括一个方程输入预检验的步骤。

步骤1.1:方程输入预检验
根据附图1,可将原始方程写为:
y=(25-(3/25)*k)^2-9.8*k*tanh((1/10)*k)*(1+(0.125e-2*(8+cosh(.4*k)-2*tanh(.1*k)^2))/sinh(.1*k)^4) 
由于待求解方程形式较为复杂,须检查方程的输入是否正确。这里用到的软件是Maple,利用该软件强大的二维显示功能,可判断方程输入的正误。
将上述方程在Maple中的显示结果如附图2所示。
仔细比对可知,原方程输入无误。

步骤1.2:方程图形绘制
绘制原方程的图形曲线时,横轴坐标的范围尽量大一些;同时绘制出直线y=0,该直线与原方程曲线的交点,即为方程的解。
对于本例,MATLAB代码如下:CODE:
clear all;clc
n=5000;   
k=linspace(-1000,5000,n);
y=(25-(3/25)*k).^2-9.8*k.*tanh((1/10)*k).*(1+(0.125e-2*(8+cosh(.4*k)-2*tanh(.1*k).^2))./sinh(.1*k).^4);
figure
plot(k,y,'b',[min(k) max(k)],[0 0],'r'),axis([min(k) max(k) min(y) max(y)]);

上述代码中,n表示绘图时散点
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值