如何用MATLAB求解该方程?麻烦提供源代码.方程见图,求i.
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/17 17:34:34
如何用MATLAB求解该方程?麻烦提供源代码.方程见图,求i.
如何用MATLAB求解该方程?麻烦提供源代码.
方程见图,求i.
如何用MATLAB求解该方程?麻烦提供源代码.方程见图,求i.
刚才的回答太复杂了.我的回答很直接,程序主要语句只有三句,运算速度也比他的快多了.在-2到2之间两个结果:i = -1.7072 或 -0.4088
但没有他的精度高.
程序如下.最后是运行结果.
x=-2:0.0001:2;
sum=ones(size(x))*1.26./1.2;
for n=1:20;
sum=sum-x.*(x+1).^n./((x+1).^n -1);
end
% sum;
abssum=abs(sum);
% smin=min(abssum),
n=find(abssum
为了看着舒服,把你的i替换成了x。为了提高计算效率,方程做了变换,具体的看下面推导 可以采用不动点迭代法。即选定一个初值(这里选初值为0),代入等式右端,得到一个新的x值,再代入又得到一个x,不停的重复,直到达到精度要求。 matlab代码如下: tic matlab计算结果: 迭代收敛!共迭代151次 兄弟,这个问题看起来简单,解决起来很需要有数学基础和编程基础,分太少了,别人都不愿意干。我刚好早起闲了,给你搭把手。再加点分比较合理。
x = 0 ;
kmax=1000;
for kk = 1:kmax
xt=1/(1+x) ; % (x+1)^(i-1) ;
S=0; % sum[(x+1)^(i-1)]
iS=0; % sum(1/S) ;
for i=1:20
xt = xt*(x+1) ;
S = S + xt ;
iS = iS + 1/S ;
end
x_new = (1.26/1.2 - iS)/20 ;
if( abs(x_new-x) < 1E-12 )
disp(' ')
info = sprintf('迭代收敛!共迭代%d次\nx=%.13f',kk,x_new);
disp(info)
disp(' ')
break;
end
x = x_new ;
end
if( kk == kmax )
disp(' ')
disp('迭代失败')
disp(' ')
end
toc
x=-0.4087705455543
Elapsed time is 0.001385 seconds.
clear;clc; n=1:20; f=@(i)1.2*sum(i*(i+1).^n./((i+1).^n-1))-1.26; fplot(f,[-2,1]);ylim([-1 1])%从图中可以看到方程有两个实数解,分别在-1.5和-1附近 i(1)=fzero(f,-1.5); i(2)=fzero(f,-1) arrayfun(f,i)