當前位置:首頁 » 編程軟體 » matlab編程方程

matlab編程方程

發布時間: 2022-04-11 00:48:27

A. 用MATLAB進行函數方程組編程

x=fsolve(@fun,x0)求解fun(x)=0的解,x0是初值,fun是函數,x就是解
因為fsolve使用迭代法求解方程的,所以總要有個迭代的初值吧,這個初值就是你給的x0。
比如解方程組
x(1).^2+x(2).^2=1
x(1)=2*x(2)
可以寫成
x=fsolve(f,[1 1])
這里[1 1]就是初值,其實初值一般情況下可以隨便給的初值不同,結果不一定相同。 網路一下,你就知道。

B. 用matlab編程求解方程組

用matlab求解帶求和問題的方程組的求解思路:考慮到問題是離散型的,可以由已知的T值,利用for循環語句求和,再用fsolve()或lsqnonlin()求解其r和s的數值解。

題主的自定義函數myfun(x)的內容。其中T值是為了解題而定的。

C. matlab編寫方程

先求Ct-t的關系

y=dsolve('Dy-k*(24.8-y)^2=0')

y=

124/5

124/5-1/(25*(C1+(k*t)/25))

再用matlab擬合參數k和C1

t=[0,1,6,12,18,24,30,36,42,48,54,60,72]';

Ct=[24.823.8666723.2733321.6733318.4866716.2066713.93333...

7.706675.986674.406671.593330.666670]';

ft_=fittype('124/5-1/(25*(C1+(k*t)/25))',...

'dependent',{'Ct'},'independent',{'t'},...

'coefficients',{'k','C1'});

st=[-0.0010.4]

[curve,goodness]=fit(t,Ct,ft_,'Startpoint',st)

figure,plot(t,Ct,'*'),holdon,

plot(curve,'predobs',0.99);

st=

-0.00100.4000

curve=

Generalmodel:

curve(t)=124/5-1/(25*(C1+(k*t)/25))

Coefficients(with95%confidencebounds):

k=-0.001356(-0.002203,-0.0005092)

C1=0.005256(0.003034,0.007479)

goodness=

sse:348.0195

rsquare:0.6773

dfe:11

adjrsquare:0.6480

rmse:5.6248

D. matlab中如何對方程進行編程求解啊

disp('方程形式:a*x^2+b*x+c=0'); a=input('a='); b=input('b='); c=input('c='); p=[abc]; ans=roots(p) 哥們Mablab輸出結元二次方程根

E. 求MATLAB解方程編程

思路:對等式兩邊求導,變成
二階微分方程
,然後求解。
clc;clear
v=dsolve('D2v=25/8*v')
%v(0)=0
f1=subs(v,'t',0)-0;
f2=subs(v,'t','t0')-80;
[C1,C2]=solve(f1,f2,'C1,C2');
v=subs(v)
f3=int(v,0,'t0')-8;
t0=solve(f3)
t0=eval(t0)
%驗算v(t0)=80
vt0=subs(v,'t',t0);
test_vt0=vpa(subs(vt0))
結果:
v
=
C1*exp(5/4*2^(1/2)*t)+C2*exp(-5/4*2^(1/2)*t)
v
=
80/(exp(5/4*2^(1/2)*t0)-exp(-5/4*2^(1/2)*t0))*exp(5/4*2^(1/2)*t)-80/(exp(5/4*2^(1/2)*t0)-exp(-5/4*2^(1/2)*t0))*exp(-5/4*2^(1/2)*t)
t0
=
2/5*log(8/31*2^(1/2)+33/31)*2^(1/2)
t0
=
0.2021
test_vt0
=
80.

F. 使用matlab編程求解方程

如何使用matlab編程求出圖中方程的解,對於圖中的方程用solve()和vpasolve()函數求解,並不能讓我們得到所有的解。那如何去得到呢?

首先,我們試著用繪制函數(ezplot,plot),繪出其圖形,此時我們可以看到,該方程有兩個解,即x在0和1.5的附近有解。

然後,用vpasolve函數一個一個地去求。

實現代碼:

syms x

ezplot(sin(x)-x^2/2,[-5,5]) %繪圖

