- 3
- 0
- 约1.19万字
- 约 10页
- 2019-04-05 发布于湖北
- 举报
常用计算方法
1.超越方程的求解
一超越方程为
x(2lnx – 3) -100 = 0
求超越方程的解。
[算法]方法一:用迭代算法。将方程改为
SKIPIF 1 0
其中x0是一个初始值,由此计算终值x。取最大误差为e = 10-4,当| x - x0| e时,就用x的值换成x0的值,重新进行计算;否则| x - x0| e为止。
[程序]P1_1abs.m如下。
%超越方程的迭代算法
clear %清除变量
x0=30; %初始值
xx=[]; %空向量
while 1 %无限循环
x=100/(2*log(x0)-3); %迭代运算
xx=[xx,x]; %连接结果
if length(xx)1000,break,end %如果项数太多则退出循环(暗示发散)
if abs(x0-x)1e-4,break,end %当精度足够高时退出循环
x0=x; %替换初值
end %结束循环
figure %创建图形窗口
plot(xx,.-,LineWidth,2,MarkerSize,12)%画迭代线.-表示每个点用.来表示,再用线连接
grid on %加网格
fs=16; %字体大小
title(超越方程的迭代折线,fontsize,fs)%标题
xlabel(\itn,fontsize,fs) %x标签
ylabel(\itx,fontsize,fs) %y标签
text(length(xx),xx(end),num2str(xx(end)),fontsize,fs)%显示结果
[图示]用下标作为自变量画迭代的折线。如P0_20_1图所示,当最大误差为10-4时,需要迭代19次才能达到精度,超越方程的解为27.539。
[算法]方法二:用求零函数和求解函数。将方程改为函数
SKIPIF 1 0
MATLAB求零函数为fzero,fzero函数的格式之一是
x = fzero(f,x0)
其中,f表示求解的函数文件,x0是估计值。fzero函数的格式之二是
x = fzero(f,[x1,x2])
其中,x1和x2表示零点的范围。
另外MATLAB还有求解函数solve,计算非线性方程和方程组的符号解。
[程序]P1_2fzero.m如下。
%超越方程的求法
clear %清除变量
x=10:0.1:100; %自变量向量
f=inline(2*log(x)-3-100./x) %定义内线函数 用的是字符窜
figure %创建图形窗口
plot(x,f(x),LineWidth,2) %画曲线
grid on %加网格
x0=fzero(f,[20,30]); %求方程的零点
%x0=fzero(f,20); %求方程的零点
hold on %保持图像
plot(x0,f(x0),.) %画零点
title(超越方程的解,fontsize,16) %标题
xlabel(\itx,fontsize,16) %x标签
ylabel(\itf,fontsize,16) %y标签
text(x0,0,num2str(x0),fontsize,16) %标记零点
x0=solve(2*log(x)-3-100./x)
原创力文档

文档评论(0)