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


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

برنامه نویسی در زمینه ریاضیات سرمایه گذاری (در متلب)

#1
سلام
من یک برنامه میخوام بنویسم که دو قسمت داره.
یک رابطه به این شکل وچود داره:
L*((((1+i)^n)-1)/i)-R*((((1+i)^n)-1)/i)-x=0
قسمت الف با داشتن L,R,i,n باید x رو بدست بیاریم.
در قسمت ب این مقادیر و همین طور x که بدست اومده این معادله رو حل میکنه:
R*((1+i)^n-1)+x=L*(1+j)^n
یعنی j رو حساب کنیم.
قسمت اول رو با نوشتن معادله بر حسب x و بعد مقدار دهی با دستور subs نوشتم
اما قسمت دوم برحسب j که مینویسم ارور میاد که n و x باید حقیقی باشه
و همین طور با solve که نوشتم مقدار میدم اجرا نمیشه!
یعنی من اشتباه میکنم در مقدار دهی. چطور میتونم به متغیر ها مقدار بدم و با solve حلش کنم.
و کلاً جور دیگه ای میشه این برنامه رو نوشت؟ و این x رو چطور باید جایگزین کرد در معادله بعد؟
مرسی از راهنماییتون!
پاسخ

برنامه نویسی در زمینه ریاضیات سرمایه گذاری (در متلب)

#2
سلام.
کدهاتون رو در اینجا بنویسید تا بررسی کنم (کامل باشد تا بتوانم آن را اجرا کرده و خطا را ببینم).


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

برنامه نویسی در زمینه ریاضیات سرمایه گذاری (در متلب)

#3
 
کد پی‌اچ‌پی:
syms L R n i x j
x
=(L*((1+i)^n))-R*((((1+i)^n)-1)/i);
subs(x,[L,R,i,n],[1000,100,.05,14])
 
j=nthroot(ans+((R*((((1+i)^n)-1)/i))/L),n)-

از بین کدهایی که نوشتم این بهتر بود! برای همین این رو نوشتم اینجا!
 
پاسخ

برنامه نویسی در زمینه ریاضیات سرمایه گذاری (در متلب)

#4
شما هنگام استفاده از دستور nthroot ، باید دو عدد حقیقی را به کار ببرید، ولی شما مواردی را به دستور می دهید که دارای نمادهای سمبلیک (مثلا R) می باشند. حتی اگر متغیر برابر یک عدد هم باشد ولی نوع آن از نوع سمبلیک باشد، باز هم دستور مورد نظر خطا می دهد. برای همین، بنده ابتدا مقادیر سمبل ها را جایگرین می کنم و سپس نوع آن را هم با دستور double ، به double تبدیل می کنم :

کد پی‌اچ‌پی:
clear all
close all
clc

syms L R n i x j
x
=(L*((1+i)^n))-R*((((1+i)^n)-1)/i);
x=subs(x,[L,R,i,n],[1000,100,.05,14])
y=x+((R*((((1+i)^n)-1)/i))/L)
y=subs(y,[L,R,i,n],[1000,100,.05,14])
y=double(y)
n=14
j
=nthroot(y,n)-

نتیجه اجرای کد متلب بالا :

کد پی‌اچ‌پی:
=
 
32880067478491319/1638400000000000
 
 
=
 
(
R*((1)^1))/(L*i) + 32880067478491319/1638400000000000
 
 
=
 
18045553671767168181/819200000000000000
 

=

   
22.0283


=

    
14


=

    
0.2472 

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

برنامه نویسی در زمینه ریاضیات سرمایه گذاری (در متلب)

#5
خیلی خیلی ممنونم 
پاسخ
 سپاس شده توسط admin ، شماره مجازی امارات


پرش به انجمن:


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