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...