My plot wont show up in the plot window.

1 回表示 (過去 30 日間)
Sean Poitou
Sean Poitou 2015 年 11 月 7 日
コメント済み: Walter Roberson 2015 年 11 月 8 日
First off I left out some of the code because I want to focus on only Newtons method part of this. With inputs 1,2,0.75,0.001,30 I get the right values out but when the plot window comes out it doesn't show anything. I've tried setting up a zeroes array but the values wont go into the array. Any tips on how to fix this?
function [ ] = Project1(nFunction, nMethod, x0, epsilon, nStop)
f1 = @(x) x.^3-3*x.^2+3*x-1;
df1 = @(x) 3*x.^2-6*x+3;
f2 = @(x) tan( x );
df2 = @(x) sec( x ).^2;
f3 = @(x) x+cos(x) .* exp(-50*x.^2);
df3 = @(x) 1-exp(-50*x.^2).*(100*x*cos(x)+sin(x));
n=0;
if ( nFunction == 1 )
f=f1;
xs=1;
elseif ( nFunction == 2 )
f=f2;
xs=pi;
else
f=f3;
xs=-0.1832913;
end;
if ( nMethod == 1 )
bisection( f );
elseif ( nMethod == 2 )
if ( nFunction == 1 )
df=df1;
elseif ( nFunction == 2 )
df=df2;
else
df=df3;
end
newton( f,df );
else
secant( f );
end
function [] = newton( f ,df )
while(abs(xs-x0)> epsilon && n <= nStop);
n=n+1;
x = x0-f(x0)/df(x0);
x0=x;
disp( sprintf( 'Approximate using Newtons = %e', x ));
disp( sprintf( 'Error = %e', xs-x0 ));
semilogy( n, f(x), 'b-');
end
end
end

採用された回答

Walter Roberson
Walter Roberson 2015 年 11 月 7 日
Add
hold on
after the semilogy() call
  2 件のコメント
Sean Poitou
Sean Poitou 2015 年 11 月 7 日
It changed the axis numbers to something that looks more reasonable but still no line. :\
Walter Roberson
Walter Roberson 2015 年 11 月 8 日
Of you want a line you need to plot more than one point at a time. Matlab does not join points in different plotting calls. Make a vector of results and plot the vector

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeAnnotations についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by