انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
حل معادله به کمک fsolve (در متلب)

حل معادله به کمک fsolve (در متلب)

#1
سلام. من یک معادله رو برای مقادیر مختلف k و T میخوام حل کنم.
این معادله هست: C=s0*normcdf(d1)-K*exp(-mu*(T))*normcdf(d2)
و d1  و d2 هم به ان صورت تعریف شده:
d1=(log(s0/K)+(mu+0.5*(y^2))*T)/y*sqrt(T); d2=d1-y*sqrt(T)
y مجهول معادله هست.
این کد ماست برای حل کردن با fsolve:

  
کد پی‌اچ‌پی:
function F=basicfun(x)
mu=0.0011;
callt=[78.80,78.2,80.4,82.9,89.7;48.80,49.8,53.3,57.7,66.4;28.80,32.7,37.4,43,53.1;20.3,24.8,30.4,36.6,47.2;12.2,18.1,24.3,30.8,41.5;6.5,12.7,19,25.5,36.6;1.3,5.5,10.9,17,27.3;0.35,1.95,5.8,10.8,20.2;0.25,0.45,2,5.1,12.4];
T=[0.00555;0.0889;0.17222;0.3388;0.75];
k=[450,480,500,510,520,530,550,570,600];
s0=526.88;
d1=zeros(1,9);
d2=zeros(1,9);
for 
i=1:9
    
for j=1:5
        d1
(i)=(log(s0/k(i))+(mu+0.5*x^2)*T(j))/(y*sqrt(T(j)));
        
d2(i)=d1(i)-(y*sqrt(T(j)));
    
end
end
F
=s0*normcdf(d1)-k*exp(-mu*T)*normcdf(d2)-callt;
end 


کد پی‌اچ‌پی:
x0=0.7;
 [
x,fval]=fsolve(@basicfun1,x0

اما انگار در تعریف تابع اشکال هست! ممنون میشم راهنمایی کنید. 
پاسخ

حل معادله به کمک fsolve (در متلب)

#2
سلام.
شما نام تابع را برابر basicfun انتخاب کرده اید، اما بعدا نام basicfun1 فراخوانی شده است :

کد پی‌اچ‌پی:
x0=0.7;
 [
x,fval]=fsolve(@basicfun1,x0

کد را تصحیح می کنیم :

کد پی‌اچ‌پی:
x0=0.7;
 [
x,fval]=fsolve(@basicfun,x0

اما هنوز هم خطا خواهد داد. زیرا مقداری برای متغیر y در کدهای تابع تعریف نشده است. پس مقدار y را در کدهای تابع مشخص کنید.

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط bonbon

حل معادله به کمک fsolve (در متلب)

#3
(۱۳۹۴/۰۳/۱۶, ۰۶:۰۲ ب.ظ)'admin' نوشته: سلام.
شما نام تابع را برابر basicfun انتخاب کرده اید، اما بعدا نام basicfun1 فراخوانی شده است :

کد پی‌اچ‌پی:
x0=0.7;
 [
x,fval]=fsolve(@basicfun1,x0

کد را تصحیح می کنیم :

کد پی‌اچ‌پی:
x0=0.7;
 [
x,fval]=fsolve(@basicfun,x0

اما هنوز هم خطا خواهد داد. زیرا مقداری برای متغیر y در کدهای تابع تعریف نشده است. پس مقدار y را در کدهای تابع مشخص کنید.



 


سلام. ممنون
دارم اشتباه از fsolve استفاده میکنم یعنی؟
y مجهوله و هدف از حل معادله بدست آورن y هست. منظورتون از تعریفش چیه؟
 
پاسخ

حل معادله به کمک fsolve (در متلب)

#4
فک میکنم قبل از این دستورات باید y رو به عنوان یک متغییر سمبلیک تعریف کنید تا نیاز به مقداردهی اولیه نداشته باشه
بنویسید 
syms y
پاسخ

حل معادله به کمک fsolve (در متلب)

#5
اگه ممکنه به طور کامل در مورد نحوه استفاده از دستور fsolve توضیح بدین
ممنون میشم
من یک دستگاه معادلات غیرخطی و یک حدس اولیه از جواب دارم ومیخوام از این دستور استفاده کنم
ایا میشه؟
تابعی ندارم !!!!!!!!!!!!
پاسخ
 سپاس شده توسط شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان