matlab高手請教,matlab高手請教

時間 2022-06-24 12:05:01

1樓:匿名使用者

1、2問題覺得你可能沒有問好。已經n個點的座標。你想要曲線方程,至少得說明一下曲線方程的形式如何

3問:x=[20,18,16,14,12,10,8,6,4,2,0,-2,-4,-6,-8,-10,-12,-14,-16,-18,-20];

y=[-0.98106,-0.88756,-0.

79372,-0.68870,-0.60286,-0.

50582,-0.40675,-0.30274,-0.

20746,-0.1072,-0.0034,0.

10462,0.1979,0.3017,0.

40362,0.50412,0.60321,0.

70614,0.80749,0.91196,1.

0157];

a=[x;ones(size(x))]';

c=a\y';

a=c(2);

k=c(1);

yy=a+k*x;

plot(x,y,'r*',x,yy)

k為斜率,上述做的圖,紅點為你的資料點,線為擬合的直線。

1問:p=polyfit(x,y,4);

y1=polyval(p,x);

vpa(poly2sym(p),10)

plot(x,y,'r*',x,y1)

2問:pp=polyfit(y,x,4);

x1=polyval(pp,y);

subs(vpa(poly2sym(pp),10),'x','y')

plot(x,y,'r*',x1,y)

3.那個是擬合的結果。不信的話,你把裡面的一個y改成相差很大試一下。

你的資料實際上應當就是直線。

在1.2問的前面要加上。

x=[20,18,16,14,12,10,8,6,4,2,0,-2,-4,-6,-8,-10,-12,-14,-16,-18,-20];

y=[-0.98106,-0.88756,-0.

79372,-0.68870,-0.60286,-0.

50582,-0.40675,-0.30274,-0.

20746,-0.1072,-0.0034,0.

10462,0.1979,0.3017,0.

40362,0.50412,0.60321,0.

70614,0.80749,0.91196,1.

0157];

然後再執行上述給定的語句。

我記得matlab好像不能裝在中文目錄下面。

您可以試一下:

x=0:0.02:pi;

plot(x,sin(x))

如果連這個都不行的話,應當是您的matlab安裝有點問題

另外,站長團上有產品**,便宜***

2樓:

兩個方法,1.可以把第一行function step=simpmethed(c,a,n)刪掉,然後加上以下語句

c=[3,0,0,0,0];

n=[3,4,5,6];

a=[ 1,2,2,3,4,4,5;1,0,0,0,0,1,3;3,5,4,4,6,5,6;9,6,5,4,3,5,5];

2.在其他函式中呼叫這個函式:

c=[3,0,0,0,0];

n=[3,4,5,6];

a=[ 1,2,2,3,4,4,5;1,0,0,0,0,1,3;3,5,4,4,6,5,6;9,6,5,4,3,5,5];

step=simpmethed(c,a,n);

請教matlab高手!

3樓:匿名使用者

你好,這個程式要能夠執行,首先要解決以下幾個問題:

第一,你的第二個程式,定義目標函式中有一個錯誤:function f=jsqyh_f(x); 應改為:

function f=rzjyh_f(x);

第二,以上一大段,應該分別儲存為3個m檔案

一個是主程式:(隨意命名)

%人字架體積優化設計

%1----主程式

%人字架優化呼叫目標函式檔案與非線性約束檔案

%設計變數的初始值

x0=[100;800];

%設計變數的下界與上界

lb=[20;200];

ub=[140;1200];

%線性不等式約束(g3、g4、g5、g6)中設計變數的係數矩陣

a=zeros(4,2);

a(1,1)=-1;a(2,1)=1;

a(3,2)=-1;a(4,2)=1;

%線性不等式約束中常數項列陣

b=[-20;140;-200;1200];

%呼叫多維約束優化函式

%等式約束引數aeq,beq定義為空矩陣符號「」

[x,fn]=fmincon(@jsqyh_f,x0,a,b,,,lb,ub,@rzjyh_g);

disp ' **********人字架體積優化設計最優解*********'

fprintf(1 , ' 鋼管平均直徑 d=%3.4fmm\n',x(1))

fprintf(1 , ' 人字架高度 h=%3.4fmm\n',x(2))

fprintf(1 , ' 人字架體積 v=%3.4fmm^3\n',fn)

%呼叫多維約束優化非線性約束函式(jsqyh_g)計算最優點x*的效能約束函式值

g=rzjyh_g(x);

disp ' *****==== 最優點的效能約束函式值*****===='

fprintf(1, ' 人字架鋼管壓縮強度 g1=%3.4f\n',g(1))

fprintf(1, ' 人字架鋼管穩定性 g2=%3.4f\n',g(2))

第二個程式:檔名:rzjyh_f.m

%2----目標函式(rzjyh_f)

function f=rzjyh_f(x);

%人字架跨距b;鋼管厚度t;

b=1520;t=2.5;

f=2*pi*x(1)*t*sqrt((b/2)^2+x(2)^2);

第三個程式:檔名:rzjyh_g.m

%3----非線性不等式約束函式(rzjyh_g)

function [g,ceq]=rzjyh_g(x);

% 人字架跨距b;鋼管厚度t;載荷p;彈性模量e;許用壓應力cy;