grid on %打網格線

x1 = vpasolve(sin(x)-x^2/2 == 0, x , 0) %求x在0附近的解

x2 = vpasolve(sin(x)-x^2/2 == 0, x , 1.5) %求x在1.5附近的解

執行結果如圖所示。

G. 怎樣用Matlab編寫方程組程序。。。

拉格朗日function y=lagrange(x0,y0,x)n=length(x0);m=length(x);for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); end end s=p*y0(k)+s; end y(i)=s;end SOR迭代法的Matlab程序 function [x]=SOR_iterative(A,b)% 用SOR迭代求解線性方程組,矩陣A是方陣 x0=zeros(1,length(b)); % 賦初值 tol=10^(-2); % 給定誤差界 N=1000; % 給定最大迭代次數 [n,n]=size(A); % 確定矩陣A的階 w=1; % 給定鬆弛因子 k=1; % 迭代過程 while k<=N x(1)=(b(1)-A(1,2:n)*x0(2:n)')/A(1,1); for i=2:n x(i)=(1-w)*x0(i)+w*(b(i)-A(i,1:i-1)*x(1:i-1)'-A(i,i+1:n)*x0(i+1:n)')/A(i,i); end if max(abs(x-x0))<=tol fid = fopen('SOR_iter_result.txt', 'wt'); fprintf(fid,'\n********用SOR迭代求解線性方程組的輸出結果********\n\n'); fprintf(fid,'迭代次數: %d次\n\n',k); fprintf(fid,'x的值\n\n'); fprintf(fid, '%12.8f \n', x); break; end k=k+1; x0=x; end if k==N+1 fid = fopen('SOR_iter_result.txt', 'wt'); fprintf(fid,'\n********用SOR迭代求解線性方程組的輸出結果********\n\n'); fprintf(fid,'迭代次數: %d次\n\n',k); fprintf(fid,'超過最大迭代次數,求解失敗!'); fclose(fid); end Matlab中龍格-庫塔(Runge-Kutta)方法原理及實現龍格-庫塔(Runge-Kutta)方法是一種在工程上應用廣泛的高精度單步演算法。由於此演算法精度高,採取措施對誤差進行抑制,所以其實現原理也較復雜。該演算法是構建在數學支持的基礎之上的。龍格庫塔方法的理論基礎來源於泰勒公式和使用斜率近似表達微分,它在積分區間多預計算出幾個點的斜率,然後進行加權平均,用做下一點的依據,從而構造出了精度更高的數值積分計算方法。如果預先求兩個點的斜率就是二階龍格庫塔法,如果預先取四個點就是四階龍格庫塔法。一階常微分方程可以寫作:y'=f(x,y),使用差分概念。(Yn+1-Yn)/h= f(Xn,Yn)推出(近似等於,極限為Yn')Yn+1=Yn+h*f(Xn,Yn)另外根據微分中值定理,存在0<t<1,使得Yn+1=Yn+h*f(Xn+th,Y(Xn+th))這里K=f(Xn+th,Y(Xn+th))稱為平均斜率,龍格庫塔方法就是求得K的一種演算法。利用這樣的原理,經過復雜的數學推導(過於繁瑣省略),可以得出截斷誤差為O(h^5)的四階龍格庫塔公式:K1=f(Xn,Yn);K2=f(Xn+h/2,Yn+(h/2)*K1);K3=f(Xn+h/2,Yn+(h/2)*K2);K4=f(Xn+h,Yn+h*K3);Yn+1=Yn+h*(K1+2K2+2K3+K4)*(

H. 這個方程應該怎樣在MATLAB中編程,並輸出自變數的值

題主給出的方程實際上是一個最優化極值問題,極值問題可以用fmincon()函數或ga()函數等去求解。

如用fmincon()函數求解,可以按下列方法來解決:

1、自定義目標函數,其內容

y=9*x1+14*x2+202*x3+8*x4+6*x5+3*x6+354*x7;

2、自定義約束條件函數,其內容

c(1)=x6-x3;

c(2)=x6-x7;

ceq = x1+x2+x3+x4+x5+x6+x7-1;

3、確定x1、x2、x3、x4、x5、x6、x7 的上下限,即

lb=[0,0,0,0,0,0,0];

ub=[1,1,1,1,1,1,1];

4、使用fmincon()函數,得到x1、x2、x3、x4、x5、x6、x7 的值以及其極值(該問題為最小值等於6)

5、驗證約束條件是否成立。即

disp('驗證:x3>x6')

。。。

disp('驗證:x7>x6')

。。。

disp('驗證:A=x1+x2+x3+x4+x5+x6+x7=1')

。。。

6、編程後執行,得到如下值。

I. 用maltab解方程

關於MALTAB解方程的詳細解答方法,具體的操作如下:

用matlab解方程組的問題,其實在matlab中解方程組還是很方便的,例如,對於代數方程組Ax=b(A為系數矩陣,非奇異)的求解,MATLAB中有兩種方法:

(1)x=inv(A)*b — 採用求逆運算解方程組;

(2)x=A\B — 採用左除運算解方程組

PS:使用左除的運算效率要比求逆矩陣的效率高很多~

2、變參數非線性方程組的求解

對於求解非線性方程組一般用fsolve命令就可以了,但是對於方程組中某一系數是變化的

3、非線性方程數值求解

matlab里solve如何使用,是否有別的函數可以代替它.

在matlab裡面solve命令主要是用來求解代數方程(即多項式)的解,但是也不是說其它方程一個也不能解,不過求解非代數方程的能力相當有限,通常只能給出很特殊的實數解。(該問題給出的方程就是典型的超越方程,非代數方程)

從計算機的編程實現角度講,如今的任何演算法都無法准確的給出任意非代數方程的所有解,但是我們有很多成熟的演算法來實現求解在某點附近的解。

matlab也不例外,它也只能給出任意非代數方程在某點附近的解,函數有兩個:fzero和fsolve,具體用法請用help或doc命令查詢吧。

如果還是不行,你還可以將問題轉化為非線性最優化問題,求解非線性最優化問題的最優解,可以用的命令有:fminbnd, fminsearch, fmincon等等。

*非線性方程數值求解

*單變數非線性方程求解

在MATLAB中提供了一個fzero函數,可以用來求單變數非線性方程的根。該函數的調用格式為:

z=fzero('fname',x0,tol,trace)

其中fname是待求根的函數文件名,x0為搜索的起點。一個函數可能有多個根,但fzero函數只給出離x0最近的那個根。

tol控制結果的相對精度,預設時取tol=eps,trace�指定迭代信息是否在運算中顯示,為1時顯示,為0時不顯示,預設時取trace=0。

J. matlab編程求解方程組

如何求解多組二元一次方程組呢?題主的想法是對的,是要用循環來求解,其求解過程:

1、首先將t,h數據賦值給t1,h1,即

t1=tan(t);

h1=h.^2;

2、使用for循環語句,求解t(i),h(i)對應的a,b值,即

for i=1:6

i

t=t1(i);h=h1(i);

syms a b

eqn1 = a > 0;

eqn2 = b/a==t;

eqn3 = a^2+b^2==h;

eqns = [eqn1 eqn2 eqn3];

S = solve(eqns,[a b]);

a=vpa(S.a)

b=vpa(S.b)

end

3、運行上述代碼,可以得到如下結果。

熱點內容
演算法筆談 發布:2024-04-26 15:14:34 瀏覽:283
技算計編程 發布:2024-04-26 14:43:42 瀏覽:140
開普票密碼區和備注是什麼意思 發布:2024-04-26 14:43:31 瀏覽:852
吃雞安卓和蘋果如何加好友 發布:2024-04-26 14:39:10 瀏覽:836
centos編譯命令 發布:2024-04-26 14:18:04 瀏覽:654
網路編程畢設 發布:2024-04-26 14:13:10 瀏覽:208
秦九韶演算法教案 發布:2024-04-26 13:30:22 瀏覽:412
解壓到當前文件夾右鍵 發布:2024-04-26 03:57:08 瀏覽:979
html5android教程視頻下載 發布:2024-04-26 03:09:59 瀏覽:867
伺服器的描述是什麼 發布:2024-04-26 03:08:32 瀏覽:394