用Matlab求一道数值分析的题

求方程x=e^(-x)在x=0.5附近的根,精确到10^(-8)。
(1)取y(x)=e^(-x),用简单迭代法 x(n+1)=y[x(n)]计算。
(2)用加快收敛的迭代格式 x(n+1)=a*y[x(n)]+(1-a)*x(n) , a=0.625计算

第1个回答  2006-12-09
%(1)取y(x)=e^(-x),用简单迭代法 x(n+1)=y[x(n)]计算。
clc;clear
err=1;
k=1;
y=0.5;
format long
while abs(err)>10e-8
y=exp(-y);
err=y-exp(-y);
k=k+1;
end
k
y
err

%(2)用加快收敛的迭代格式 x(n+1)=a*y[x(n)]+(1-a)*x(n) , a=0.625计算
a=0.625;
err1=1;kk=1;yy=0.5;
while abs(err1)>10e-8
%for kk=1:10
yy=exp(-yy);
yy1=a*yy+(1-a)*exp(-yy);%x(n+1)=a*y[x(n)]+(1-a)*x(n)
err1=yy1-yy;
kk=kk+1;
end
kk
yy
err1

运行结果:
k = 26
y = 0.56714333810549
err = 7.474599861279074e-008

kk = 24
yy = 0.56714343869357
err1 = -8.714322441427669e-008

精确解:
>> x=eval(solve('x=exp(-x)'))

x = 0.56714329040978本回答被提问者采纳
第2个回答  2011-05-12
//这个函数就是计算泊松分布的概率密度公式的,我采用该算法的伪码的方式,希望kutpbpb的回答能对

你有所帮助!

function [Px] = poisspdf(X,lambda) //poisspdf函数定义输入x,lambda 输出Px参数列表

warning 。。。。。关闭关于。。。的警告

if 泊松分布中的参数lambda小于0,

输出:参数错误,lambda应该大于0,程序结束。
end

if X的长度等于1,则x不是数组,则这个点处得概率密度

创建数组temp,长度为X,包含元素1—X;
Px = lambda 与 e的 -lambda/X的阶乘 次幂的乘积;
else X是数组,求数组中每个元素的概率密度

创建数组 temp_Px ,长度跟数组x相等,并且包含1到lenth(x);
for循环
i 从1 到 length(x)
创建temp数组,长度为i,并且元素为1到i;
temp_Px(i)等于 lambda 与 e的 -lambda/i的阶乘的次幂的乘积;
end
Px=temp_Px;
end
相似回答