به محفل ریاضی ایرانیان خوش آمدید! لطفا برای استفاده از تمامی امکانات عضو شوید
+1 امتیاز
7,606 بازدید
در دانشگاه توسط
دوباره دسته بندی کردن توسط AmirHosein

برنامه با متلب بنویسید که تابع $f (x )$را دریافت کند و با استفاده از نقاط $x_{0}$ تا $x_{n}$ تابع درونیاب اسپلاین مکعبی (طبیعی )را محاسبه کرده و سه نمودار $s(x) , f (x )$ و خطا را رسم کند.

توسط
@behruz
سلام میشه توضیح بدین چرا Tرا به صورت بردار تعریف کرده اید؟
یه سوال دیگه ای اینکه
T=vpa(x)
دقیقا چیکار میکنه؟
من خودم کدهای بدست آوردن Mj ها را نوشته ام.ولی با نوشتن تابع چند ضابطه ای مشکل دارم.
ممنون میشم کمکم کنید(میخوام بفهمم نه اینکه کپی پیست کنم..چون برنامه شما جواب میدهد ولی نمیفهممش)

1 پاسخ

می توانید به پاسخ(ها) امتیاز دهید یا آن را انتخاب کنید.

+2 امتیاز
توسط behruz (1,432 امتیاز)
ویرایش شده توسط fardina

من برنامه زیر رو خودم برا درس آنالیز عددی پیشرفته داشت نوشتم و عمل کرد امیدوارم براتون مفید واقع بشه:

دانلود


clc
clear
n = input ('Please enter number of points:\n');

xx = zeros(1,n);
y = zeros(1,n);

for i=1:n
    xx(i) = input('Enter x: ');
    y(i) = input('Enter y: ');
end

h = zeros(1,n);

for j=1:(n-1)
    h(j+1) = xx(j+1)-xx(j);
end

d = zeros(n-2,1);

for j=1:(n-2)
    d(j,1) = 6/(h(j+1)+h(j+2))*((y(j+2)-y(j+1))/h(j+2)-(y(j+1)-y(j))/h(j+1));
end

landa = zeros(1,n);

for j=1:(n-3)
    landa(j) = h(j+2)/(h(j+1)+h(j+2));
end

mu = zeros(1,n);

for j=1:(n-3)
    mu(j+1) = h(j+1)/(h(j+2)+h(j+3));
end

A = zeros(n-2);

for i=1:(n-2)
    A(i,i) = 2;
    if i<n-2
        A(i,i+1) = landa(i);
    end
    if i>1
        A(i,i-1) = mu(i);
    end
end    


N = inv(A) * d;

M=zeros(1,n);
for i=2:(n-1)
       M(i)=N(i-1,1);
end

e=zeros(1,n-1);
f=zeros(1,n-1);

for j=1:n-1
    e(j)=((y(j+1)-y(j))/h(j+1))-(h(j+1)/6)*(M(j+1)-M(j));
    f(j)=y(j)-((h(j+1)^2)*M(j))/6;
end

syms x
T=zeros(1,n-1);
T=vpa(x);
for j=1:(n-1)
    T(j,1)=(((x-xx(j+1))^3)/(-6*h(j+1)))*M(j)+(((x-xx(j))^3)/(6*h(j+1)))*M(j+1)+e(j)*(x-xx(j))+f(j);
end
expand(simplify(T));
for j=1:(n-1)
    disp(T(j,1));
end
for j=1:(n-1)
ezplot(T(j,1));
hold on;

end
توسط
ویرایش شده توسط admin
+1
@behmor67
سلام من این کد رو تو متلب امتحان کردم خطا میده و در ابتدای کار اصلا اجرا نمیشه! چرا اینجوری میشه؟ چطوری برای شما عمل کرده؟
توسط admin (1,760 امتیاز)
+2
خانم زری:
شما دیدگاه گذاشتید بعد سوالتونو پنهان کردید چطوری میخواید behmor67 بهتون پاسخ بده؟
لطفا هیچوقت سوالی که پاسخ گرفته رو پنهان نکنید. تا قبل از پاسخ گرفتن میتونید سواتونو پنهان کنید.
لطفا به قوانین سایت احترام بگذارید. بارها شما این سوالو پنهان و دوباره نمایش دادید. در غیر اینصورت دسترسی آی پی شما به سایت قطع میشه.
توسط
سلام اگر ممکن است اسپلاین مکعبی (طبیعی نباشد) را بگذارید.
توسط
+1
@fardina
سلام میشه توضیح بدین چرا Tرا به صورت بردار تعریف کرده اید؟
یه سوال دیگه ای اینکه
T=vpa(x)
دقیقا چیکار میکنه؟
من خودم کدهای بدست آوردن Mj ها را نوشته ام.ولی با نوشتن تابع چند ضابطه ای مشکل دارم.
ممنون میشم کمکم کنید(میخوام بفهمم نه اینکه کپی پیست کنم..چون برنامه شما جواب میدهد ولی نمیفهممش)
توسط fardina (17,622 امتیاز)
+2
@behruz
خانم فاطمه من برنامه رو ننوشتم.
آقای behruz نوشتن.
ایشون رو تگ کردم که متوجه دیدگاهتون بشن و بهتون کمک کنن.
این چرخ فلک که ما در او حیرانیم<br> فانوس خیال از او مثالی دانیم<br> خورشید چراغ دان و عالم فانوس<br> ما چون صوریم کاندرو حیرانیم
...