声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1055|回复: 2

[编程技巧] 问题已解决!

[复制链接]
发表于 2006-7-14 10:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
下面是一个迭代求一个数的程序,怎么总是出错呢?帮忙看一下,谢谢了!
function diedai1()
%   1) 给定一个初值A1  然后求误差R  如果达到精度要求 A1即为所求的解  否则转到2)
%   2)由公式求出A2=A1+DA1  然后求误差R 如果达到精度要求 A2即为所求的解 否则再迭代即转到1)
A1=[0.1 0.02];% 给定一个初值
%  如果误差很小达到精度要求就不要进行下面的迭代求解了  否则进行迭代求解
K=1.5;
C=0.01;
M=1.0;
w=0.3;
F=w^2;
R=(A1+2*C*A1+K*A1-F);  % 误差  由给定一个初值A1求误差R  如果达到精度要求 A1即为所求的解  否则 迭代求解A2
%   迭代求解

while abs(R)>0.0001

  KK=w^2*M+w*C+K;
  RR=(w^2*M+w*C+K)*A1-F;  %这里用A1有错吗
  DA1=-KK\RR;
  A2=A1+DA1     % 由公式求出A2=A1+DA1

  R=(A2+2*C*A2+K*A2-F); %求误差R 如果达到精度要求 A2即为所求的解 否则再迭代  即转到1)
  A1=A2; % 这里有问题吗
end

[ 本帖最后由 siyanger 于 2006-7-15 21:28 编辑 ]
回复
分享到:

使用道具 举报

发表于 2006-7-14 11:32 | 显示全部楼层
问题在于(w^2*M+w*C+K)*A1=F,所以RR=0,所以DA1=0,所以A2=A1,所以循环后R没有任何变化。
你需要修改一下DA1以及RR的修正公式。
 楼主| 发表于 2006-7-14 13:59 | 显示全部楼层
谢谢你的回复!

问题解决了。我修改了其中的一个公式就行了。
谢谢你!!调程序真是件不容易的事啊!

[ 本帖最后由 mjhzhjg 于 2007-6-11 20:08 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-20 04:26 , Processed in 0.066006 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表