سئوالات و مشکلات در متلب (MATLAB)

NASIM.1111

عضو جدید
سلام خواهش میکنم کمکم کنید معادله X[SUP]3[/SUP]/3+X[SUP]2[/SUP]/2+2X+1/3 هم حل بشه هم ریشه هاش به دست بیاد تو نرم افزار متلب
 

mitra*

کاربر بیش فعال
کاربر ممتاز
سلام خواهش میکنم کمکم کنید معادله X[SUP]3[/SUP]/3+X[SUP]2[/SUP]/2+2X+1/3 هم حل بشه هم ریشه هاش به دست بیاد تو نرم افزار متلب

چند جمله ايها:
به صورت يك بردار سطري كه مولفه هاي آن ضرايب چند MATLAB يك چند جمله اي در
p(x)=x^3-2x+5 جمله اي به ترتيب نزولي هستند معرفي مي شود. براي مثال چند جمله اي ٥
به شكل زير معرفي مي گردد: MATLAB در
» p=[1 0 -2 5];
ريشه هاي يك چند جمله اي :
ريشه هاي يك چند جمله اي را مي توانيد به صورت زير بدست آورد:
» r=roots(p)
r =
-2.0946
1.0473 + 1.1359i
1.0473- 1.1359i
با دانستن ريشه هاي معادله مي توانيد ضرايب چند جمله اي مربوطه را محاسبه نمائيد:
» p2=poly(r)
p2 =
1.0000 0.0000 -2.0000 5.0000
محاسبه مقدار يك چند جمله اي:
به p( مقدار چند جمله اي را در هر نقطه محاسبه مي نمايد. براي مثال مقدار ( ٥ polyval تابع
طريق زير محاسبه مي گردد:
» polyval(p,5)
ans =
120
ضرب و تقسيم چند جمله ايها :
را بكار ببريد. چند deconv و conv براي ضرب و تقسيم چند جمله ايها مي توانيد توابع
را در نظر بگيريد. حاصلضرب اين دو چند جمله اي به b(x)=x-1 و a(x)=x^2+x+1 جمله ايهاي ١
طريق زير بدست مي آيد:
» a=[1 1 1]; b=[1 -1];
» c=conv(a,b)
c =
1 0 0 -1
نيز به صورت زير قابل محاسبه است: a/b و تقسيم
» [q,r]=deconv(a,b)
q =
1 2
r =
0 0 3
مشتق چند جمله اي :
محاسبه كنيد. polyder مشتق چند جمله اي را مي توانيد با بكار بردن تابع
» c=polyder(a)
c =
2 1
را مي توانيد به صورت زير بدست آوريد: (a*b) مشتق حاصلضرب دو چند جمله اي
» d=polyder(a,b)
d =
3 0 0
برابر ٢ باشد، تابع مشتق تقسيم دو چند polyder در صورتي كه تعداد آرگومانهاي خروجي تابع (a/b) جمله اي
را تعيين مي نمايد:
» [q,d]=polyder(a,b)
q =
1 -2 -2
d =
1 -2 1
برازش منحني چند جمله اي :
ضرايب بهترين چند جمله اي را پيدا مي كند كه از ميان مجموعه نقاط داده شده عبور polyfit تابع
مي نمايد. به عنوان مثال مجموعه نقاط زير را در نظر بگيريد:
» x=[1 2 3 4 5];
» y=[5.5 43.1 128 290.7 498.4];
دستور زير ضرايب بهترين چند جمله اي درجه سوم را محاسبه مي كند كه از بين نقاط فوق
مي گذرد:
» p=polyfit(x,y,3)
p =
-0.1917 31.5821 -60.3262 35.3400
حال مي توانيد براي مقايسه منحني محاسبه شده و داده هاي اوليه را در يك نمودار رسم كنيد:
» x2=1:.1:5;
» y2=polyval(p,x2);
» plot(x,y,'o',x2,y2)
 

helen.j

کاربر فعال
با سلام
کد زیر رو نوشتم ولی همه خروجی هاش صفره،نباید صفر بشه...میشه لطف کنید راعنماییم کنید؟؟
clc

clear
close all
beta1=0.1;
beta2=0.2;
alfa=10;
a=readfis('gu1');
x=normrnd(9.97,2.2,100,1);
y=normrnd(17.01,3.2,100,1);
d=evalfis([x y],a);
aer=[30,40,60];
dr1=aer(randi([1,3],1));
landa=d./100;
t=linspace(0,24);
if (landa.*d)>0,(landa.*d)<(0.8*dr1);
socinitial=(1-(landa.*d)./dr1)*100;
elseif (landa*d)>=0.8*dr1;
socinitial=0.2;
% t=linspace(0,24);
end
e=eye(100,1);
% h1=[7.8,9,11.4,13.8];
% p1=h1(randi([1,4],1,1));
% h2=[10.4,12,15.2,18.4];
% p2=h2(randi([1,4],1,1));
% h3=[15.6,18,22.8,27.6];
% p3=h3(randi([1,4],1,1));
% p=[p1 p2 p3];
h1=[7.8,9,11.4,13.8,10.4,12,15.2,18.4,15.6,18,22.8,27. 6];
p=h1(randi([1,12],1,100));
eta=0.85+(0.9-0.85)*rand(1,100);
c=p(randi(3,1,100));
c=diag(c);
ereq=(((e-socinitial))'*c)./eta;
psys=ereq./t;
pavg=ereq./24;
rt=beta1+(beta2*(alfa.^((psys-pavg)./pavg)));
% disp(ereq)
kd1=eye(1,100);
k=[-1,0,1];
kd=k(randi([1,3],1,100 ));
Prate=0.85+(0.9-0.85)*rand(1,100);
% ereq1=kd.*Prate;
% Ereq.d=sum(ereq1);
Id=zeros(1,100);
Id(kd==0)=1;
pe=Id.*Prate;
PEVt=sum(pe)
m=0;
for t=1:24
coschg=m+PEVt.*rt;
end
disp(coschg)
 

maryam72

عضو جدید
چگونه می توان در متلب برنامه ای نوشت که با داشتن مشتق یک تابع در هر نقطه مقدار تابع را در هر نقطه حساب کند؟(در واقع انتگرال)
ممنون میشم اگه راهنماییم کنید.
 

mitra*

کاربر بیش فعال
کاربر ممتاز
چگونه می توان در متلب برنامه ای نوشت که با داشتن مشتق یک تابع در هر نقطه مقدار تابع را در هر نقطه حساب کند؟(در واقع انتگرال)
ممنون میشم اگه راهنماییم کنید.

این فایل رو بخونین شاید کمکی بشه براتون.
مشاهده پیوست part4.pdf
 

scamp

عضو جدید
کسی هست که جواب بده؟؟
1 سوال برنامه نویسی توو محیط متلب دارم..
ﺳﻮال.ﺑﺪون اﺳﺘﻔﺎده از تابع max، تابعی ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ ﻧﺎم یک ﻣﺎﺗﺮﯾﺲ را ﺑﻪ ﻋﻨﻮان ﭘﺎراﻣﺘﺮ ورودی درﯾﺎﻓﺖ ﮐﻨﺪ و ﻋﻨﺼﺮ ﻣﺎﮐﺰﯾﻤﻢ و اﻧﺪﯾﺴﻬﺎیﺳﻄﺮی وﺳﺘﻮنی آنرا ﺑﺮﮔﺮداﻧﺪ.
ممنون
 

آبـی

کاربر بیش فعال
کاربر ممتاز
کسی هست که جواب بده؟؟
1 سوال برنامه نویسی توو محیط متلب دارم..
ﺳﻮال.ﺑﺪون اﺳﺘﻔﺎده از تابع max، تابعی ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ ﻧﺎم یک ﻣﺎﺗﺮﯾﺲ را ﺑﻪ ﻋﻨﻮان ﭘﺎراﻣﺘﺮ ورودی درﯾﺎﻓﺖ ﮐﻨﺪ و ﻋﻨﺼﺮ ﻣﺎﮐﺰﯾﻤﻢ و اﻧﺪﯾﺴﻬﺎیﺳﻄﺮی وﺳﺘﻮنی آنرا ﺑﺮﮔﺮداﻧﺪ.
ممنون
خیلی ساده با sort کردن می‌شه این کار رو انجام داد.
در صورتی که استفاده از این دستور هم مجاز نباشه، با شبیه‌سازی دستور sort با استفاده از حلقه for می‌شه به‌راحتی این کار رو انجام داد.
 

آبـی

کاربر بیش فعال
کاربر ممتاز
با حلقه ی for چطور میشه انجام داد؟
sort که ن..
حلقه بذارید که درایه‌های هر سطر یا ستون رو دو به دو با هم مقایسه کرده و اونا رو مرتب بکنه؛ تا زمانی که تمام درایه‌های اون سطر یا ستون مرتب شده باشن. حالا بسته به مقایسه‌تون (از کمتر به بیشتر یا بالعکس)، اولین درایه یا آخرین درایه هر سطر یا ستون، می‌شه مقدار ماکزیمم یا مینیمم اون سطر یا ستون
 

scamp

عضو جدید
مقایسه رو چطور انجام میده؟ با چه دستوری؟باید شمارنده تعریف کنم؟
 

parsazahed

عضو جدید
به نام خدا
سلام
این برنامه تو جزوه خواهرم بوده که تایپش کرده. انگار روش حل معادله مرتبه چهارم هست. اما خیلی سینتکس ارور داره
ممکنه راهنمایی کنید و بگین اشکالاتش کجاست
با تشکر
کد:
SOLUTION OF A SET OF ORDINARY DIFFERENTIAL EQUATIONS 
USING THE FOURTH ORDER ADAMS-BASHFORTH, ADAMS-MOULTON
PREDICTOR-CORRECTOR METHOD WITH AN ITERATIVE ALGORITHM.
THE INTEGRATION IS STARTED USING CLASSIC FOURTH ORDER
RUNGE-KUTTA METHOD AND THE ITERATION PROCEDURE IS THE 
THE GAUSS-SEIDEL WITH RELAXATION.

PROGRAM NAME: ABAMPC4.FOR

EXAMPLE CASE: dY/dX = -.3 Y + .1 Z + .1 U
              dZ/dX = -.2 Z + .1 U
              dU/dX = -.1 U

WITH INITIAL CONDITIONS: AT X=0, Y=3, Z=2, U=1
ANALYTICAL SOLUTION IS : Y = EXP(-.1X) + EXP(-.2X) + EXP(-.3X)
                         Z = EXP(-.1X) + EXP(-.2X)
                         U = EXP(-.1X)
REAL X(51),Y(51),Z(51),U(51),DYDX(51),DZDX(51),DUDX(51)
REAL YS(51),ZS(51),US(51),DYDXS(51),DZDXS(51),DUDXS(51)
REAL YTRUE(51),ZTRUE(51),UTRUE(51),H,K1,K2,K3,K4
REAL L1,L2,L3,L4,M1,M2,M3,M4
OPEN(10,FILE='ABAMPC4.RES',STATUS='NEW')

SET TOLERANCE FOR ITERATION PROCEDURE
AND MAXIMUM NUMBER OF ITERATIONS
TOL=0.00000001
IMAX=50

SPECIFY THE RELAXATION FACTOR

WRITE(*,7)
FORMAT(' ENTER RELAXATION FACTOR')
READ(*,8) W
FORMAT(F4.2)
WRITE(10,9) W
FORMAT(' RELAXATION FACTOR: ',F4.2)

SPECIFY THE INITIAL CONDITION AND THE STEP SIZE.

X(1)=0.0
Y(1)=3.0
Z(1)=2.0
U(1)=1.0
H=0.01

USE RK FOR THE FIRST 4 INTERVALS TO START 
THE PREDICTOR-CORRECTOR METHOD.

DO 100 J=2,5
I=J-1
XT=X(I)
YT=Y(I)
ZT=Z(I)
UT=U(I)
CALL DERIV (XT,YT,ZT,UT,F1,F2,F3)
DYDX(I) =F1
DZDX(I) =F2
DUDX(I) =F3
K1=H*F1
L1=H*F2
M1=H*F3
XT=X(I)+(H/2.)
YT=Y(I)+(K1/2.)
ZT=Z(I)+(L1/2.)
UT=U(I)+(M1/2.)
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
K2=H*F1
L2=H*F2
M2=H*F3

XT=X(I)+(H/2.)
YT=Y(I)+(K2/2.)
ZT=Z(I)+(L2/2.)
UT=U(I)+(M2/2.)
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
K3=H*F1
L3=H*F2
M3=H*F3

XT=X(I)+H
YT=Y(I)+K3
ZT=Z(I)+L3
UT=U(I)+M3
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
K4=H*F1
L4=H*F2
M4=H*F3

X(J)=X(I)+H
Y(J)=Y(I)+((1./6.)*(K1+(2.*K2)+(2.*K3)+K4))
Z(J)=Z(I)+((1./6.)*(L1+(2.*L2)+(2.*L3)+L4))
U(J)=U(I)+((1./6.)*(M1+(2.*M2)+(2.*M3)+M4))
CONTINUE

J=5
XT=X(J)
YT=Y(J)
ZT=Z(J)
UT=U(J)
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
DYDX(J) =F1
DZDX(J) =F2
DUDX(J) =F3

END OF THE STARTER SEGMENT

DO 800 N=5,50
ITER=1
N1=N-1
N2=N-2
N3=N-3
NN=N+1
X(NN)=X(N)+H

PREDICTOR

TEMP=(55.*DYDX(N))-(59.*DYDX(N1))+(37.*DYDX(N2))-(9.*DYDX(N3))
YS(NN)=Y(N)+((H/24.)*TEMP)
TEMP=(55.*DZDX(N))-(59.*DZDX(N1))+(37.*DZDX(N2))-(9.*DZDX(N3))
ZS(NN)=Z(N)+((H/24.)*TEMP)
TEMP=(55.*DUDX(N))-(59.*DUDX(N1))+(37.*DUDX(N2))-(9.*DUDX(N3))
US(NN)=U(N)+((H/24.)*TEMP)
USE GAUSS-SEIDEL ITERATION ON THE CORRECTOR
XT=X(NN)
YT=YS(NN)
ZT=ZS(NN)
UT=US(NN)
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
DYDXS(NN)=F1
TEMP=(9.*DYDXS(NN))+(19.*DYDX(N))-(5.*DYDX(N1))+DYDX(N2)
Y(NN)=Y(N)+((H/24.)*TEMP)
Y(NN)=YS(NN)+(W*(Y(NN)-YS(NN)))
YT=Y(NN)
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
DZDXS(NN)=F2
TEMP=(9.*DZDXS(NN))+(19.*DZDX(N))-(5.*DZDX(N1))+DZDX(N2)
Z(NN)=Z(N)+((H/24.)*TEMP)
Z(NN)=ZS(NN)+(W*(Z(NN)-ZS(NN)))
ZT=Z(NN)
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
DUDXS(NN)=F3
TEMP=(9.*DUDXS(NN))+(19.*DUDX(N))-(5.*DUDX(N1))+DUDX(N2)
U(NN)=U(N)+((H/24.)*TEMP)
U(NN)=US(NN)+(W*(U(NN)-US(NN)))
ITER=ITER+1

CHECK FOR CONVERGENCE

EY=((Y(NN)-YS(NN))/Y(NN))*100.
EZ=((Z(NN)-ZS(NN))/Z(NN))*100.
EU=((U(NN)-US(NN))/U(NN))*100.
IF(ITER .GT. IMAX) GOTO 500
IF(EY .GT. TOL) GOTO 600
IF(EZ .GT. TOL) GOTO 600
IF(EU .GT. TOL) GOTO 600
GOTO 700
WRITE(10,550)
FORMAT('  CONVERGENCE NOT ACHIEVED IN SPECIFIED ITERATIONS')
STOP
YS(NN)=Y(NN)
ZS(NN)=Z(NN)
US(NN)=U(NN)
GOTO 400
XT=X(NN)
YT=Y(NN)
ZT=Z(NN)
UT=U(NN)
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
DYDX(NN) =F1
DZDX(NN) =F2
DUDX(NN) =F3
CONTINUE

WRITE RESULTS

DO 900 I=1,51
YTRUE(I)=EXP(-0.1*X(I))+EXP(-0.2*X(I))+EXP(-0.3*X(I))
ZTRUE(I)=EXP(-0.1*X(I))+EXP(-0.2*X(I))
UTRUE(I)=EXP(-0.1*X(I))
WRITE(10,850) X(I),Y(I),YTRUE(I),Z(I),ZTRUE(I),U(I),UTRUE(I)
FORMAT(F4.2,'   ',2F11.6,'    ',2F11.6,'    ',2F11.6)
CONTINUE
STOP
END
SUBROUTINE DERIV(XT,YT,ZT,UT,F1,F2,F3)
F1=(-0.3*YT)+(0.1*ZT)+(0.1*UT)
F2=(-0.2*ZT)+(0.1*UT)
F3=(-0.1*UT)
RETURN
END
 

amir ghasemiyan

مدیر بازنشسته
کاربر ممتاز
به نام خدا
سلام
این برنامه تو جزوه خواهرم بوده که تایپش کرده. انگار روش حل معادله مرتبه چهارم هست. اما خیلی سینتکس ارور داره
ممکنه راهنمایی کنید و بگین اشکالاتش کجاست
با تشکر
کد:
SOLUTION OF A SET OF ORDINARY DIFFERENTIAL EQUATIONS 
USING THE FOURTH ORDER ADAMS-BASHFORTH, ADAMS-MOULTON
PREDICTOR-CORRECTOR METHOD WITH AN ITERATIVE ALGORITHM.
THE INTEGRATION IS STARTED USING CLASSIC FOURTH ORDER
RUNGE-KUTTA METHOD AND THE ITERATION PROCEDURE IS THE 
THE GAUSS-SEIDEL WITH RELAXATION.

PROGRAM NAME: ABAMPC4.FOR

EXAMPLE CASE: dY/dX = -.3 Y + .1 Z + .1 U
              dZ/dX = -.2 Z + .1 U
              dU/dX = -.1 U

WITH INITIAL CONDITIONS: AT X=0, Y=3, Z=2, U=1
ANALYTICAL SOLUTION IS : Y = EXP(-.1X) + EXP(-.2X) + EXP(-.3X)
                         Z = EXP(-.1X) + EXP(-.2X)
                         U = EXP(-.1X)
REAL X(51),Y(51),Z(51),U(51),DYDX(51),DZDX(51),DUDX(51)
REAL YS(51),ZS(51),US(51),DYDXS(51),DZDXS(51),DUDXS(51)
REAL YTRUE(51),ZTRUE(51),UTRUE(51),H,K1,K2,K3,K4
REAL L1,L2,L3,L4,M1,M2,M3,M4
OPEN(10,FILE='ABAMPC4.RES',STATUS='NEW')

SET TOLERANCE FOR ITERATION PROCEDURE
AND MAXIMUM NUMBER OF ITERATIONS
TOL=0.00000001
IMAX=50

SPECIFY THE RELAXATION FACTOR

WRITE(*,7)
FORMAT(' ENTER RELAXATION FACTOR')
READ(*,8) W
FORMAT(F4.2)
WRITE(10,9) W
FORMAT(' RELAXATION FACTOR: ',F4.2)

SPECIFY THE INITIAL CONDITION AND THE STEP SIZE.

X(1)=0.0
Y(1)=3.0
Z(1)=2.0
U(1)=1.0
H=0.01

USE RK FOR THE FIRST 4 INTERVALS TO START 
THE PREDICTOR-CORRECTOR METHOD.

DO 100 J=2,5
I=J-1
XT=X(I)
YT=Y(I)
ZT=Z(I)
UT=U(I)
CALL DERIV (XT,YT,ZT,UT,F1,F2,F3)
DYDX(I) =F1
DZDX(I) =F2
DUDX(I) =F3
K1=H*F1
L1=H*F2
M1=H*F3
XT=X(I)+(H/2.)
YT=Y(I)+(K1/2.)
ZT=Z(I)+(L1/2.)
UT=U(I)+(M1/2.)
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
K2=H*F1
L2=H*F2
M2=H*F3

XT=X(I)+(H/2.)
YT=Y(I)+(K2/2.)
ZT=Z(I)+(L2/2.)
UT=U(I)+(M2/2.)
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
K3=H*F1
L3=H*F2
M3=H*F3

XT=X(I)+H
YT=Y(I)+K3
ZT=Z(I)+L3
UT=U(I)+M3
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
K4=H*F1
L4=H*F2
M4=H*F3

X(J)=X(I)+H
Y(J)=Y(I)+((1./6.)*(K1+(2.*K2)+(2.*K3)+K4))
Z(J)=Z(I)+((1./6.)*(L1+(2.*L2)+(2.*L3)+L4))
U(J)=U(I)+((1./6.)*(M1+(2.*M2)+(2.*M3)+M4))
CONTINUE

J=5
XT=X(J)
YT=Y(J)
ZT=Z(J)
UT=U(J)
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
DYDX(J) =F1
DZDX(J) =F2
DUDX(J) =F3

END OF THE STARTER SEGMENT

DO 800 N=5,50
ITER=1
N1=N-1
N2=N-2
N3=N-3
NN=N+1
X(NN)=X(N)+H

PREDICTOR

TEMP=(55.*DYDX(N))-(59.*DYDX(N1))+(37.*DYDX(N2))-(9.*DYDX(N3))
YS(NN)=Y(N)+((H/24.)*TEMP)
TEMP=(55.*DZDX(N))-(59.*DZDX(N1))+(37.*DZDX(N2))-(9.*DZDX(N3))
ZS(NN)=Z(N)+((H/24.)*TEMP)
TEMP=(55.*DUDX(N))-(59.*DUDX(N1))+(37.*DUDX(N2))-(9.*DUDX(N3))
US(NN)=U(N)+((H/24.)*TEMP)
USE GAUSS-SEIDEL ITERATION ON THE CORRECTOR
XT=X(NN)
YT=YS(NN)
ZT=ZS(NN)
UT=US(NN)
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
DYDXS(NN)=F1
TEMP=(9.*DYDXS(NN))+(19.*DYDX(N))-(5.*DYDX(N1))+DYDX(N2)
Y(NN)=Y(N)+((H/24.)*TEMP)
Y(NN)=YS(NN)+(W*(Y(NN)-YS(NN)))
YT=Y(NN)
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
DZDXS(NN)=F2
TEMP=(9.*DZDXS(NN))+(19.*DZDX(N))-(5.*DZDX(N1))+DZDX(N2)
Z(NN)=Z(N)+((H/24.)*TEMP)
Z(NN)=ZS(NN)+(W*(Z(NN)-ZS(NN)))
ZT=Z(NN)
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
DUDXS(NN)=F3
TEMP=(9.*DUDXS(NN))+(19.*DUDX(N))-(5.*DUDX(N1))+DUDX(N2)
U(NN)=U(N)+((H/24.)*TEMP)
U(NN)=US(NN)+(W*(U(NN)-US(NN)))
ITER=ITER+1

CHECK FOR CONVERGENCE

EY=((Y(NN)-YS(NN))/Y(NN))*100.
EZ=((Z(NN)-ZS(NN))/Z(NN))*100.
EU=((U(NN)-US(NN))/U(NN))*100.
IF(ITER .GT. IMAX) GOTO 500
IF(EY .GT. TOL) GOTO 600
IF(EZ .GT. TOL) GOTO 600
IF(EU .GT. TOL) GOTO 600
GOTO 700
WRITE(10,550)
FORMAT('  CONVERGENCE NOT ACHIEVED IN SPECIFIED ITERATIONS')
STOP
YS(NN)=Y(NN)
ZS(NN)=Z(NN)
US(NN)=U(NN)
GOTO 400
XT=X(NN)
YT=Y(NN)
ZT=Z(NN)
UT=U(NN)
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
DYDX(NN) =F1
DZDX(NN) =F2
DUDX(NN) =F3
CONTINUE

WRITE RESULTS

DO 900 I=1,51
YTRUE(I)=EXP(-0.1*X(I))+EXP(-0.2*X(I))+EXP(-0.3*X(I))
ZTRUE(I)=EXP(-0.1*X(I))+EXP(-0.2*X(I))
UTRUE(I)=EXP(-0.1*X(I))
WRITE(10,850) X(I),Y(I),YTRUE(I),Z(I),ZTRUE(I),U(I),UTRUE(I)
FORMAT(F4.2,'   ',2F11.6,'    ',2F11.6,'    ',2F11.6)
CONTINUE
STOP
END
SUBROUTINE DERIV(XT,YT,ZT,UT,F1,F2,F3)
F1=(-0.3*YT)+(0.1*ZT)+(0.1*UT)
F2=(-0.2*ZT)+(0.1*UT)
F3=(-0.1*UT)
RETURN
END

سلام
دوست عزيز اين كد با زبان متلب نيست. vb هست احتمالا يا فورترن
 

parsazahed

عضو جدید
سلام
دوست عزيز اين كد با زبان متلب نيست. vb هست احتمالا يا فورترن
به نام خدا
دو باره سلام
راستش من نه تنها در برنامه نویسی با متلب مهارت ندارم، بلکه همین مسائل ریاضی که خواهرم داره هم هنوز خوب متوجه نشدم که بخوام برنامش رو بنویسم
در واقع اون می خواست با ویرایش این برنامه مسئله خودش رو بنویسه
اما انگار به زبان دیگه ای هست و کد متلب نیست.
مسئله رو من اسکن کردم
ممنون می شم اگه بتونید حلش کنید.
البته هزینه هم اگه داشت بگین
لینک تصویر: http://rouhallah.persiangig.com/IMG_0001.jpg
 

پیوست ها

  • IMG.jpg
    IMG.jpg
    26.7 کیلوبایت · بازدیدها: 0
آخرین ویرایش:

nook

عضو جدید
سلام دوستان
من یک برنامه نوشتم که طی اون به 3معادله خطی منتهی میشه. حالا مخوام این 3معادله رو که بر حسب x y z هستن با شرط x^2+y^2+z^2=1 حل کنه. اما وقتی با تابع solve مخوام حل کنه خطا میده و میگه 4معادله و 3 مجهول رو حل نمی کنم. :)
حالا باید چه کار کنم؟ لطفا راهنماییم کنید ممنون.
 

smhmeary

عضو جدید
با سلام خدمت مهندسین گرام
میخواستم تابع dice تعریف کنم که یه عدد از 1 تا 6 به من بده با این تفاوت که از تابع rand استفاده نشه ممنون میشم اگه کمکم کنین .
 

Fathy

متخصص مهندسی سازه و زلزله
به نام خدا
سلام
این برنامه تو جزوه خواهرم بوده که تایپش کرده. انگار روش حل معادله مرتبه چهارم هست. اما خیلی سینتکس ارور داره
ممکنه راهنمایی کنید و بگین اشکالاتش کجاست
با تشکر
کد:
SOLUTION OF A SET OF ORDINARY DIFFERENTIAL EQUATIONS 
USING THE FOURTH ORDER ADAMS-BASHFORTH, ADAMS-MOULTON
PREDICTOR-CORRECTOR METHOD WITH AN ITERATIVE ALGORITHM.
THE INTEGRATION IS STARTED USING CLASSIC FOURTH ORDER
RUNGE-KUTTA METHOD AND THE ITERATION PROCEDURE IS THE 
THE GAUSS-SEIDEL WITH RELAXATION.

PROGRAM NAME: ABAMPC4.FOR

EXAMPLE CASE: dY/dX = -.3 Y + .1 Z + .1 U
              dZ/dX = -.2 Z + .1 U
              dU/dX = -.1 U

WITH INITIAL CONDITIONS: AT X=0, Y=3, Z=2, U=1
ANALYTICAL SOLUTION IS : Y = EXP(-.1X) + EXP(-.2X) + EXP(-.3X)
                         Z = EXP(-.1X) + EXP(-.2X)
                         U = EXP(-.1X)
REAL X(51),Y(51),Z(51),U(51),DYDX(51),DZDX(51),DUDX(51)
REAL YS(51),ZS(51),US(51),DYDXS(51),DZDXS(51),DUDXS(51)
REAL YTRUE(51),ZTRUE(51),UTRUE(51),H,K1,K2,K3,K4
REAL L1,L2,L3,L4,M1,M2,M3,M4
OPEN(10,FILE='ABAMPC4.RES',STATUS='NEW')

SET TOLERANCE FOR ITERATION PROCEDURE
AND MAXIMUM NUMBER OF ITERATIONS
TOL=0.00000001
IMAX=50

SPECIFY THE RELAXATION FACTOR

WRITE(*,7)
FORMAT(' ENTER RELAXATION FACTOR')
READ(*,8) W
FORMAT(F4.2)
WRITE(10,9) W
FORMAT(' RELAXATION FACTOR: ',F4.2)

SPECIFY THE INITIAL CONDITION AND THE STEP SIZE.

X(1)=0.0
Y(1)=3.0
Z(1)=2.0
U(1)=1.0
H=0.01

USE RK FOR THE FIRST 4 INTERVALS TO START 
THE PREDICTOR-CORRECTOR METHOD.

DO 100 J=2,5
I=J-1
XT=X(I)
YT=Y(I)
ZT=Z(I)
UT=U(I)
CALL DERIV (XT,YT,ZT,UT,F1,F2,F3)
DYDX(I) =F1
DZDX(I) =F2
DUDX(I) =F3
K1=H*F1
L1=H*F2
M1=H*F3
XT=X(I)+(H/2.)
YT=Y(I)+(K1/2.)
ZT=Z(I)+(L1/2.)
UT=U(I)+(M1/2.)
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
K2=H*F1
L2=H*F2
M2=H*F3

XT=X(I)+(H/2.)
YT=Y(I)+(K2/2.)
ZT=Z(I)+(L2/2.)
UT=U(I)+(M2/2.)
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
K3=H*F1
L3=H*F2
M3=H*F3

XT=X(I)+H
YT=Y(I)+K3
ZT=Z(I)+L3
UT=U(I)+M3
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
K4=H*F1
L4=H*F2
M4=H*F3

X(J)=X(I)+H
Y(J)=Y(I)+((1./6.)*(K1+(2.*K2)+(2.*K3)+K4))
Z(J)=Z(I)+((1./6.)*(L1+(2.*L2)+(2.*L3)+L4))
U(J)=U(I)+((1./6.)*(M1+(2.*M2)+(2.*M3)+M4))
CONTINUE

J=5
XT=X(J)
YT=Y(J)
ZT=Z(J)
UT=U(J)
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
DYDX(J) =F1
DZDX(J) =F2
DUDX(J) =F3

END OF THE STARTER SEGMENT

DO 800 N=5,50
ITER=1
N1=N-1
N2=N-2
N3=N-3
NN=N+1
X(NN)=X(N)+H

PREDICTOR

TEMP=(55.*DYDX(N))-(59.*DYDX(N1))+(37.*DYDX(N2))-(9.*DYDX(N3))
YS(NN)=Y(N)+((H/24.)*TEMP)
TEMP=(55.*DZDX(N))-(59.*DZDX(N1))+(37.*DZDX(N2))-(9.*DZDX(N3))
ZS(NN)=Z(N)+((H/24.)*TEMP)
TEMP=(55.*DUDX(N))-(59.*DUDX(N1))+(37.*DUDX(N2))-(9.*DUDX(N3))
US(NN)=U(N)+((H/24.)*TEMP)
USE GAUSS-SEIDEL ITERATION ON THE CORRECTOR
XT=X(NN)
YT=YS(NN)
ZT=ZS(NN)
UT=US(NN)
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
DYDXS(NN)=F1
TEMP=(9.*DYDXS(NN))+(19.*DYDX(N))-(5.*DYDX(N1))+DYDX(N2)
Y(NN)=Y(N)+((H/24.)*TEMP)
Y(NN)=YS(NN)+(W*(Y(NN)-YS(NN)))
YT=Y(NN)
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
DZDXS(NN)=F2
TEMP=(9.*DZDXS(NN))+(19.*DZDX(N))-(5.*DZDX(N1))+DZDX(N2)
Z(NN)=Z(N)+((H/24.)*TEMP)
Z(NN)=ZS(NN)+(W*(Z(NN)-ZS(NN)))
ZT=Z(NN)
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
DUDXS(NN)=F3
TEMP=(9.*DUDXS(NN))+(19.*DUDX(N))-(5.*DUDX(N1))+DUDX(N2)
U(NN)=U(N)+((H/24.)*TEMP)
U(NN)=US(NN)+(W*(U(NN)-US(NN)))
ITER=ITER+1

CHECK FOR CONVERGENCE

EY=((Y(NN)-YS(NN))/Y(NN))*100.
EZ=((Z(NN)-ZS(NN))/Z(NN))*100.
EU=((U(NN)-US(NN))/U(NN))*100.
IF(ITER .GT. IMAX) GOTO 500
IF(EY .GT. TOL) GOTO 600
IF(EZ .GT. TOL) GOTO 600
IF(EU .GT. TOL) GOTO 600
GOTO 700
WRITE(10,550)
FORMAT('  CONVERGENCE NOT ACHIEVED IN SPECIFIED ITERATIONS')
STOP
YS(NN)=Y(NN)
ZS(NN)=Z(NN)
US(NN)=U(NN)
GOTO 400
XT=X(NN)
YT=Y(NN)
ZT=Z(NN)
UT=U(NN)
CALL DERIV(XT,YT,ZT,UT,F1,F2,F3)
DYDX(NN) =F1
DZDX(NN) =F2
DUDX(NN) =F3
CONTINUE

WRITE RESULTS

DO 900 I=1,51
YTRUE(I)=EXP(-0.1*X(I))+EXP(-0.2*X(I))+EXP(-0.3*X(I))
ZTRUE(I)=EXP(-0.1*X(I))+EXP(-0.2*X(I))
UTRUE(I)=EXP(-0.1*X(I))
WRITE(10,850) X(I),Y(I),YTRUE(I),Z(I),ZTRUE(I),U(I),UTRUE(I)
FORMAT(F4.2,'   ',2F11.6,'    ',2F11.6,'    ',2F11.6)
CONTINUE
STOP
END
SUBROUTINE DERIV(XT,YT,ZT,UT,F1,F2,F3)
F1=(-0.3*YT)+(0.1*ZT)+(0.1*UT)
F2=(-0.2*ZT)+(0.1*UT)
F3=(-0.1*UT)
RETURN
END

سلام

کد برنامه شما با فرترن هستش نه متلب.
ظاهر برنامه که خطای خاصی نداره به جز اینکه خطوطی که توضیح هستند (مثل 6 خط اول) باید ابتدای خطشون یه C گذاشته شه.
 

Fathy

متخصص مهندسی سازه و زلزله
سلام دوستان
من یک برنامه نوشتم که طی اون به 3معادله خطی منتهی میشه. حالا مخوام این 3معادله رو که بر حسب x y z هستن با شرط x^2+y^2+z^2=1 حل کنه. اما وقتی با تابع solve مخوام حل کنه خطا میده و میگه 4معادله و 3 مجهول رو حل نمی کنم. :)
حالا باید چه کار کنم؟ لطفا راهنماییم کنید ممنون.
سلام
اگه سه معادله خطی شما مستقل باشند در این صورت این سه معادله فقط یک جواب خواهد داشت و اون شرط شما هیچ تاثیری در پاسخ نخواهد داشت. اگه معادلات شما مستقل نیستند باید دید چندتاشون وابسته هستند.
 

سی و سه پل

عضو جدید
سلام دوستان. یکسری داده دارم (23 تا پاسخ) میخوام که با استفاده از متلب روی آنها ANOVA بزنم. این پاسخ ها نتیجه یکسری آزمایش برای بررسی اثر سه تا فاکتور می باشد. درواقع سه تا فاکتور دارم که هرکدام 5 سطح داره. میخوام که ANOVA برام اثرات فاکتور های اصلی، برهمکنش های آنها و اثرات درجه 2 آنها را بررسی کنه. کسی میتونه بهم راهنمایی کنه چطوری با استفاده از متلب اینکارو انجام بدم؟ ممنون میشم
 

علی لیلا

عضو جدید
سلام/....من یه مشکل خیلی بزرگ دارم
یه برنامه متلب دارم که صورت اسمیت مک میلان ماتریس رو از متلب استخراج می کنه...
برنامه برای ماتریس های با اعداد بزرگ جواب نمیده... نمیدونم ایرادش چیه..فقظ میدونم به همه ماتریس ها جواب نمیده
چه کنم.؟؟؟؟ سه روزه درگیرم باهاش ..لطفا کمکم کنید.:cry:
 

hamzadebaroon

عضو جدید
سلام
من یه فایل اکسل دارم
میخوام در متلب ایمپورت کنم
در نرم افزار متلب file/open رو می زنم
بعد اون فایل اکسل رو انتخاب می کنم
ایمپورت میشه اما فایل اکسل داخل نرم افزار متلب بد نشون داده میشه
عدد ها رو نشون میده اما حروف رو نه
مشکل از کجاست
چکارش باید بکنم
کسی می دونه؟؟؟
 

amir ghasemiyan

مدیر بازنشسته
کاربر ممتاز
سلام
من یه فایل اکسل دارم
میخوام در متلب ایمپورت کنم
در نرم افزار متلب file/open رو می زنم
بعد اون فایل اکسل رو انتخاب می کنم
ایمپورت میشه اما فایل اکسل داخل نرم افزار متلب بد نشون داده میشه
عدد ها رو نشون میده اما حروف رو نه
مشکل از کجاست
چکارش باید بکنم
کسی می دونه؟؟؟

سلام
بهتره از دستور xlsread استفاده كنيد
 

reza2495

عضو جدید
سلام. بچه ها کسی میدونه یه دستگاه معادلات دیفرانسیل را چطوره میشه تو متلب با 0de45 حل کرد؟ من میتونم دستگاها باز کنم و معادلات حالت را یکی یکی در بیارم و کدشو بنویسم . اما میخوام ماتریسی حلش کنم. مثلا یه سیستم جرم و فنر ساده : Mx''+kx=0 ک ماتریس های جرم و سختی 2تا ماتریس 3*3 و معلوم هستند.
ممنونم میشم اگه کسی میدونه راهنماییم کنه
 

wolf.man

عضو جدید
سلام.در متلب میشه

(cosd^2(a رو به صورت
(power(cosd(a),2 نشان داد. اگه اشتباه لطفا راهنمایی کنید
 

eeiranmatlab

عضو جدید
سلام
شما می تونید در متلب 2014 به بالا از منو گزینه import data را انتخاب کنید و داده هاتون را وارد کنید
البته ممکن است برخی از داده های شما نا مشخص missing value باشند که در این پنجره می تونید آنها را درست کنید
 
آخرین ویرایش:

eeiranmatlab

عضو جدید
برای نوشتن توان توان از پرانتر استفاده کنید تا به این مشکلها بر نخورید.
 

Similar threads

بالا