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



حل معادله با matlabزمان کنونی: ۱۳۹۵/۰۹/۱۸، ۰۲:۲۰ ب.ظ
کاربران در حال بازدید این موضوع: 2 مهمان
نویسنده: rahgozar
آخرین ارسال: admin
پاسخ 16
بازدید 16098

رتبه موضوع:
  • 1 رای - 1 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
حل معادله با matlab

حل معادله با matlab

#1
سلام
دوستان کسی میتونه به من کمک کنه این معادله رو با نرم افزار matlab حلش کنم ؟
واسه آخرین مرحله پایان نامم باید حلش کنم ...


v = 1


L]f=0.016



مجهول : g , K , n

می خوام مقادیر مجهول رو بدست بیارم .


دوستان جواب رو نمیخوام ، می خوام خودم یاد بگیرم ، چون چند بار باید انجام بدم .
   
پاسخ

حل معادله با matlab

#2
سلام .
بعد از جایگذاری V و [L]f در معادله ، آنگاه سه مجهول داریم . دستور solve برای حل معادلات به کار میره اما چون سه مجهول داریم ، پاسخ مربوط به یک متغیر رو بر حسب دو متغیر دیگر می نویسه . کدهای متلب به صورت زیر میشه :

کد:
clear all
close all
clc

syms g K n
solve('1*(1+(K*0.016)^n)=g*(K*0.016)^n',g)

دقت کنید که در انتهای پرانتز دستور solve ، نام متغیر g را نوشته ایم که یعنی g بر حسب دو متغیر مجهول دیگر محاسبه شود .
با اجرای کد متلب بالا ، نتیجه به صورت زیر هست :

کد:
ans =

((0.016*K)^n + 1.0)/(0.016*K)^(1.0*n)

حالا فرض کنید معادله رو بر حسب K بخواهیم حل کنیم ، کدهای متلب زیر رو می نویسیم :

کد:
clear all
close all
clc

syms g K n
solve('1*(1+(K*0.016)^n)=g*(K*0.016)^n',K)

نتیجه اجرای کد متلب بالا به صورت زیر هست :

کد:
Warning: The solutions are parametrized by the symbols:
k = Z_ intersect Dom::Interval([(0.31830988618379067153776752674503*(0.5*Im(ln(1/(g -
1.0))/n) - 1.5707963267948966192313216916398))/Re(1/n)],
(0.31830988618379067153776752674503*(0.5*Im(ln(1/(g - 1.0))/n) +
1.5707963267948966192313216916398))/Re(1/n))

> In solve at 94
  In Untitled2 at 6

ans =

62.5*(1/exp((6.283185307179586476925286766559*k*i)/n))*(1/(g - 1.0))^(1/n)

و برای حل معادله بر حسب n ، کد متلب زیر را می نویسیم :

کد:
clear all
close all
clc

syms g K n
solve('1*(1+(K*0.016)^n)=g*(K*0.016)^n',n)

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

کد:
ans =

log(1/(g - 1.0))/log(0.016*K)
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط zzccflpkup

حل معادله با matlab

#3
اگر معادلات بیشتری در مورد این متغیرها پیدا کنید ، اون وقت می توانید از دستور solve در متلب برای حل دستگاه چند معادله و چند مجهول استفاده کنید .
به عنوان مثال ، کد متلب زیر رو برای حل دو معادله ببینید :

کد:
clear all
close all
clc

syms x y;
f = 3*x - 2*y -1;
g = x + 2*y;
[x y] = solve(f, g)

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

کد:
x =

1/4


y =

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

حل معادله با matlab

#4
سلام
ممنون از وقتی که گذاشتین و جوابی که دادین
من اولین باره که با متلب کار می کنم و چون داده های پابان نامم خیلی مهم هستن برام واجبه که به درستی یاد بگیرم
این طور که من متوجه شدم باید این 3 معادله رو بدست بیارم و حل 3 معادله 3 مجحول


کد:
syms g K n ;
g= ((0.016*K)^n + 1.0)/(0.016*K)^(1.0*n)

g =

(((2*K)/125)^n + 1)/((2*K)/125)^n
K=62.5*(1/exp((6.283185307179586476925286766559*K*i)/n))*(1/(g - 1.0))^(1/n)

K =

(125*exp(-(K*pi*2*i)/n)*(1/((((2*K)/125)^n + 1)/((2*K)/125)^n - 1))^(1/n))/2

n=log(1/(g - 1.0))/log(0.016*K)

n =

log(1/((((2*K)/125)^n + 1)/((2*K)/125)^n - 1))/log(exp(-(K*pi*2*i)/n)*(1/((((2*K)/125)^n + 1)/((2*K)/125)^n - 1))^(1/n))

[g K n]=solve(g,K,n)

نتیجه اجرا :

کد:
xWarning: 3 equations in 2 variables.
In C:\Program Files\MATLAB\R2012b\toolbox\symbolic\symbolic\symengine.p>symengine at 54
  In mupadengine.mupadengine>mupadengine.evalin at 97
  In mupadengine.mupadengine>mupadengine.feval at 150
  In solve at 160
Warning: Explicit solution could not be found.
In solve at 169

g =

[ empty sym ]


K =

     []


n =

     []

Sad
پاسخ

حل معادله با matlab

