الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ماتلاب ماتلاب

بدأه طالبة رياضيات في 27 مارس 2010 · 11 رد · 2,053 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

1. Plot the function f defined on the interval [2; 3] by

f(x) = lnx- x + 1:5:

2. By using a grid, find a first approximation of the zero of f:

3. Use the bisection matlab program to find the zero of f with an accuracy of 10^-6

and deduce the number of iterations realized to achieve this accuracy.

البرمجه بالماتلاب ضروري جداً واجهت العديد من الاخطاء عندما قمت بها

#2

مابدي الحل الكامل

بس شرح وانا رح اطبق

بليييييييز

ضروررررري

#3

Error: The expression to the left of the equals sign is not a valid target for an assignment.

مامماهو حل هذا الخطأ

ضرورررري

#4

Error: Illegal use of reserved keyword "end".

??????????????????/

ماهو حل دا الخطأ

#5

السلام عليكم أختي الكريمة

استفسار بسيط قبل أن أشرح لك المسألة ...

طالبة رياضيات كتب:

f(x) = lnx- x + 1:5:

البرمجه بالماتلاب ضروري جداً واجهت العديد من الاخطاء عندما قمت بها

هل الرمز بين الرقم 1 والرقم 5 في الدالة أعلاه هو ":" أم "." ? :unsure: بمعنى هل هو الرقم 1.5

بالتوفيق

#6

السلام

لا يمكن أن تكون 1:5 لأن الدوال التي ستنتج ليس لها جذور على المجال المذكور في المسألة .... اذا هي القيمة 1.5

على أية حال هذا الكود مع التعليقات لحساب ما تريدين (أتمنى ان لا أكون قد خالفت قوانين المنتدى بوضع الحل):

%########### PLOT ################
x = 2:0.1:3;%Bounds
y = log(x)-x+1.5;%function
plot(x,y,'-bo','LineWidth',2,...
                       'MarkerEdgeColor','y',...
                       'MarkerFaceColor','r',...    
                   'MarkerSize',10)

title('F(x)= Log(x)-x+1.5','color','b' );%axis x name
xlabel('X','fontsize',12,'color','b')%axis y name
ylabel('Y','fontsize',12,'color','b')
grid on;%show grid


%########### Bisection ###########
a=2;%low bound
b=3;%high bound
eps=10^-6;% accurate
k = 0;%loop counter
while abs(b-a) > eps % loop condtion
x = (a + b)/2;% new division
y= log(x)-x+1.5;% function value in variable bound
y1=log(b)-b+1.5;% function value in variable bound
if sign(y) == sign(y1)%check if two function have a the same sign
b = x;% set new to get different sign
else
a = x;%set new to get different sign
end
k = k + 1;% show how loop counter to get eps
end
msgbox({strcat('Root is:   ', num2str(b));...
    strcat('Loop Counter:  ', num2str(k))},'Result','help','modal');

ما عليك لتشغيل الكود أعلاه الا بوضعه في ملف من نوع M.files

وتكون النتيجة كالتالي (لاحظي التطابق بين قيمة الجذر بيانيا" وخطيا")

post-76890-12698045886905_thumb.jpg

بالتوفيق :sleep:

تم تعديل هذه المشاركة بواسطة Devd في 28 مارس 2010 في 22:51

1
#7

وعليكم السلام

جزاك الله كل كل خير

الله يوفقك دنيا وآخرة

بس عندي سؤال

حليت السؤال من قبل لكن يظهر لي خطأ

ماهو حله

>> a=2;b=3;

>> y=inline('log(x)-x+1.5');

>> fa=feval(y,a);

>> fb=feval(y,b);

>> c=(a+b)./2;fc=feval(y,c);

>> epsilon=1e-6;

>> while and (f©~=0,(b-a)>epsilon);

niter=0

>>niter=0;

??? >>niter=0;

|

Error: Missing variable or function.

>> niter=0

niter =

0

>> niter=niter+1;

>> if f©*f(a)<0

b=c;

else

a=c;

end

??? Undefined command/function 'f'.

>>

تم تعديل هذه المشاركة بواسطة طالبة رياضيات في 29 مارس 2010 في 00:33

#8

صح هو ماقصدته 1,5

من السرعة كتبتها بطريقة غلط

ات

thanks

#9
طالبة رياضيات كتب:

وعليكم السلام

جزاك الله كل كل خير

الله يوفقك دنيا وآخرة

بس عندي سؤال

حليت السؤال من قبل لكن يظهر لي خطأ

ماهو حله

>> a=2;b=3;

>> y=inline('log(x)-x+1.5');

>> fa=feval(y,a);

>> fb=feval(y,b);

>> c=(a+b)./2;fc=feval(y,c);

>> epsilon=1e-6;

>> while and (f©~=0,(b-a)>epsilon);

niter=0

>>niter=0;

??? >>niter=0;

|

Error: Missing variable or function.

>> niter=0

niter =

0

>> niter=niter+1;

>> if f©*f(a)<0

b=c;

else

a=c;

end

??? Undefined command/function 'f'.

>>

اختي الغالية يفضل في المرة القادمة استخدام محرر الاكواد في المنتدى كي يتم فهم الكود بالشكل المطلوب

على اية حال الكود أعلاه فيه أخطاء نحوية وأجزم بأن هناك خطأ بالادخال ... وهذا الكود بعد التصحيح ...ويعطي نفس المخرجات في البرنامج الذي وضعته في

المشاركة الاولى

a=2;b=3;
y=inline('log(x)-x+1.5');
fa=feval(y,a);
fb=feval(y,b);
c=(a+b)./2;fc=feval(y,c);
epsilon=1e-6;
niter=0;
while and (fc~=0,(b-a)>epsilon);
c=(a+b)./2;
if f(c)*f(a)<0
b=c;
else
a=c;
end
niter=niter+1;
end
b
niter

ملاحظة:

يبدو أنك تختبرين الاكواد بوضعها سطرا" سطرا" في نافذة الاوامر ..وهذا يعطي أخطاء ..لذلك للقيام بتجربة ناجحة انسخي الكود أعلاه

مباشرة في نافذة الاوامر أو ضعيه في ملف وصفي وبعد ذلك قومي بتشغيله وفي كلتا الحالتين سوف تجدي اخراج الجذر والذي يمثل القيمة b=2.3577

اضافة الى عدد لفات الحلقة niter=20 اللازمة لايجاد الجذر

بالتوفيق

تم تعديل هذه المشاركة بواسطة Devd في 29 مارس 2010 في 01:54

#10

الف شكر

#11

احتاج منكم مساعدة :blush:

دورت على برامج لطرق حل المعادلات الخطية لإبرمجها في الماتلاب لكني ماعرفت

كيف اضعها كملفات في m-file للماتلاب :happy:

للطرق التالية

The bisection method

The false position method

The secant method

Newton’s method

Fixed point method

Nonlinear system resolution

تم تعديل هذه المشاركة بواسطة طالبة رياضيات في 2 أبريل 2010 في 23:12

مواضيع مشابهة