Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2010-12-08, 12:05   #1
lansedetangge
初级会员
 
注册日期: 2010-12-08
帖子: 2
声望力: 0
lansedetangge 正向着好的方向发展
默认 求解一个非线性方程

f(x)=ln((513+0.6651*x)/(513-0.6651*x))-x/(1400*0.0918)
求解该方程的非零近似解,选择牛顿法即x1=x0-f(x0)/f'(x0)
首先建立fun函数的m文件:
function [f1,f2]=fun(x)
f1=log((513+0.6651*x)/(513-0.6651*x))-x/(1400*0.0918);
f2=-(((0.6651*(0.6651*x+513))/(0.6651*x-513)^2-0.6651/(0.6651*x-513))*(0.6651*x-513))/(0.6651*x+513)-0.0077808901338313103018985371926548;

然后用牛顿迭代公式编写算法:
m=1.0e-10;
N=20;
n=1;
x1=10;
[f1,f2]=fun(x1);
x=x1-f1/f2;
while abs(x-x1)>m
if n<N
n=n+1;
x1=x;
[f1,f2]=fun(x1);
x=x1-f1/f2;
else
disp('失败!')
break
end
end


得到x =

-1.4006e-015
这是非零解么?
lansedetangge 当前离线   回复时引用此帖
旧 2012-02-28, 16:37   #2
dogelaa
初级会员
 
注册日期: 2012-02-28
年龄: 35
帖子: 2
声望力: 0
dogelaa 正向着好的方向发展
默认 回复: 求解一个非线性方程

这个从程序来说应该是实际的数值解,但是否可以近似(注意所有非零解都是近似的)作为非零解取决于你的初设精度。本身在迭代时,你的控制精度“高达”10E-10,在此精度下,此解没有实际意义,可认为是0解。根据原函数,其在零点附近的波动十分之小。试验x=-1.00E-9~x=+1.00E-9,带入原方程可以得到其输出结果始终在+-5.2E-12之间。其实,此方程没有非零实数解。
dogelaa 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 13:52


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.