b=1520;t=2.5;p=294300;e=2.119e5;cy=690;

%鋼管壓縮強度條件

q=0.5*p*sqrt((b/2)^2+x(2)^2)/x(2); %鋼管軸向壓力

sgm=q/(pi*t*x(1)); %鋼管壓應力

g(1)=sgm-cy;

%鋼管穩定性條件

cc=0.125*pi^2*e*(x(1)^2+t^2)/((b/2)^2+x(2)^2); %穩定臨界應力

g(2)=sgm-cc;

ceq=;

把以上三個程式放在一個資料夾中,然後執行主檔案即可執行。

matlab問題,高手請教!!

4樓:匿名使用者

1.心形線是圓的外擺線的一種,它是這樣形成的:一個動圓沿一個定圓的圓周外部無滑動的滾動(兩個圓的半徑相等),動圓的圓周上的一固定點運動的軌跡就是心形線。程式如下:

function [xcar,ycar]=drawcardioid(varargin)

% a demonstration to show the form of the cardioid

error(nargchk(0,3,nargin));

nin = nargin;

if nin==0

cx1=0; cy1=0; % the coordinate of the center point.

r=1; % the radius of the circle.

elseif nin==1

cx1=0; cy1=0;

r=varargin;

elseif nin==2

cx1=0;

cy1= vararin;

r = varargin;

else

cx1=vararin;

cy1=vararin;

r=vararin;

endif nargout==0

flag=1;

else

flag=0;

endtheta = linspace(0,2*pi,120);

x0 = r*cos(theta);

y0 = r*sin(theta);

x1 = x0+cx1;

y1 = y0+cy1;

cx2 = 2*x0+cx1;

cy2 = 2*y0+cy1;

x3=x0.*cos(theta)-y0.*sin(theta);

y3=x0.*sin(theta)+y0.*cos(theta);

for k=1:120

x2(k,:) = cx2(k)+x0;

y2(k,:) = cy2(k)+y0;

xx(k)=cx2(k)+x3(k);

yy(k)=cy2(k)+y3(k);

endxcar = xx;

ycar = yy;

if flag

plot(x1,y1);

axis([cx1-3.2*r cx1+3.2*r cy1-3.2*r cy1+3.2*r]);

axis manual;

hold on

daspect([1 1 1]);

set(gcf,'doublebuffer','on');

for k = 1:120

plot(x2(k,:),y2(k,:),'g',xx(k),yy(k),'r*');

pause(0.05);

%plot(x2,y2,'color','w');

endend2.求a的平方根:

function y=sq(a)

ep=1.0e-5;

x1=1;

x2=(x1+a/x1)/2;

while(abs(x1-x2)>ep)

x1=x2;

x2=(x1+a/x1)/2;

endy=x2;

3.多種方法迭代:該方程有一實根:-0.7684531615

方法一:

function y=st1()

ep=1.0e-5;

x1=-2;

x2=(-x1^5+2*x1-1)/(5*x1^2);

while(abs(x1-x2)>ep)

x1=x2;

x2=(-x1^5+2*x1-1)/(5*x1^2);

endy=x2;

該方法發散

方法二:

function y=st2()

ep=1.0e-5;

x1=-2;

x2=(-5*x1^3+2*x1-1)/x1^4;

while(abs(x1-x2)>ep)

x1=x2;

x2=(-5*x1^3+2*x1-1)/x1^4;

endy=x2;

該方法不穩定。

方法三:

function y=sq()

ep=1.0e-5;

x1=-1;

tim=-x1^5+2*x1-1;

x2=sign(tim/5)*(abs(tim/5))^(1/3);

while(abs(x1-x2)>ep)

x1=x2;

tim=-x1^5+2*x1-1;

x2=sign(tim/5)*(abs(tim/5))^(1/3);

endy=x2;

該演算法穩定收斂。

由於時間有限,最後一題留給你自己做吧。

另外,團idc網上有許多產品**,便宜有口碑

請教matlab程式設計高手如何用matlab自定義函式擬合

實現 clc,clear all,close alla1 a2 b1 b2 d s 需要已知 lambda 資料t 資料 n a1.lambda.2 a2 alpha 10 b1.lambda.2 b2 a 16 n 2 s b n l 3 n s 2 c 2 n 2 l n 2 s 2 d n l...

matlab求斜率等請高手幫忙,matlab求斜率等請高手幫忙。。。。。。。。。。

有三種方案 1 手動求出導函式 dy 3 1.608 x 2 2 14.12 x 42.38 然後下面都很簡單了。2.數值方法求導數,即在目標點附近對函式做取樣,用差分近似積分3.先用符號計算得到導函式,然後同1 另外,m的值已知嗎?如果不知道,這個題還不如手算,用matlab做符號計算太彆扭了。 ...

matlab中fzero怎麼用,matlab簡單問題 關於fzero

愚人談娛樂 f1 x cos x x x0 0.55 x1 fzero f1,x0 使用fzero函式必須先定義好函式 南取名字 格式是 z fzero f,x 意義,在f這個方程中找x附近的零點賦值到z需要對f設個方程eg f a a 2 1x 5在f方程以x 5附近找零點 三翼熾天使 x fze...