#5
شما باید از مسئله خود 3 معادله داشته باشید نه اینکه 1 معادله را به 3 معادله تبدیل کنید .
چون شما 3 معادله و 3 مجهول دارید می توانید به 2 مجهول مقدار دلخواه بدهید تا جواب متناظر با آنها برای مجهول سوم به دست آید .
این که من سه بار کد نوشتم برای این بود که نشان بدهم هر کدام از 3 متغیر را می توان بر حسب 2 تای دیگر به دست آورد . بنابراین می توانید یکی از آن 3 کد را انتخاب کنید .
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط zzccflpkup

حل معادله با matlab

#6
من فقط می تونم مقادیر g رو به صورت دلخواه قرار بدم
پاسخ
 سپاس شده توسط zzccflpkup ، bubrenula

حل معادله با matlab

#7
g رو مقدار دلخواه بدید . n رو هم چون توان هست می توانید چندین عدد صحیح دلخواه بدهید و سپس برای هر n ، مقدار K متناظر با آن را تعیین کنید .
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

حل معادله با matlab

#8
سلام
من اینبار با یک مسئله دیگه امدم

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

v=1.481,1.636,1.939,2.383,2.764,3.103

L]f=0.0158,0.0162,0.0166,0.0173,0.0182,0.019]
   
در اینجا من باید ابتدا داده هامو فیت کنم و سپس مقادیر مجهول(g,K,n) رو بدست بیارم .
البته مقادیر g رو باید به نحوه ای بدست بیارم که هم عدد صحیح باشه و هم منجر بشه K بزرگترین مقدارشو پیدا کنه .
ممنون میشم اگه راهنماییم کنید .
کد هایی که خودم وارد می کنم به این صورت هست :

کد:
clc
clear all
% Load data:
v=[1.481,1.636,1.939,2.383,2.764,3.103]'
Lf=[0.0158,0.0162,0.0166,0.0173,0.0182,0.019]'
hold on
plot(v,Lf,'r')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
f = fittype('g*(K*Lf).^n./(1+(K*Lf).^n)','independent','Lf');
[fit,fitinfo] =fit(v,Lf,f,'StartPoint',[1 1])

به جای g مقادیر رو میذارم که باید معمولان بالای 5 باشه
ولی جواب رو نمی ده و خطا میده ...
پاسخ
 سپاس شده توسط zzccflpkup

حل معادله با matlab

#9
سلام .
خوش اومدی دوست عزیز . Smile
دلیل استفاده از دستور fit چیه ؟
مثالی در متلب بوده که نشون داده برای این منظور مناسب هست ؟
یعنی منظورم اینه که فکر می کنم اول باید مجهولات پیدا بشه و بعد اطلاعات رو فیت کنید .
دستور fit تا اونجایی که من میدونم از درون یابی استفاده می کند تا کل مقادیر لازم برای ترسیم اطلاعات ، فراهم شود . اگر مجهولاتی در معادله باشه ، دیگه درست عمل نمیکنه .
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط zzccflpkup

حل معادله با matlab

#10
khob man ye titrasion anjam dadam
ke inha javabashe
vali khata dare ye meghdari
vase inam ebteda khastam fit konam
ghablan dostane man az urika estefade mikardan vase fit kardan
va bad majhola ro khode narm afzar bedar miare

dostanam ba urika in javabo gerftan :
g=6 k=52.84
n=5.92 error=0.13
پاسخ
 سپاس شده توسط zzccflpkup

حل معادله با matlab

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

حل معادله با matlab

#12
نرم افزار یوریکا بوده ولی من می خوام با مطلب کار کنم چون جوایش دقیقتره
پاسخ

حل معادله با matlab

#13
من یک پیشنهادی دارم . گفتید مقادیر g باید عدد صحیح باشه . خوب ابتدا g رو به صورت زیر تعریف کنید :

کد:
g=1:1:100;

یعنی اعداد 1 تا 100 رو برای اون در نظر بگیرید . سپس n رو به صورت زیر تعریف کنید :

کد:
n=1:0.5:100;

البته اگر عدد 0.5 با عددی کوچکتر جایگزین کنید ، اون وقت دقت جواب ها بهتر خواهد بود ، اما فعلا می تونید از 0.5 استفاده کنید .
خوب ، حالا معادله را برای مقادیر مختلف g و n حل کنید و K رو بدست آورید . اینکه K را بر اساس مقادیر مختلف آن دو تای دیگر به دست می آوریم به این دلیل است که شما گفتید باید بزرگترین K پیدا بشه . بنابراین به ازای هر مقدار مختلف g و n از مقادیر ممکن تعریف شده برای آنها ، یک K داریم و اکنون باید بزرگترین K را انتخاب کنیم .

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

حل معادله با matlab

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

حل معادله با matlab

#15
من هر مدل کد میزنم error میده
میشه که برای نوشتن کدها راهنماییم کنید ؟؟
پاسخ

حل معادله با matlab

#16
روش حل معادله رو قبلا براتون توضیح دادم .
سایر موارد رو باید با دستور for ، حلقه بسازید که هر بار برای یک مقدار V و Lf و همچنین برای این مقدار V و Lf باید دوباره از حلقه های for استفاده کنید تا هر بار برای انتخاب های متفاوتی از g و n معادله حل بشه .
سایر موارد ، کدنویسی مرسوم در متلب است .
بار ها و بارها ، کدها و خطاها رو چک کنید تا مشکل رو متوجه بشید و بفهمید که خطا از چیه و در این زمینه کس دیگه ای نمیتونه کمکتون کنه .
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ


پرش به انجمن:


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

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)