سؤال

أحاول كتابة وظيفة ماتلاب التي تحسب عدد المصطلحات ، م ، فإنه يأخذ الكسر الذهبي للوصول إلى أرقام ن من الدقة.هنا هو ما لدي حتى الآن ، ولكن أظل الحصول على إخراج 0.

phi = (1+sqrt(5))/2;
p=1;
p=[1+1/p];
LoopCounter = 0;
while (phi-p)>10^(-n)
    p=[1+1/p];
    LoopCounter = LoopCounter + 1;
end
m=LoopCounter;
m

أعتقد أن هذا سؤال شائع لأولئك الذين يدرسون نظرية الأعداد أو بدأوا للتو في تعلم ماتلاب.أي نصيحة?شكراً!

هل كانت مفيدة؟

المحلول

ال while الشرط مفقود abs.يجب أن يكون

while abs(phi-p)>10^(-n)

مع التعليمات البرمجية الخاصة بك كما هو عليه ، والقيمة الأولية لل p (أي 2) أكبر من phi, ، لذلك phi-p هو سلبي و while لم يتم إدخال حلقة.لهذا السبب تحصل على m يساوي 0.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top